summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2012-05-09 01:49:48 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2012-05-09 01:49:48 -0700
commit80859c2792eb537cdcbf4be50d5cc11bb9166ccf (patch)
tree322bea915fbb9bcdd295aaeb2ae87f069d978c08
parentaf4757ba5683e5a9b10982256460752a2b1411e1 (diff)
parent821a4d8c34e9a60f2f349ff63436c2ea0379ce9c (diff)
downloadpackages_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.xml42
-rw-r--r--res/xml/development_prefs.xml79
-rw-r--r--src/com/android/settings/DevelopmentSettings.java118
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;