diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java index 1553a548c68..076d0e1de7c 100644 --- a/src/com/android/settings/SettingsActivity.java +++ b/src/com/android/settings/SettingsActivity.java @@ -24,6 +24,7 @@ import static com.android.settings.applications.appinfo.AppButtonsPreferenceCont import android.app.ActionBar; import android.app.ActivityManager; +import android.app.settings.SettingsEnums; import android.content.ActivityNotFoundException; import android.content.BroadcastReceiver; import android.content.ComponentName; @@ -230,11 +231,32 @@ public class SettingsActivity extends SettingsBaseActivity @Override public SharedPreferences getSharedPreferences(String name, int mode) { - if (name.equals(getPackageName() + "_preferences")) { - return new SharedPreferencesLogger(this, getMetricsTag(), - FeatureFactory.getFactory(this).getMetricsFeatureProvider()); + if (!TextUtils.equals(name, getPackageName() + "_preferences")) { + return super.getSharedPreferences(name, mode); } - return super.getSharedPreferences(name, mode); + + String tag = getMetricsTag(); + + return new SharedPreferencesLogger(this, tag, + FeatureFactory.getFactory(this).getMetricsFeatureProvider(), + lookupMetricsCategory()); + } + + private int lookupMetricsCategory() { + int category = SettingsEnums.PAGE_UNKNOWN; + Bundle args = null; + if (getIntent() != null) { + args = getIntent().getBundleExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS); + } + + Fragment fragment = Utils.getTargetFragment(this, getMetricsTag(), args); + + if (fragment instanceof Instrumentable) { + category = ((Instrumentable) fragment).getMetricsCategory(); + } + Log.d(LOG_TAG, "MetricsCategory is " + category); + + return category; } private String getMetricsTag() { @@ -242,13 +264,11 @@ public class SettingsActivity extends SettingsBaseActivity if (getIntent() != null && getIntent().hasExtra(EXTRA_SHOW_FRAGMENT)) { tag = getInitialFragmentName(getIntent()); } + if (TextUtils.isEmpty(tag)) { Log.w(LOG_TAG, "MetricsTag is invalid " + tag); tag = getClass().getName(); } - if (tag.startsWith("com.android.settings.")) { - tag = tag.replace("com.android.settings.", ""); - } return tag; } @@ -320,7 +340,7 @@ public class SettingsActivity extends SettingsBaseActivity } mMainSwitch = findViewById(R.id.switch_bar); if (mMainSwitch != null) { - mMainSwitch.setMetricsTag(getMetricsTag()); + mMainSwitch.setMetricsCategory(lookupMetricsCategory()); mMainSwitch.setTranslationZ(findViewById(R.id.main_content).getTranslationZ() + 1); } diff --git a/src/com/android/settings/core/instrumentation/SettingsEventLogWriter.java b/src/com/android/settings/core/instrumentation/SettingsEventLogWriter.java index f1658976c4d..e85576b5420 100644 --- a/src/com/android/settings/core/instrumentation/SettingsEventLogWriter.java +++ b/src/com/android/settings/core/instrumentation/SettingsEventLogWriter.java @@ -40,6 +40,22 @@ public class SettingsEventLogWriter extends EventLogWriter { super.hidden(context, category, visibleTime); } + @Override + public void clicked(int sourceCategory, String key) { + if (shouldDisableGenericEventLogging()) { + return; + } + super.clicked(sourceCategory, key); + } + + @Override + public void changed(int category, String key, int value) { + if (shouldDisableGenericEventLogging()) { + return; + } + super.changed(category, key, value); + } + @Override public void action(Context context, int category, String pkg) { if (shouldDisableGenericEventLogging()) { diff --git a/src/com/android/settings/core/instrumentation/SettingsIntelligenceLogWriter.java b/src/com/android/settings/core/instrumentation/SettingsIntelligenceLogWriter.java index 8dfa095eefd..86ee3d669e6 100644 --- a/src/com/android/settings/core/instrumentation/SettingsIntelligenceLogWriter.java +++ b/src/com/android/settings/core/instrumentation/SettingsIntelligenceLogWriter.java @@ -84,6 +84,10 @@ public class SettingsIntelligenceLogWriter implements LogWriter { public void clicked(int sourceCategory, String key) { } + @Override + public void changed(int category, String key, int value) { + } + @Override public void action(Context context, int action, Pair... taggedData) { action(SettingsEnums.PAGE_UNKNOWN /* attribution */, diff --git a/src/com/android/settings/core/instrumentation/StatsLogWriter.java b/src/com/android/settings/core/instrumentation/StatsLogWriter.java index 15b589fafb2..7b5915afd62 100644 --- a/src/com/android/settings/core/instrumentation/StatsLogWriter.java +++ b/src/com/android/settings/core/instrumentation/StatsLogWriter.java @@ -54,6 +54,16 @@ public class StatsLogWriter implements LogWriter { 0 /* changedPreferenceIntValue */); } + @Override + public void changed(int sourceCategory, String key, int value) { + SettingsStatsLog.write(SettingsStatsLog.SETTINGS_UI_CHANGED /* Atom name */, + sourceCategory /* attribution */, + SettingsEnums.ACTION_SETTINGS_PREFERENCE_CHANGE /* action */, + SettingsEnums.PAGE_UNKNOWN /* pageId */, + key /* changedPreferenceKey */, + value /* changedPreferenceIntValue */); + } + @Override public void action(Context context, int action, Pair... taggedData) { action(SettingsEnums.PAGE_UNKNOWN /* attribution */, diff --git a/src/com/android/settings/widget/SettingsMainSwitchBar.java b/src/com/android/settings/widget/SettingsMainSwitchBar.java index 5f752f9f7d5..5ad16d79f99 100644 --- a/src/com/android/settings/widget/SettingsMainSwitchBar.java +++ b/src/com/android/settings/widget/SettingsMainSwitchBar.java @@ -18,7 +18,6 @@ package com.android.settings.widget; import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; -import android.app.settings.SettingsEnums; import android.content.Context; import android.util.AttributeSet; import android.view.View; @@ -55,7 +54,7 @@ public class SettingsMainSwitchBar extends MainSwitchBar { private final MetricsFeatureProvider mMetricsFeatureProvider; private OnBeforeCheckedChangeListener mOnBeforeListener; - private String mMetricsTag; + private int mMetricsCategory; public SettingsMainSwitchBar(Context context) { this(context, null); @@ -125,12 +124,7 @@ public class SettingsMainSwitchBar extends MainSwitchBar { } protected void onRestrictedIconClick() { - mMetricsFeatureProvider.action( - SettingsEnums.PAGE_UNKNOWN, - SettingsEnums.ACTION_SETTINGS_PREFERENCE_CHANGE, - SettingsEnums.PAGE_UNKNOWN, - mMetricsTag + "/switch_bar|restricted", - 1); + mMetricsFeatureProvider.clicked(mMetricsCategory, "switch_bar|restricted"); } @Override @@ -159,8 +153,8 @@ public class SettingsMainSwitchBar extends MainSwitchBar { /** * Set the metrics tag. */ - public void setMetricsTag(String tag) { - mMetricsTag = tag; + public void setMetricsCategory(int category) { + mMetricsCategory = category; } private View getDelegatingView() { @@ -168,11 +162,6 @@ public class SettingsMainSwitchBar extends MainSwitchBar { } private void logMetrics(boolean isChecked) { - mMetricsFeatureProvider.action( - SettingsEnums.PAGE_UNKNOWN, - SettingsEnums.ACTION_SETTINGS_PREFERENCE_CHANGE, - SettingsEnums.PAGE_UNKNOWN, - mMetricsTag + "/switch_bar", - isChecked ? 1 : 0); + mMetricsFeatureProvider.changed(mMetricsCategory, "switch_bar", isChecked ? 1 : 0); } }