diff --git a/res/values/slim_strings.xml b/res/values/slim_strings.xml index 767a9e8d30b..4dc431d85ec 100644 --- a/res/values/slim_strings.xml +++ b/res/values/slim_strings.xml @@ -882,4 +882,8 @@ two in order to insert additional control points. \'Remove\' deletes the selecte Device hostname + + Chamber of secrets + The chamber of secrets has opened + diff --git a/res/xml/development_prefs.xml b/res/xml/development_prefs.xml index eebd650a6d5..72fe9b6665e 100644 --- a/res/xml/development_prefs.xml +++ b/res/xml/development_prefs.xml @@ -288,4 +288,13 @@ + + + + + diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java index e53f129af93..887faebe081 100644 --- a/src/com/android/settings/DevelopmentSettings.java +++ b/src/com/android/settings/DevelopmentSettings.java @@ -64,6 +64,7 @@ import android.widget.CompoundButton; import android.widget.Switch; import android.widget.TextView; +import android.widget.Toast; import dalvik.system.VMRuntime; @@ -150,6 +151,10 @@ public class DevelopmentSettings extends RestrictedSettingsFragment private static final String TERMINAL_APP_PACKAGE = "com.android.terminal"; + private static final String KEY_CHAMBER_OF_SECRETS = "chamber_of_secrets"; + private static final String KEY_CHAMBER_OF_UNLOCKED_SECRETS = + "chamber_of_unlocked_secrets"; + private static final int RESULT_DEBUG_APP = 1000; private IWindowManager mWindowManager; @@ -207,6 +212,9 @@ public class DevelopmentSettings extends RestrictedSettingsFragment private CheckBoxPreference mShowAllANRs; + private Preference mChamber; + private CheckBoxPreference mChamberUnlocked; + private final ArrayList mAllPrefs = new ArrayList(); private final ArrayList mResetCbPrefs = new ArrayList(); @@ -337,6 +345,22 @@ public void onCreate(Bundle icicle) { mAllPrefs.add(mRootAccess); } + mChamber = (Preference) findPreference(KEY_CHAMBER_OF_SECRETS); + mAllPrefs.add(mChamber); + mChamberUnlocked = + findAndInitCheckboxPref(KEY_CHAMBER_OF_UNLOCKED_SECRETS); + mChamberUnlocked.setOnPreferenceChangeListener(this); + + boolean chamberOpened = Settings.Secure.getInt( + getActivity().getContentResolver(), + Settings.Secure.CHAMBER_OF_SECRETS, 0) == 1; + mChamberUnlocked.setChecked(chamberOpened); + + if (chamberOpened) { + removePreference(mChamber); + } else { + removePreference(mChamberUnlocked); + } } private ListPreference addListPreference(String prefKey) { @@ -425,6 +449,12 @@ private void removePreference(Preference preference) { mAllPrefs.remove(preference); } + private void addPreference(Preference preference) { + getPreferenceScreen().addPreference(preference); + preference.setOnPreferenceChangeListener(this); + mAllPrefs.add(preference); + } + private void setPrefsEnabledState(boolean enabled) { for (int i = 0; i < mAllPrefs.size(); i++) { Preference pref = mAllPrefs.get(i); @@ -1314,6 +1344,18 @@ public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preferen writeForceRtlOptions(); } else if (preference == mWifiDisplayCertification) { writeWifiDisplayCertificationOptions(); + } else if (preference == mChamber) { + if (Settings.Secure.getInt(getActivity().getContentResolver(), + Settings.Secure.CHAMBER_OF_SECRETS, 0) == 0) { + Settings.Secure.putInt(getActivity().getContentResolver(), + Settings.Secure.CHAMBER_OF_SECRETS, 1); + Toast.makeText(getActivity(), + R.string.chamber_toast, + Toast.LENGTH_LONG).show(); + getPreferenceScreen().removePreference(mChamber); + addPreference(mChamberUnlocked); + mChamberUnlocked.setChecked(true); + } } else { return super.onPreferenceTreeClick(preferenceScreen, preference); } @@ -1401,6 +1443,11 @@ public void onClick(DialogInterface dialog, int which) { writeRootAccessOptions(newValue); } return true; + } else if (preference == mChamberUnlocked) { + Settings.Secure.putInt(getActivity().getContentResolver(), + Settings.Secure.CHAMBER_OF_SECRETS, + (Boolean) newValue ? 1 : 0); + return true; } return false; }