diff --git a/src/com/android/settings/core/InstrumentedPreferenceFragment.java b/src/com/android/settings/core/InstrumentedPreferenceFragment.java index 31ac11f0d19..06e65846f2d 100644 --- a/src/com/android/settings/core/InstrumentedPreferenceFragment.java +++ b/src/com/android/settings/core/InstrumentedPreferenceFragment.java @@ -87,6 +87,12 @@ public abstract class InstrumentedPreferenceFragment extends ObservablePreferenc return super.findPreference(key); } + @Override + public boolean onPreferenceTreeClick(Preference preference) { + writePreferenceClickMetric(preference); + return super.onPreferenceTreeClick(preference); + } + protected final Context getPrefContext() { return getPreferenceManager().getContext(); } @@ -102,6 +108,10 @@ public abstract class InstrumentedPreferenceFragment extends ObservablePreferenc mVisibilityLoggerMixin.writeElapsedTimeMetric(action, key); } + protected void writePreferenceClickMetric(Preference preference) { + mMetricsFeatureProvider.logClickedPreference(preference, getMetricsCategory()); + } + private void updateActivityTitleWithScreenTitle(PreferenceScreen screen) { if (screen != null) { final CharSequence title = screen.getTitle(); diff --git a/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java b/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java index 282cdb9bbcf..3a744a9f6d4 100644 --- a/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java +++ b/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java @@ -400,16 +400,15 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider { ProfileSelectDialog.updateUserHandlesIfNeeded(mContext, tile); if (tile.userHandle == null || tile.isPrimaryProfileOnly()) { - mMetricsFeatureProvider.logDashboardStartIntent(mContext, intent, sourceMetricCategory); + mMetricsFeatureProvider.logStartedIntent(intent, sourceMetricCategory); activity.startActivityForResult(intent, 0); } else if (tile.userHandle.size() == 1) { - mMetricsFeatureProvider.logDashboardStartIntent(mContext, intent, sourceMetricCategory); + mMetricsFeatureProvider.logStartedIntent(intent, sourceMetricCategory); activity.startActivityForResultAsUser(intent, 0, tile.userHandle.get(0)); } else { final UserHandle userHandle = intent.getParcelableExtra(EXTRA_USER); if (userHandle != null && tile.userHandle.contains(userHandle)) { - mMetricsFeatureProvider.logDashboardStartIntent( - mContext, intent, sourceMetricCategory); + mMetricsFeatureProvider.logStartedIntent(intent, sourceMetricCategory); activity.startActivityForResultAsUser(intent, 0, userHandle); } else { ProfileSelectDialog.show(activity.getSupportFragmentManager(), tile); diff --git a/src/com/android/settings/dashboard/DashboardFragment.java b/src/com/android/settings/dashboard/DashboardFragment.java index a8c4760e857..0d3d5b000f7 100644 --- a/src/com/android/settings/dashboard/DashboardFragment.java +++ b/src/com/android/settings/dashboard/DashboardFragment.java @@ -201,16 +201,15 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment @Override public boolean onPreferenceTreeClick(Preference preference) { - Collection> controllers = + final Collection> controllers = mPreferenceControllers.values(); - // If preference contains intent, log it before handling. - mMetricsFeatureProvider.logDashboardStartIntent( - getContext(), preference.getIntent(), getMetricsCategory()); // Give all controllers a chance to handle click. preference.getExtras().putInt(CATEGORY, getMetricsCategory()); for (List controllerList : controllers) { for (AbstractPreferenceController controller : controllerList) { if (controller.handlePreferenceTreeClick(preference)) { + // log here since calling super.onPreferenceTreeClick will be skipped + writePreferenceClickMetric(preference); return true; } } diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java index 14fd2840e88..3f2b7c39a97 100644 --- a/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java +++ b/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java @@ -230,8 +230,7 @@ public class DashboardFeatureProviderImplTest { MetricsEvent.SETTINGS_GESTURES, preference, tile, "123", Preference.DEFAULT_ORDER); preference.getOnPreferenceClickListener().onPreferenceClick(null); - verify(mFeatureFactory.metricsFeatureProvider).logDashboardStartIntent( - any(Context.class), + verify(mFeatureFactory.metricsFeatureProvider).logStartedIntent( any(Intent.class), eq(MetricsEvent.SETTINGS_GESTURES)); verify(mActivity) @@ -249,8 +248,7 @@ public class DashboardFeatureProviderImplTest { mImpl.bindPreferenceToTileAndGetObservers(mActivity, mForceRoundedIcon, MetricsEvent.SETTINGS_GESTURES, preference, tile, "123", Preference.DEFAULT_ORDER); preference.getOnPreferenceClickListener().onPreferenceClick(null); - verify(mFeatureFactory.metricsFeatureProvider).logDashboardStartIntent( - any(Context.class), + verify(mFeatureFactory.metricsFeatureProvider).logStartedIntent( any(Intent.class), anyInt()); verify(mActivity)