OSDN Git Service

Bug 4167061 remove debug code
[android-x86/packages-apps-Settings.git] / src / com / android / settings / DevelopmentSettings.java
index 7934800..2508454 100644 (file)
@@ -18,26 +18,32 @@ package com.android.settings;
 
 import android.app.AlertDialog;
 import android.app.Dialog;
+import android.content.ContentResolver;
 import android.content.DialogInterface;
 import android.os.BatteryManager;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.SystemProperties;
+import android.preference.CheckBoxPreference;
+import android.preference.ListPreference;
 import android.preference.Preference;
-import android.preference.PreferenceActivity;
+import android.preference.PreferenceFragment;
 import android.preference.PreferenceScreen;
-import android.preference.CheckBoxPreference;
+import android.preference.Preference.OnPreferenceChangeListener;
 import android.provider.Settings;
-import android.text.TextUtils;
 
 /*
  * Displays preferences for application developers.
  */
-public class DevelopmentSettings extends PreferenceActivity
-        implements DialogInterface.OnClickListener, DialogInterface.OnDismissListener {
+public class DevelopmentSettings extends PreferenceFragment
+        implements DialogInterface.OnClickListener, DialogInterface.OnDismissListener,
+                OnPreferenceChangeListener {
 
     private static final String ENABLE_ADB = "enable_adb";
     private static final String KEEP_SCREEN_ON = "keep_screen_on";
     private static final String ALLOW_MOCK_LOCATION = "allow_mock_location";
+    private static final String HDCP_CHECKING_KEY = "hdcp_checking";
+    private static final String HDCP_CHECKING_PROPERTY = "persist.sys.hdcp_checking";
 
     private CheckBoxPreference mEnableAdb;
     private CheckBoxPreference mKeepScreenOn;
@@ -49,7 +55,7 @@ public class DevelopmentSettings extends PreferenceActivity
     private Dialog mOkDialog;
 
     @Override
-    protected void onCreate(Bundle icicle) {
+    public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
 
         addPreferencesFromResource(R.xml.development_prefs);
@@ -57,26 +63,57 @@ public class DevelopmentSettings extends PreferenceActivity
         mEnableAdb = (CheckBoxPreference) findPreference(ENABLE_ADB);
         mKeepScreenOn = (CheckBoxPreference) findPreference(KEEP_SCREEN_ON);
         mAllowMockLocation = (CheckBoxPreference) findPreference(ALLOW_MOCK_LOCATION);
+
+        removeHdcpOptionsForProduction();
+    }
+
+    private void removeHdcpOptionsForProduction() {
+        if ("user".equals(Build.TYPE)) {
+            Preference hdcpChecking = findPreference(HDCP_CHECKING_KEY);
+            if (hdcpChecking != null) {
+                // Remove the preference
+                getPreferenceScreen().removePreference(hdcpChecking);
+            }
+        }
     }
 
     @Override
-    protected void onResume() {
+    public void onResume() {
         super.onResume();
 
-        mEnableAdb.setChecked(Settings.Secure.getInt(getContentResolver(),
+        final ContentResolver cr = getActivity().getContentResolver();
+        mEnableAdb.setChecked(Settings.Secure.getInt(cr,
                 Settings.Secure.ADB_ENABLED, 0) != 0);
-        mKeepScreenOn.setChecked(Settings.System.getInt(getContentResolver(),
+        mKeepScreenOn.setChecked(Settings.System.getInt(cr,
                 Settings.System.STAY_ON_WHILE_PLUGGED_IN, 0) != 0);
-        mAllowMockLocation.setChecked(Settings.Secure.getInt(getContentResolver(),
+        mAllowMockLocation.setChecked(Settings.Secure.getInt(cr,
                 Settings.Secure.ALLOW_MOCK_LOCATION, 0) != 0);
+        updateHdcpValues();
+    }
+
+    private void updateHdcpValues() {
+        int index = 1; // Defaults to drm-only. Needs to match with R.array.hdcp_checking_values
+        ListPreference hdcpChecking = (ListPreference) findPreference(HDCP_CHECKING_KEY);
+        if (hdcpChecking != null) {
+            String currentValue = SystemProperties.get(HDCP_CHECKING_PROPERTY);
+            String[] values = getResources().getStringArray(R.array.hdcp_checking_values);
+            String[] summaries = getResources().getStringArray(R.array.hdcp_checking_summaries);
+            for (int i = 0; i < values.length; i++) {
+                if (currentValue.equals(values[i])) {
+                    index = i;
+                    break;
+                }
+            }
+            hdcpChecking.setValue(values[index]);
+            hdcpChecking.setSummary(summaries[index]);
+            hdcpChecking.setOnPreferenceChangeListener(this);
+        }
     }
 
     @Override
     public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
 
-        // Those monkeys kept committing suicide, so we add this property
-        // to disable this functionality
-        if (!TextUtils.isEmpty(SystemProperties.get("monkey.running"))) {
+        if (Utils.isMonkeyRunning()) {
             return false;
         }
 
@@ -84,8 +121,8 @@ public class DevelopmentSettings extends PreferenceActivity
             if (mEnableAdb.isChecked()) {
                 mOkClicked = false;
                 if (mOkDialog != null) dismissDialog();
-                mOkDialog = new AlertDialog.Builder(this).setMessage(
-                        getResources().getString(R.string.adb_warning_message))
+                mOkDialog = new AlertDialog.Builder(getActivity()).setMessage(
+                        getActivity().getResources().getString(R.string.adb_warning_message))
                         .setTitle(R.string.adb_warning_title)
                         .setIcon(android.R.drawable.ic_dialog_alert)
                         .setPositiveButton(android.R.string.yes, this)
@@ -93,14 +130,17 @@ public class DevelopmentSettings extends PreferenceActivity
                         .show();
                 mOkDialog.setOnDismissListener(this);
             } else {
-                Settings.Secure.putInt(getContentResolver(), Settings.Secure.ADB_ENABLED, 0);
+                Settings.Secure.putInt(getActivity().getContentResolver(),
+                        Settings.Secure.ADB_ENABLED, 0);
             }
         } else if (preference == mKeepScreenOn) {
-            Settings.System.putInt(getContentResolver(), Settings.System.STAY_ON_WHILE_PLUGGED_IN, 
+            Settings.System.putInt(getActivity().getContentResolver(),
+                    Settings.System.STAY_ON_WHILE_PLUGGED_IN, 
                     mKeepScreenOn.isChecked() ? 
                     (BatteryManager.BATTERY_PLUGGED_AC | BatteryManager.BATTERY_PLUGGED_USB) : 0);
         } else if (preference == mAllowMockLocation) {
-            Settings.Secure.putInt(getContentResolver(), Settings.Secure.ALLOW_MOCK_LOCATION,
+            Settings.Secure.putInt(getActivity().getContentResolver(),
+                    Settings.Secure.ALLOW_MOCK_LOCATION,
                     mAllowMockLocation.isChecked() ? 1 : 0);
         }
 
@@ -116,7 +156,8 @@ public class DevelopmentSettings extends PreferenceActivity
     public void onClick(DialogInterface dialog, int which) {
         if (which == DialogInterface.BUTTON_POSITIVE) {
             mOkClicked = true;
-            Settings.Secure.putInt(getContentResolver(), Settings.Secure.ADB_ENABLED, 1);
+            Settings.Secure.putInt(getActivity().getContentResolver(),
+                    Settings.Secure.ADB_ENABLED, 1);
         } else {
             // Reset the toggle
             mEnableAdb.setChecked(false);
@@ -135,4 +176,14 @@ public class DevelopmentSettings extends PreferenceActivity
         dismissDialog();
         super.onDestroy();
     }
+
+    @Override
+    public boolean onPreferenceChange(Preference preference, Object newValue) {
+        if (HDCP_CHECKING_KEY.equals(preference.getKey())) {
+            SystemProperties.set(HDCP_CHECKING_PROPERTY, newValue.toString());
+            updateHdcpValues();
+            return true;
+        }
+        return false;
+    }
 }