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;
}