diff --git a/src/com/android/settings/dashboard/DashboardFragment.java b/src/com/android/settings/dashboard/DashboardFragment.java index 9f0acaa3486..be59ca11c70 100644 --- a/src/com/android/settings/dashboard/DashboardFragment.java +++ b/src/com/android/settings/dashboard/DashboardFragment.java @@ -27,9 +27,11 @@ import android.util.Log; import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; +import androidx.preference.PreferenceGroup; import androidx.preference.PreferenceManager; import androidx.preference.PreferenceScreen; +import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.core.BasePreferenceController; import com.android.settings.core.PreferenceControllerListHelper; @@ -53,7 +55,7 @@ import java.util.Set; */ public abstract class DashboardFragment extends SettingsPreferenceFragment implements SettingsBaseActivity.CategoryListener, Indexable, - SummaryLoader.SummaryConsumer { + SummaryLoader.SummaryConsumer, PreferenceGroup.OnExpandButtonClickListener { private static final String TAG = "DashboardFragment"; private final Map> mPreferenceControllers = @@ -207,6 +209,12 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment @Override protected abstract int getPreferenceScreenResId(); + @Override + public void onExpandButtonClick() { + mMetricsFeatureProvider.actionWithSource(getContext(), getMetricsCategory(), + MetricsEvent.ACTION_SETTINGS_ADVANCED_BUTTON_EXPAND); + } + protected boolean shouldForceRoundedIcon() { return false; } @@ -268,6 +276,7 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment } addPreferencesFromResource(resId); final PreferenceScreen screen = getPreferenceScreen(); + screen.setOnExpandButtonClickListener(this); mPreferenceControllers.values().stream().flatMap(Collection::stream).forEach( controller -> controller.displayPreference(screen)); } diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java index 8182a1c9e36..8e9480d03a2 100644 --- a/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java +++ b/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java @@ -33,10 +33,12 @@ import androidx.preference.Preference; import androidx.preference.PreferenceManager; import androidx.preference.PreferenceScreen; +import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settingslib.core.AbstractPreferenceController; +import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.core.instrumentation.VisibilityLoggerMixin; import com.android.settingslib.drawer.DashboardCategory; import com.android.settingslib.drawer.Tile; @@ -177,6 +179,17 @@ public class DashboardFragmentTest { verify(mockController2).getPreferenceKey(); } + @Test + public void onExpandButtonClick_shouldLogAdvancedButtonExpand() { + final MetricsFeatureProvider metricsFeatureProvider + = mFakeFeatureFactory.getMetricsFeatureProvider(); + mTestFragment.onExpandButtonClick(); + + verify(metricsFeatureProvider).actionWithSource( + RuntimeEnvironment.application, MetricsEvent.DASHBOARD_CONTAINER, + MetricsEvent.ACTION_SETTINGS_ADVANCED_BUTTON_EXPAND); + } + public static class TestPreferenceController extends AbstractPreferenceController implements PreferenceControllerMixin { @@ -230,7 +243,7 @@ public class DashboardFragmentTest { @Override public int getMetricsCategory() { - return 0; + return MetricsEvent.DASHBOARD_CONTAINER; } @Override