diff options
author | Dianne Hackborn <hackbod@google.com> | 2012-05-09 01:49:48 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2012-05-09 01:49:48 -0700 |
commit | 80859c2792eb537cdcbf4be50d5cc11bb9166ccf (patch) | |
tree | 322bea915fbb9bcdd295aaeb2ae87f069d978c08 | |
parent | af4757ba5683e5a9b10982256460752a2b1411e1 (diff) | |
parent | 821a4d8c34e9a60f2f349ff63436c2ea0379ce9c (diff) | |
download | packages_apps_Settings-80859c2792eb537cdcbf4be50d5cc11bb9166ccf.zip packages_apps_Settings-80859c2792eb537cdcbf4be50d5cc11bb9166ccf.tar.gz packages_apps_Settings-80859c2792eb537cdcbf4be50d5cc11bb9166ccf.tar.bz2 |
am 821a4d8c: Merge "Settings to control traces." into jb-dev
* commit '821a4d8c34e9a60f2f349ff63436c2ea0379ce9c':
Settings to control traces.
-rw-r--r-- | res/values/strings.xml | 42 | ||||
-rw-r--r-- | res/xml/development_prefs.xml | 79 | ||||
-rw-r--r-- | src/com/android/settings/DevelopmentSettings.java | 118 |
3 files changed, 179 insertions, 60 deletions
diff --git a/res/values/strings.xml b/res/values/strings.xml index 89e1c96..ea5cab4 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -3570,8 +3570,14 @@ <string name="wait_for_debugger_summary">Debugged application waits for debugger to attach before executing</string> - <!-- Preference category for user interface debugging development settings. [CHAR LIMIT=25] --> - <string name="debug_ui_category">User interface</string> + <!-- Preference category for input debugging development settings. [CHAR LIMIT=25] --> + <string name="debug_input_category">Input</string> + + <!-- Preference category for drawing debugging development settings. [CHAR LIMIT=25] --> + <string name="debug_drawing_category">Drawing</string> + + <!-- Preference category for monitoring debugging development settings. [CHAR LIMIT=25] --> + <string name="debug_monitoring_category">Monitoring</string> <!-- UI debug setting: always enable strict mode? [CHAR LIMIT=25] --> <string name="strict_mode">Strict mode enabled</string> @@ -3589,20 +3595,32 @@ <!-- UI debug setting: show touches location summary [CHAR LIMIT=50] --> <string name="show_touches_summary">Show visual feedback for touches</string> - <!-- UI debug setting: show where screen updates happen? [CHAR LIMIT=25] --> - <string name="show_screen_updates">Show screen updates</string> - <!-- UI debug setting: show screen updates summary [CHAR LIMIT=50] --> - <string name="show_screen_updates_summary">Flash areas of screen when they update</string> + <!-- UI debug setting: show where surface updates happen? [CHAR LIMIT=25] --> + <string name="show_screen_updates">Show surface updates</string> + <!-- UI debug setting: show surface updates summary [CHAR LIMIT=50] --> + <string name="show_screen_updates_summary">Flash entire window surfaces when they update</string> - <!-- UI debug setting: show where screen updates happen with GPU rendering? [CHAR LIMIT=25] --> - <string name="show_hw_screen_updates">Show GPU screen updates</string> + <!-- UI debug setting: show where window updates happen with GPU rendering? [CHAR LIMIT=25] --> + <string name="show_hw_screen_updates">Show GPU view updates</string> <!-- UI debug setting: show GPU rendering screen updates summary [CHAR LIMIT=50] --> - <string name="show_hw_screen_updates_summary">Flash areas of screen when they update with the GPU</string> + <string name="show_hw_screen_updates_summary">Flash views inside windows when drawn with the GPU</string> <!-- UI debug setting: disable use of overlays? [CHAR LIMIT=25] --> - <string name="disable_overlays">Disable overlays</string> + <string name="disable_overlays">Disable HW overlays</string> <!-- UI debug setting: disable use of overlays summary [CHAR LIMIT=50] --> - <string name="disable_overlays_summary">Don\'t use overlays for screen compositing</string> + <string name="disable_overlays_summary">Always use GPU for screen compositing</string> + + <!-- UI debug setting: enable low-level traces? [CHAR LIMIT=25] --> + <string name="enable_traces_title">Enable traces</string> + <!-- UI debug setting: title for dialog to enable low-level traces [CHAR LIMIT=25] --> + <string name="enable_traces_dialog_title">Select enabled traces</string> + + <!-- UI debug setting: enable low-level traces, none enabled summary [CHAR LIMIT=NONE] --> + <string name="enable_traces_summary_none">No traces currently enabled</string> + <!-- UI debug setting: enable low-level traces, some number enabled summary [CHAR LIMIT=NONE] --> + <string name="enable_traces_summary_num"><xliff:g id="num">%1$d</xliff:g> traces currently enabled</string> + <!-- UI debug setting: enable low-level traces, all enabled summary [CHAR LIMIT=NONE] --> + <string name="enable_traces_summary_all">All traces currently enabled</string> <!-- UI debug setting: show layout bounds information [CHAR LIMIT=25] --> <string name="debug_layout">Show layout bounds</string> @@ -3617,7 +3635,7 @@ <!-- UI debug setting: force hardware acceleration to render apps [CHAR LIMIT=25] --> <string name="force_hw_ui">Force GPU rendering</string> <!-- UI debug setting: force hardware acceleration summary [CHAR LIMIT=50] --> - <string name="force_hw_ui_summary">Use 2D hardware acceleration in applications</string> + <string name="force_hw_ui_summary">Force use of GPU for 2d drawing</string> <!-- UI debug setting: profile time taken by hardware acceleration to render apps [CHAR LIMIT=25] --> <string name="track_frame_time">Profile GPU rendering</string> diff --git a/res/xml/development_prefs.xml b/res/xml/development_prefs.xml index 0307a6f..9788864 100644 --- a/res/xml/development_prefs.xml +++ b/res/xml/development_prefs.xml @@ -62,23 +62,23 @@ </PreferenceCategory> - <PreferenceCategory android:key="debug_ui_category" - android:title="@string/debug_ui_category"> + <PreferenceCategory android:key="debug_input_category" + android:title="@string/debug_input_category"> <CheckBoxPreference - android:key="strict_mode" - android:title="@string/strict_mode" - android:summary="@string/strict_mode_summary"/> + android:key="show_touches" + android:title="@string/show_touches" + android:summary="@string/show_touches_summary"/> <CheckBoxPreference android:key="pointer_location" android:title="@string/pointer_location" android:summary="@string/pointer_location_summary"/> - <CheckBoxPreference - android:key="show_touches" - android:title="@string/show_touches" - android:summary="@string/show_touches_summary"/> + </PreferenceCategory> + + <PreferenceCategory android:key="debug_drawing_category" + android:title="@string/debug_drawing_category"> <CheckBoxPreference android:key="debug_layout" @@ -86,34 +86,14 @@ android:summary="@string/debug_layout_summary"/> <CheckBoxPreference - android:key="show_screen_updates" - android:title="@string/show_screen_updates" - android:summary="@string/show_screen_updates_summary"/> - - <CheckBoxPreference - android:key="disable_overlays" - android:title="@string/disable_overlays" - android:summary="@string/disable_overlays_summary"/> - - <CheckBoxPreference - android:key="show_cpu_usage" - android:title="@string/show_cpu_usage" - android:summary="@string/show_cpu_usage_summary"/> - - <CheckBoxPreference - android:key="force_hw_ui" - android:title="@string/force_hw_ui" - android:summary="@string/force_hw_ui_summary"/> - - <CheckBoxPreference android:key="show_hw_screen_udpates" android:title="@string/show_hw_screen_updates" android:summary="@string/show_hw_screen_updates_summary"/> <CheckBoxPreference - android:key="track_frame_time" - android:title="@string/track_frame_time" - android:summary="@string/track_frame_time_summary"/> + android:key="show_screen_updates" + android:title="@string/show_screen_updates" + android:summary="@string/show_screen_updates_summary"/> <ListPreference android:key="window_animation_scale" @@ -136,6 +116,41 @@ android:entries="@array/animator_duration_scale_entries" android:entryValues="@array/animator_duration_scale_values" /> + <CheckBoxPreference + android:key="disable_overlays" + android:title="@string/disable_overlays" + android:summary="@string/disable_overlays_summary"/> + + <CheckBoxPreference + android:key="force_hw_ui" + android:title="@string/force_hw_ui" + android:summary="@string/force_hw_ui_summary"/> + + </PreferenceCategory> + + <PreferenceCategory android:key="debug_monitoring_category" + android:title="@string/debug_monitoring_category"> + + <CheckBoxPreference + android:key="strict_mode" + android:title="@string/strict_mode" + android:summary="@string/strict_mode_summary"/> + + <CheckBoxPreference + android:key="show_cpu_usage" + android:title="@string/show_cpu_usage" + android:summary="@string/show_cpu_usage_summary"/> + + <CheckBoxPreference + android:key="track_frame_time" + android:title="@string/track_frame_time" + android:summary="@string/track_frame_time_summary"/> + + <MultiCheckPreference + android:key="enable_traces" + android:title="@string/enable_traces_title" + android:dialogTitle="@string/enable_traces_dialog_title" /> + </PreferenceCategory> <PreferenceCategory android:key="debug_applications_category" diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java index cb31f8e..fc5a0b6 100644 --- a/src/com/android/settings/DevelopmentSettings.java +++ b/src/com/android/settings/DevelopmentSettings.java @@ -39,8 +39,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; @@ -85,6 +87,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"; @@ -98,6 +102,7 @@ public class DevelopmentSettings extends PreferenceFragment private Switch mEnabledSwitch; private boolean mLastEnabledState; + private boolean mHaveDebugSettings; private CheckBoxPreference mEnableAdb; private CheckBoxPreference mKeepScreenOn; @@ -121,6 +126,7 @@ public class DevelopmentSettings extends PreferenceFragment private ListPreference mWindowAnimationScale; private ListPreference mTransitionAnimationScale; private ListPreference mAnimatorDurationScale; + private MultiCheckPreference mEnableTracesPref; private CheckBoxPreference mImmediatelyDestroyActivities; private ListPreference mAppProcessLimit; @@ -174,6 +180,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); @@ -265,15 +280,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(); @@ -288,6 +320,7 @@ public class DevelopmentSettings extends PreferenceFragment updateShowHwScreenUpdatesOptions(); updateDebugLayoutOptions(); updateAnimationScaleOptions(); + updateEnableTracesOptions(); updateImmediatelyDestroyActivitiesOptions(); updateAppProcessLimitOptions(); updateShowAllANRsOptions(); @@ -305,7 +338,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(); } @@ -359,7 +394,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; @@ -373,6 +408,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); @@ -401,7 +437,7 @@ public class DevelopmentSettings extends PreferenceFragment } private void updateStrictModeVisualOptions() { - mStrictMode.setChecked(currentStrictModeActiveIndex() == 1); + updateCheckBox(mStrictMode, currentStrictModeActiveIndex() == 1); } private void writePointerLocationOptions() { @@ -410,7 +446,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); } @@ -420,7 +456,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); } @@ -438,11 +474,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(); } @@ -485,7 +521,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() { @@ -493,7 +529,7 @@ public class DevelopmentSettings extends PreferenceFragment } private void updateTrackFrameTimeOptions() { - mTrackFrameTime.setChecked( + updateCheckBox(mTrackFrameTime, SystemProperties.getBoolean(HardwareRenderer.PROFILE_PROPERTY, false)); } @@ -503,7 +539,7 @@ public class DevelopmentSettings extends PreferenceFragment } private void updateShowHwScreenUpdatesOptions() { - mShowHwScreenUpdates.setChecked( + updateCheckBox(mShowHwScreenUpdates, SystemProperties.getBoolean(HardwareRenderer.DEBUG_DIRTY_REGIONS_PROPERTY, false)); } @@ -513,7 +549,7 @@ public class DevelopmentSettings extends PreferenceFragment } private void updateDebugLayoutOptions() { - mDebugLayout.setChecked( + updateCheckBox(mDebugLayout, SystemProperties.getBoolean(View.DEBUG_LAYOUT_PROPERTY, false)); } @@ -523,7 +559,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); } @@ -549,13 +585,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()); @@ -593,6 +632,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; @@ -620,10 +662,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) { @@ -744,6 +827,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; |