diff options
author | Dianne Hackborn <hackbod@google.com> | 2012-05-07 17:52:07 -0700 |
---|---|---|
committer | Dianne Hackborn <hackbod@google.com> | 2012-05-08 15:42:53 -0700 |
commit | 34481b9cd4a589d35f59b1e504cf02f4595f0d92 (patch) | |
tree | 428c7cb3b0dadb9f626ee5a0d85a296360fe62f4 /src/com | |
parent | fbffd0c98203c63af85a3fc6d85660b21c211bfe (diff) | |
download | packages_apps_settings-34481b9cd4a589d35f59b1e504cf02f4595f0d92.zip packages_apps_settings-34481b9cd4a589d35f59b1e504cf02f4595f0d92.tar.gz packages_apps_settings-34481b9cd4a589d35f59b1e504cf02f4595f0d92.tar.bz2 |
Settings to control traces.
Also some re-organization of the debug options, and check for
the case where the global debug setting is turned off but there
are some debug options turned on (in which case we just switch
to the global option being on).
Change-Id: I710e3a009e2be9c7c1a1879a853ac736abf1d8d8
Diffstat (limited to 'src/com')
-rw-r--r-- | src/com/android/settings/DevelopmentSettings.java | 118 |
1 files changed, 102 insertions, 16 deletions
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java index d32cbc7..49695e8 100644 --- a/src/com/android/settings/DevelopmentSettings.java +++ b/src/com/android/settings/DevelopmentSettings.java @@ -40,8 +40,10 @@ import android.os.RemoteException; import android.os.ServiceManager; import android.os.StrictMode; import android.os.SystemProperties; +import android.os.Trace; import android.preference.CheckBoxPreference; import android.preference.ListPreference; +import android.preference.MultiCheckPreference; import android.preference.Preference; import android.preference.PreferenceFragment; import android.preference.PreferenceScreen; @@ -88,6 +90,8 @@ public class DevelopmentSettings extends PreferenceFragment private static final String TRANSITION_ANIMATION_SCALE_KEY = "transition_animation_scale"; private static final String ANIMATOR_DURATION_SCALE_KEY = "animator_duration_scale"; + private static final String ENABLE_TRACES_KEY = "enable_traces"; + private static final String IMMEDIATELY_DESTROY_ACTIVITIES_KEY = "immediately_destroy_activities"; private static final String APP_PROCESS_LIMIT_KEY = "app_process_limit"; @@ -101,6 +105,7 @@ public class DevelopmentSettings extends PreferenceFragment private Switch mEnabledSwitch; private boolean mLastEnabledState; + private boolean mHaveDebugSettings; private CheckBoxPreference mEnableAdb; private CheckBoxPreference mKeepScreenOn; @@ -124,6 +129,7 @@ public class DevelopmentSettings extends PreferenceFragment private ListPreference mWindowAnimationScale; private ListPreference mTransitionAnimationScale; private ListPreference mAnimatorDurationScale; + private MultiCheckPreference mEnableTracesPref; private CheckBoxPreference mImmediatelyDestroyActivities; private ListPreference mAppProcessLimit; @@ -177,6 +183,15 @@ public class DevelopmentSettings extends PreferenceFragment mAnimatorDurationScale = (ListPreference) findPreference(ANIMATOR_DURATION_SCALE_KEY); mAllPrefs.add(mAnimatorDurationScale); mAnimatorDurationScale.setOnPreferenceChangeListener(this); + mEnableTracesPref = (MultiCheckPreference)findPreference(ENABLE_TRACES_KEY); + String[] traceValues = new String[Trace.TRACE_TAGS.length]; + for (int i=Trace.TRACE_FLAGS_START_BIT; i<traceValues.length; i++) { + traceValues[i] = Integer.toString(1<<i); + } + mEnableTracesPref.setEntries(Trace.TRACE_TAGS); + mEnableTracesPref.setEntryValues(traceValues); + mAllPrefs.add(mEnableTracesPref); + mEnableTracesPref.setOnPreferenceChangeListener(this); mImmediatelyDestroyActivities = (CheckBoxPreference) findPreference( IMMEDIATELY_DESTROY_ACTIVITIES_KEY); @@ -275,15 +290,32 @@ public class DevelopmentSettings extends PreferenceFragment Settings.Secure.DEVELOPMENT_SETTINGS_ENABLED, 0) != 0; mEnabledSwitch.setChecked(mLastEnabledState); setPrefsEnabledState(mLastEnabledState); + + if (mHaveDebugSettings && !mLastEnabledState) { + // Overall debugging is disabled, but there are some debug + // settings that are enabled. This is an invalid state. Switch + // to debug settings being enabled, so the user knows there is + // stuff enabled and can turn it all off if they want. + Settings.Secure.putInt(getActivity().getContentResolver(), + Settings.Secure.DEVELOPMENT_SETTINGS_ENABLED, 1); + mLastEnabledState = true; + setPrefsEnabledState(mLastEnabledState); + } + } + + void updateCheckBox(CheckBoxPreference checkBox, boolean value) { + checkBox.setChecked(value); + mHaveDebugSettings |= value; } private void updateAllOptions() { final ContentResolver cr = getActivity().getContentResolver(); - mEnableAdb.setChecked(Settings.Secure.getInt(cr, + mHaveDebugSettings = false; + updateCheckBox(mEnableAdb, Settings.Secure.getInt(cr, Settings.Secure.ADB_ENABLED, 0) != 0); - mKeepScreenOn.setChecked(Settings.System.getInt(cr, + updateCheckBox(mKeepScreenOn, Settings.System.getInt(cr, Settings.System.STAY_ON_WHILE_PLUGGED_IN, 0) != 0); - mAllowMockLocation.setChecked(Settings.Secure.getInt(cr, + updateCheckBox(mAllowMockLocation, Settings.Secure.getInt(cr, Settings.Secure.ALLOW_MOCK_LOCATION, 0) != 0); updateHdcpValues(); updatePasswordSummary(); @@ -298,6 +330,7 @@ public class DevelopmentSettings extends PreferenceFragment updateShowHwScreenUpdatesOptions(); updateDebugLayoutOptions(); updateAnimationScaleOptions(); + updateEnableTracesOptions(); updateImmediatelyDestroyActivitiesOptions(); updateAppProcessLimitOptions(); updateShowAllANRsOptions(); @@ -315,7 +348,9 @@ public class DevelopmentSettings extends PreferenceFragment writeAnimationScaleOption(0, mWindowAnimationScale, null); writeAnimationScaleOption(1, mTransitionAnimationScale, null); writeAnimationScaleOption(2, mAnimatorDurationScale, null); + writeEnableTracesOptions(0); writeAppProcessLimitOptions(null); + mHaveDebugSettings = false; updateAllOptions(); } @@ -369,7 +404,7 @@ public class DevelopmentSettings extends PreferenceFragment private void updateDebuggerOptions() { mDebugApp = Settings.System.getString( getActivity().getContentResolver(), Settings.System.DEBUG_APP); - mWaitForDebugger.setChecked(Settings.System.getInt( + updateCheckBox(mWaitForDebugger, Settings.System.getInt( getActivity().getContentResolver(), Settings.System.WAIT_FOR_DEBUGGER, 0) != 0); if (mDebugApp != null && mDebugApp.length() > 0) { String label; @@ -383,6 +418,7 @@ public class DevelopmentSettings extends PreferenceFragment } mDebugAppPref.setSummary(getResources().getString(R.string.debug_app_set, label)); mWaitForDebugger.setEnabled(true); + mHaveDebugSettings = true; } else { mDebugAppPref.setSummary(getResources().getString(R.string.debug_app_not_set)); mWaitForDebugger.setEnabled(false); @@ -411,7 +447,7 @@ public class DevelopmentSettings extends PreferenceFragment } private void updateStrictModeVisualOptions() { - mStrictMode.setChecked(currentStrictModeActiveIndex() == 1); + updateCheckBox(mStrictMode, currentStrictModeActiveIndex() == 1); } private void writePointerLocationOptions() { @@ -420,7 +456,7 @@ public class DevelopmentSettings extends PreferenceFragment } private void updatePointerLocationOptions() { - mPointerLocation.setChecked(Settings.System.getInt(getActivity().getContentResolver(), + updateCheckBox(mPointerLocation, Settings.System.getInt(getActivity().getContentResolver(), Settings.System.POINTER_LOCATION, 0) != 0); } @@ -430,7 +466,7 @@ public class DevelopmentSettings extends PreferenceFragment } private void updateShowTouchesOptions() { - mShowTouches.setChecked(Settings.System.getInt(getActivity().getContentResolver(), + updateCheckBox(mShowTouches, Settings.System.getInt(getActivity().getContentResolver(), Settings.System.SHOW_TOUCHES, 0) != 0); } @@ -448,11 +484,11 @@ public class DevelopmentSettings extends PreferenceFragment @SuppressWarnings("unused") int enableGL = reply.readInt(); int showUpdates = reply.readInt(); - mShowScreenUpdates.setChecked(showUpdates != 0); + updateCheckBox(mShowScreenUpdates, showUpdates != 0); @SuppressWarnings("unused") int showBackground = reply.readInt(); int disableOverlays = reply.readInt(); - mDisableOverlays.setChecked(disableOverlays != 0); + updateCheckBox(mDisableOverlays, disableOverlays != 0); reply.recycle(); data.recycle(); } @@ -495,7 +531,7 @@ public class DevelopmentSettings extends PreferenceFragment } private void updateHardwareUiOptions() { - mForceHardwareUi.setChecked(SystemProperties.getBoolean(HARDWARE_UI_PROPERTY, false)); + updateCheckBox(mForceHardwareUi, SystemProperties.getBoolean(HARDWARE_UI_PROPERTY, false)); } private void writeHardwareUiOptions() { @@ -503,7 +539,7 @@ public class DevelopmentSettings extends PreferenceFragment } private void updateTrackFrameTimeOptions() { - mTrackFrameTime.setChecked( + updateCheckBox(mTrackFrameTime, SystemProperties.getBoolean(HardwareRenderer.PROFILE_PROPERTY, false)); } @@ -513,7 +549,7 @@ public class DevelopmentSettings extends PreferenceFragment } private void updateShowHwScreenUpdatesOptions() { - mShowHwScreenUpdates.setChecked( + updateCheckBox(mShowHwScreenUpdates, SystemProperties.getBoolean(HardwareRenderer.DEBUG_DIRTY_REGIONS_PROPERTY, false)); } @@ -523,7 +559,7 @@ public class DevelopmentSettings extends PreferenceFragment } private void updateDebugLayoutOptions() { - mDebugLayout.setChecked( + updateCheckBox(mDebugLayout, SystemProperties.getBoolean(View.DEBUG_LAYOUT_PROPERTY, false)); } @@ -533,7 +569,7 @@ public class DevelopmentSettings extends PreferenceFragment } private void updateCpuUsageOptions() { - mShowCpuUsage.setChecked(Settings.System.getInt(getActivity().getContentResolver(), + updateCheckBox(mShowCpuUsage, Settings.System.getInt(getActivity().getContentResolver(), Settings.System.SHOW_PROCESSES, 0) != 0); } @@ -559,13 +595,16 @@ public class DevelopmentSettings extends PreferenceFragment } private void updateImmediatelyDestroyActivitiesOptions() { - mImmediatelyDestroyActivities.setChecked(Settings.System.getInt( + updateCheckBox(mImmediatelyDestroyActivities, Settings.System.getInt( getActivity().getContentResolver(), Settings.System.ALWAYS_FINISH_ACTIVITIES, 0) != 0); } private void updateAnimationScaleValue(int which, ListPreference pref) { try { float scale = mWindowManager.getAnimationScale(which); + if (scale != 1) { + mHaveDebugSettings = true; + } CharSequence[] values = pref.getEntryValues(); for (int i=0; i<values.length; i++) { float val = Float.parseFloat(values[i].toString()); @@ -603,6 +642,9 @@ public class DevelopmentSettings extends PreferenceFragment for (int i=0; i<values.length; i++) { int val = Integer.parseInt(values[i].toString()); if (val >= limit) { + if (i != 0) { + mHaveDebugSettings = true; + } mAppProcessLimit.setValueIndex(i); mAppProcessLimit.setSummary(mAppProcessLimit.getEntries()[i]); return; @@ -630,10 +672,51 @@ public class DevelopmentSettings extends PreferenceFragment } private void updateShowAllANRsOptions() { - mShowAllANRs.setChecked(Settings.Secure.getInt( + updateCheckBox(mShowAllANRs, Settings.Secure.getInt( getActivity().getContentResolver(), Settings.Secure.ANR_SHOW_BACKGROUND, 0) != 0); } + private void updateEnableTracesOptions() { + String strValue = SystemProperties.get(Trace.PROPERTY_TRACE_TAG_ENABLEFLAGS); + long flags = SystemProperties.getLong(Trace.PROPERTY_TRACE_TAG_ENABLEFLAGS, 0); + String[] values = mEnableTracesPref.getEntryValues(); + int numSet = 0; + for (int i=Trace.TRACE_FLAGS_START_BIT; i<values.length; i++) { + boolean set = (flags&(1<<i)) != 0; + mEnableTracesPref.setValue(i-Trace.TRACE_FLAGS_START_BIT, set); + if (set) { + numSet++; + } + } + if (numSet == 0) { + mEnableTracesPref.setSummary(R.string.enable_traces_summary_none); + } else if (numSet == values.length) { + mHaveDebugSettings = true; + mEnableTracesPref.setSummary(R.string.enable_traces_summary_all); + } else { + mHaveDebugSettings = true; + mEnableTracesPref.setSummary(getString(R.string.enable_traces_summary_num, numSet)); + } + } + + private void writeEnableTracesOptions() { + long value = 0; + String[] values = mEnableTracesPref.getEntryValues(); + for (int i=Trace.TRACE_FLAGS_START_BIT; i<values.length; i++) { + if (mEnableTracesPref.getValue(i-Trace.TRACE_FLAGS_START_BIT)) { + value |= 1<<i; + } + } + writeEnableTracesOptions(value); + // Make sure summary is updated. + updateEnableTracesOptions(); + } + + private void writeEnableTracesOptions(long value) { + SystemProperties.set(Trace.PROPERTY_TRACE_TAG_ENABLEFLAGS, + "0x" + Long.toString(value, 16)); + } + @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (buttonView == mEnabledSwitch) { @@ -754,6 +837,9 @@ public class DevelopmentSettings extends PreferenceFragment } else if (preference == mAnimatorDurationScale) { writeAnimationScaleOption(2, mAnimatorDurationScale, newValue); return true; + } else if (preference == mEnableTracesPref) { + writeEnableTracesOptions(); + return true; } else if (preference == mAppProcessLimit) { writeAppProcessLimitOptions(newValue); return true; |