From 13ce22080776c708f603e4439023942298f8e1d3 Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Thu, 5 Oct 2017 17:50:14 -0700 Subject: [PATCH] Log cleanup: remove unnecessary logging for suggestions - Remove show_suggestion logging in DashboardAdapater. Showing suggestion is logged inside SuggestionAdapter during onBind. - Remove hide_suggestion logging. It's not used by anyone. - Move SuggestionLogHelper into SuggestionFeatureProvider Bug: 65065268 Test: robotests Change-Id: I1e7929d739b79527d2ae01c25177676f6be6ddff --- .../settings/dashboard/DashboardAdapter.java | 64 +--- .../settings/dashboard/DashboardSummary.java | 3 - .../suggestions/SuggestionAdapter.java | 10 +- .../SuggestionFeatureProvider.java | 9 + .../SuggestionFeatureProviderImpl.java | 11 +- .../suggestions/SuggestionLogHelper.java | 29 -- .../dashboard/DashboardAdapterTest.java | 293 +----------------- .../suggestions/SuggestionAdapterTest.java | 23 +- .../SuggestionFeatureProviderImplTest.java | 16 + .../suggestions/SuggestionLogHelperTest.java | 47 --- 10 files changed, 63 insertions(+), 442 deletions(-) delete mode 100644 src/com/android/settings/dashboard/suggestions/SuggestionLogHelper.java delete mode 100644 tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionLogHelperTest.java diff --git a/src/com/android/settings/dashboard/DashboardAdapter.java b/src/com/android/settings/dashboard/DashboardAdapter.java index 9c61873cb99..d4397dc1c13 100644 --- a/src/com/android/settings/dashboard/DashboardAdapter.java +++ b/src/com/android/settings/dashboard/DashboardAdapter.java @@ -31,7 +31,6 @@ import android.support.v7.widget.RecyclerView; import android.text.TextUtils; import android.util.ArrayMap; import android.util.Log; -import android.util.Pair; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -47,11 +46,9 @@ import com.android.settings.dashboard.DashboardData.SuggestionConditionHeaderDat import com.android.settings.dashboard.conditional.Condition; import com.android.settings.dashboard.conditional.ConditionAdapter; import com.android.settings.dashboard.suggestions.SuggestionAdapter; -import com.android.settings.dashboard.suggestions.SuggestionController; import com.android.settings.dashboard.suggestions.SuggestionControllerMixin; import com.android.settings.dashboard.suggestions.SuggestionDismissController; import com.android.settings.dashboard.suggestions.SuggestionFeatureProvider; -import com.android.settings.dashboard.suggestions.SuggestionLogHelper; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.Utils; import com.android.settingslib.drawer.DashboardCategory; @@ -164,24 +161,6 @@ public class DashboardAdapter extends RecyclerView.Adapter shownSuggestions = null; - final int mode = mDashboardData.getSuggestionConditionMode(); - if (mode == DashboardData.HEADER_MODE_DEFAULT) { - shownSuggestions = suggestions.subList(0, - Math.min(suggestions.size(), DashboardData.DEFAULT_SUGGESTION_COUNT)); - } else if (mode != DashboardData.HEADER_MODE_COLLAPSED) { - shownSuggestions = suggestions; - } - if (shownSuggestions != null) { - for (Tile suggestion : shownSuggestions) { - final String identifier = mSuggestionFeatureProvider.getSuggestionIdentifier( - mContext, suggestion); - mMetricsFeatureProvider.action( - mContext, MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION, identifier, - getSuggestionTaggedData()); - mSuggestionsShownLogged.add(identifier); - } - } } public void setSuggestionsV2(List data) { @@ -191,7 +170,6 @@ public class DashboardAdapter extends RecyclerView.Adapter suggestions = mDashboardData.getSuggestions(); - if (suggestions == null) { - return; - } - for (Tile suggestion : suggestions) { - final String suggestionId = mSuggestionFeatureProvider.getSuggestionIdentifier( - mContext, suggestion); - if (!mSuggestionsShownLogged.contains(suggestionId)) { - mMetricsFeatureProvider.action( - mContext, MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION, suggestionId, - getSuggestionTaggedData()); - mSuggestionsShownLogged.add(suggestionId); - } - } - } - @VisibleForTesting void onBindSuggestionConditionHeader(final SuggestionAndConditionHeaderHolder holder, SuggestionConditionHeaderData data) { @@ -460,9 +405,7 @@ public class DashboardAdapter extends RecyclerView.Adapter { - if (moreSuggestions) { - logSuggestions(); - } else if (hasConditions) { + if (hasConditions) { mMetricsFeatureProvider.action(mContext, MetricsEvent.ACTION_SETTINGS_CONDITION_EXPAND, true); } @@ -587,11 +530,6 @@ public class DashboardAdapter extends RecyclerView.Adapter[] getSuggestionTaggedData() { - return SuggestionLogHelper.getSuggestionTaggedData( - mSuggestionFeatureProvider.isSmartSuggestionEnabled(mContext)); - } - public static class IconCache { private final Context mContext; private final ArrayMap mMap = new ArrayMap<>(); diff --git a/src/com/android/settings/dashboard/DashboardSummary.java b/src/com/android/settings/dashboard/DashboardSummary.java index 4810c7227b3..30a2fce8d7e 100644 --- a/src/com/android/settings/dashboard/DashboardSummary.java +++ b/src/com/android/settings/dashboard/DashboardSummary.java @@ -152,9 +152,6 @@ public class DashboardSummary extends InstrumentedFragment mMetricsFeatureProvider.hidden(getContext(), c.getMetricsConstant()); } } - if (!getActivity().isChangingConfigurations()) { - mAdapter.onPause(); - } } @Override diff --git a/src/com/android/settings/dashboard/suggestions/SuggestionAdapter.java b/src/com/android/settings/dashboard/suggestions/SuggestionAdapter.java index 2a9463fe929..8502fa7f2cf 100644 --- a/src/com/android/settings/dashboard/suggestions/SuggestionAdapter.java +++ b/src/com/android/settings/dashboard/suggestions/SuggestionAdapter.java @@ -21,7 +21,6 @@ import android.service.settings.suggestions.Suggestion; import android.support.v7.widget.RecyclerView; import android.text.TextUtils; import android.util.Log; -import android.util.Pair; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -131,7 +130,7 @@ public class SuggestionAdapter extends RecyclerView.Adapter if (!mSuggestionsShownLogged.contains(suggestionId)) { mMetricsFeatureProvider.action( mContext, MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION, suggestionId, - getSuggestionTaggedData()); + mSuggestionFeatureProvider.getLoggingTaggedData(mContext)); mSuggestionsShownLogged.add(suggestionId); } if (suggestion.remoteViews != null) { @@ -165,7 +164,7 @@ public class SuggestionAdapter extends RecyclerView.Adapter clickHandler.setOnClickListener(v -> { mMetricsFeatureProvider.action(mContext, MetricsEvent.ACTION_SETTINGS_SUGGESTION, suggestionId, - getSuggestionTaggedData()); + mSuggestionFeatureProvider.getLoggingTaggedData(mContext)); ((SettingsActivity) mContext).startSuggestion(suggestion.intent); }); } @@ -237,11 +236,6 @@ public class SuggestionAdapter extends RecyclerView.Adapter notifyDataSetChanged(); } - private Pair[] getSuggestionTaggedData() { - return SuggestionLogHelper.getSuggestionTaggedData( - mSuggestionFeatureProvider.isSmartSuggestionEnabled(mContext)); - } - public void removeSuggestion(Suggestion suggestion) { mSuggestionsV2.remove(suggestion); notifyDataSetChanged(); diff --git a/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProvider.java b/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProvider.java index 0f8bccc660d..f9114011a0e 100644 --- a/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProvider.java +++ b/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProvider.java @@ -21,6 +21,7 @@ import android.content.Context; import android.content.SharedPreferences; import android.service.settings.suggestions.Suggestion; import android.support.annotation.NonNull; +import android.util.Pair; import com.android.settingslib.drawer.Tile; import com.android.settingslib.suggestions.SuggestionParser; @@ -93,6 +94,14 @@ public interface SuggestionFeatureProvider { /** * Returns an identifier for the suggestion + * + * @deprecated in favor or {@link Suggestion#getId()} */ + @Deprecated String getSuggestionIdentifier(Context context, Tile suggestion); + + /** + * Returns common tagged data for suggestion logging. + */ + Pair[] getLoggingTaggedData(Context context); } diff --git a/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImpl.java b/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImpl.java index 02a9223fec6..783987dc8b0 100644 --- a/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImpl.java +++ b/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImpl.java @@ -170,8 +170,7 @@ public class SuggestionFeatureProviderImpl implements SuggestionFeatureProvider if (parser == null || suggestion == null || context == null) { return; } - final Pair[] taggedData = - SuggestionLogHelper.getSuggestionTaggedData(isSmartSuggestionEnabled(context)); + final Pair[] taggedData = getLoggingTaggedData(context); mMetricsFeatureProvider.action( context, MetricsEvent.ACTION_SETTINGS_DISMISS_SUGGESTION, @@ -213,6 +212,14 @@ public class SuggestionFeatureProviderImpl implements SuggestionFeatureProvider return packageName; } + @Override + public Pair[] getLoggingTaggedData(Context context) { + final boolean isSmartSuggestionEnabled = isSmartSuggestionEnabled(context); + return new Pair[]{Pair.create( + MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, + isSmartSuggestionEnabled ? 1 : 0)}; + } + @VisibleForTesting boolean hasUsedNightDisplay(Context context) { final ContentResolver cr = context.getContentResolver(); diff --git a/src/com/android/settings/dashboard/suggestions/SuggestionLogHelper.java b/src/com/android/settings/dashboard/suggestions/SuggestionLogHelper.java deleted file mode 100644 index 339392fa780..00000000000 --- a/src/com/android/settings/dashboard/suggestions/SuggestionLogHelper.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (C) 2017 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.android.settings.dashboard.suggestions; - -import android.util.Pair; - -import com.android.internal.logging.nano.MetricsProto.MetricsEvent; - -public class SuggestionLogHelper { - - public static Pair[] getSuggestionTaggedData(boolean enabled) { - return new Pair[]{ - Pair.create( - MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, enabled ? 1 : 0)}; - } -} diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardAdapterTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardAdapterTest.java index 595a9c6f739..14da5d6cd79 100644 --- a/tests/robotests/src/com/android/settings/dashboard/DashboardAdapterTest.java +++ b/tests/robotests/src/com/android/settings/dashboard/DashboardAdapterTest.java @@ -24,7 +24,6 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.reset; import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -39,12 +38,10 @@ import android.os.Bundle; import android.service.settings.suggestions.Suggestion; import android.support.v7.widget.RecyclerView; import android.util.DisplayMetrics; -import android.util.Pair; import android.view.LayoutInflater; import android.view.View; import android.widget.RelativeLayout; -import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; import com.android.settings.SettingsActivity; import com.android.settings.TestConfig; @@ -61,8 +58,6 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Answers; -import org.mockito.ArgumentCaptor; -import org.mockito.Captor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; @@ -88,12 +83,6 @@ public class DashboardAdapterTest { private Condition mCondition; @Mock private Resources mResources; - @Captor - private ArgumentCaptor mActionCategoryCaptor = ArgumentCaptor.forClass(Integer.class); - @Captor - private ArgumentCaptor mActionPackageCaptor = ArgumentCaptor.forClass(String.class); - @Captor - private ArgumentCaptor mTaggedDataCaptor = ArgumentCaptor.forClass(Pair.class); private FakeFeatureFactory mFactory; private DashboardAdapter mDashboardAdapter; private DashboardAdapter.SuggestionAndConditionHeaderHolder mSuggestionHolder; @@ -110,7 +99,7 @@ public class DashboardAdapterTest { .getSuggestionIdentifier(any(Context.class), any(Tile.class))) .thenAnswer(invocation -> { final Object[] args = invocation.getArguments(); - return ((Tile)args[1]).intent.getComponent().getPackageName(); + return ((Tile) args[1]).intent.getComponent().getPackageName(); }); when(mContext.getResources()).thenReturn(mResources); @@ -125,282 +114,6 @@ public class DashboardAdapterTest { when(mView.getTag()).thenReturn(mCondition); } - @Test - public void testSuggestionsLogs_NotExpanded() { - setupSuggestions(makeSuggestions("pkg1", "pkg2", "pkg3")); - - verify(mFactory.metricsFeatureProvider, times(2)).action( - any(Context.class), mActionCategoryCaptor.capture(), - mActionPackageCaptor.capture(), - mTaggedDataCaptor.capture()); - assertThat(mActionCategoryCaptor.getAllValues()).containsExactly( - MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION, - MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION); - assertThat(mActionPackageCaptor.getAllValues()).containsExactly("pkg1", "pkg2"); - assertThat(mTaggedDataCaptor.getAllValues()).containsExactly( - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0), - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0)); - } - - @Test - public void testSuggestionsLogs_NotExpandedAndPaused() { - setupSuggestions(makeSuggestions("pkg1", "pkg2", "pkg3")); - - mDashboardAdapter.onPause(); - - verify(mFactory.metricsFeatureProvider, times(4)).action( - any(Context.class), mActionCategoryCaptor.capture(), - mActionPackageCaptor.capture(), - mTaggedDataCaptor.capture()); - assertThat(mActionCategoryCaptor.getAllValues()).containsExactly( - MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION, - MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION, - MetricsEvent.ACTION_HIDE_SETTINGS_SUGGESTION, - MetricsEvent.ACTION_HIDE_SETTINGS_SUGGESTION); - assertThat(mActionPackageCaptor.getAllValues()).containsExactly( - "pkg1", "pkg2", "pkg1", "pkg2"); - assertThat(mTaggedDataCaptor.getAllValues()).containsExactly( - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0), - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0), - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0), - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0)); - } - - @Test - public void testSuggestionsLogs_Expanded() { - setupSuggestions(makeSuggestions("pkg1", "pkg2", "pkg3")); - - mDashboardAdapter.onBindSuggestionConditionHeader(mSuggestionHolder, mSuggestionHeaderData); - mSuggestionHolder.itemView.callOnClick(); - - verify(mFactory.metricsFeatureProvider, times(3)).action( - any(Context.class), mActionCategoryCaptor.capture(), - mActionPackageCaptor.capture(), - mTaggedDataCaptor.capture()); - assertThat(mActionCategoryCaptor.getAllValues()).containsExactly( - MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION, - MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION, - MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION); - assertThat(mActionPackageCaptor.getAllValues()).containsExactly( - "pkg1", "pkg2", "pkg3"); - assertThat(mTaggedDataCaptor.getAllValues()).containsExactly( - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0), - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0), - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0)); - } - - @Test - public void testSuggestionsLogs_ExpandedAndPaused() { - setupSuggestions(makeSuggestions("pkg1", "pkg2", "pkg3")); - - mDashboardAdapter.onBindSuggestionConditionHeader(mSuggestionHolder, mSuggestionHeaderData); - mSuggestionHolder.itemView.callOnClick(); - mDashboardAdapter.onPause(); - - verify(mFactory.metricsFeatureProvider, times(6)).action( - any(Context.class), mActionCategoryCaptor.capture(), - mActionPackageCaptor.capture(), - mTaggedDataCaptor.capture()); - assertThat(mActionCategoryCaptor.getAllValues()).containsExactly( - MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION, - MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION, - MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION, - MetricsEvent.ACTION_HIDE_SETTINGS_SUGGESTION, - MetricsEvent.ACTION_HIDE_SETTINGS_SUGGESTION, - MetricsEvent.ACTION_HIDE_SETTINGS_SUGGESTION); - assertThat(mActionPackageCaptor.getAllValues()).containsExactly( - "pkg1", "pkg2", "pkg3", "pkg1", "pkg2", "pkg3"); - assertThat(mTaggedDataCaptor.getAllValues()).containsExactly( - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0), - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0), - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0), - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0), - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0), - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0)); - } - - @Test - public void testSuggestionsLogs_ExpandedAfterPause() { - setupSuggestions(makeSuggestions("pkg1", "pkg2", "pkg3")); - - mDashboardAdapter.onPause(); - mDashboardAdapter.onBindSuggestionConditionHeader(mSuggestionHolder, mSuggestionHeaderData); - mSuggestionHolder.itemView.callOnClick(); - - verify(mFactory.metricsFeatureProvider, times(7)).action( - any(Context.class), mActionCategoryCaptor.capture(), - mActionPackageCaptor.capture(), - mTaggedDataCaptor.capture()); - assertThat(mActionCategoryCaptor.getAllValues()).containsExactly( - MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION, - MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION, - MetricsEvent.ACTION_HIDE_SETTINGS_SUGGESTION, - MetricsEvent.ACTION_HIDE_SETTINGS_SUGGESTION, - MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION, - MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION, - MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION); - assertThat(mActionPackageCaptor.getAllValues()).containsExactly( - "pkg1", "pkg2", "pkg1", "pkg2", "pkg1", "pkg2", "pkg3"); - assertThat(mTaggedDataCaptor.getAllValues()).containsExactly( - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0), - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0), - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0), - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0), - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0), - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0), - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0)); - } - - @Test - public void testSuggestionsLogs_ExpandedAfterPauseAndPausedAgain() { - setupSuggestions(makeSuggestions("pkg1", "pkg2", "pkg3")); - - mDashboardAdapter.onPause(); - mDashboardAdapter.onBindSuggestionConditionHeader(mSuggestionHolder, mSuggestionHeaderData); - mSuggestionHolder.itemView.callOnClick(); - mDashboardAdapter.onPause(); - - verify(mFactory.metricsFeatureProvider, times(10)).action( - any(Context.class), mActionCategoryCaptor.capture(), - mActionPackageCaptor.capture(), - mTaggedDataCaptor.capture()); - assertThat(mActionCategoryCaptor.getAllValues()).containsExactly( - MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION, - MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION, - MetricsEvent.ACTION_HIDE_SETTINGS_SUGGESTION, - MetricsEvent.ACTION_HIDE_SETTINGS_SUGGESTION, - MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION, - MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION, - MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION, - MetricsEvent.ACTION_HIDE_SETTINGS_SUGGESTION, - MetricsEvent.ACTION_HIDE_SETTINGS_SUGGESTION, - MetricsEvent.ACTION_HIDE_SETTINGS_SUGGESTION); - assertThat(mActionPackageCaptor.getAllValues()).containsExactly( - "pkg1", "pkg2", "pkg1", "pkg2", "pkg1", "pkg2", "pkg3", "pkg1", "pkg2", "pkg3"); - assertThat(mTaggedDataCaptor.getAllValues()).containsExactly( - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0), - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0), - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0), - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0), - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0), - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0), - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0), - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0), - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0), - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0)); - } - - @Test - public void testSuggestionsLogs_ExpandedWithLessThanDefaultShown() { - setupSuggestions(makeSuggestions("pkg1")); - - mDashboardAdapter.onBindSuggestionConditionHeader(mSuggestionHolder, mSuggestionHeaderData); - mSuggestionHolder.itemView.callOnClick(); - - verify(mFactory.metricsFeatureProvider, times(1)).action( - any(Context.class), mActionCategoryCaptor.capture(), - mActionPackageCaptor.capture(), - mTaggedDataCaptor.capture()); - assertThat(mActionCategoryCaptor.getAllValues()).containsExactly( - MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION); - assertThat(mActionPackageCaptor.getAllValues()).containsExactly("pkg1"); - assertThat(mTaggedDataCaptor.getAllValues()).containsExactly( - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0)); - } - - @Test - public void testSuggestionsLogs_ExpandedWithLessThanDefaultShownAndPaused() { - setupSuggestions(makeSuggestions("pkg1")); - - mDashboardAdapter.onBindSuggestionConditionHeader(mSuggestionHolder, mSuggestionHeaderData); - mSuggestionHolder.itemView.callOnClick(); - mDashboardAdapter.onPause(); - - verify(mFactory.metricsFeatureProvider, times(2)).action( - any(Context.class), mActionCategoryCaptor.capture(), - mActionPackageCaptor.capture(), - mTaggedDataCaptor.capture()); - assertThat(mActionCategoryCaptor.getAllValues()).containsExactly( - MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION, - MetricsEvent.ACTION_HIDE_SETTINGS_SUGGESTION); - assertThat(mActionPackageCaptor.getAllValues()).containsExactly("pkg1", "pkg1"); - assertThat(mTaggedDataCaptor.getAllValues()).containsExactly( - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0), - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0)); - } - - @Test - public void testSuggestionsLogs_ExpandedWithLessThanDefaultShownAfterPause() { - setupSuggestions(makeSuggestions("pkg1")); - - mDashboardAdapter.onPause(); - mDashboardAdapter.onBindSuggestionConditionHeader(mSuggestionHolder, mSuggestionHeaderData); - mSuggestionHolder.itemView.callOnClick(); - - verify(mFactory.metricsFeatureProvider, times(3)).action( - any(Context.class), mActionCategoryCaptor.capture(), - mActionPackageCaptor.capture(), - mTaggedDataCaptor.capture()); - assertThat(mActionCategoryCaptor.getAllValues()).containsExactly( - MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION, - MetricsEvent.ACTION_HIDE_SETTINGS_SUGGESTION, - MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION); - assertThat(mActionPackageCaptor.getAllValues()).containsExactly("pkg1", "pkg1", "pkg1"); - assertThat(mTaggedDataCaptor.getAllValues()).containsExactly( - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0), - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0), - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0)); - } - - @Test - public void testSuggestionsLogs_ExpandedWithLessThanDefaultShownAfterPauseAndPausedAgain() { - setupSuggestions(makeSuggestions("pkg1")); - mDashboardAdapter.onPause(); - mDashboardAdapter.onBindSuggestionConditionHeader(mSuggestionHolder, mSuggestionHeaderData); - mSuggestionHolder.itemView.callOnClick(); - mDashboardAdapter.onPause(); - - verify(mFactory.metricsFeatureProvider, times(4)).action( - any(Context.class), mActionCategoryCaptor.capture(), - mActionPackageCaptor.capture(), - mTaggedDataCaptor.capture()); - assertThat(mActionCategoryCaptor.getAllValues()).containsExactly( - MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION, - MetricsEvent.ACTION_HIDE_SETTINGS_SUGGESTION, - MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION, - MetricsEvent.ACTION_HIDE_SETTINGS_SUGGESTION); - assertThat(mActionPackageCaptor.getAllValues()).containsExactly( - "pkg1", "pkg1", "pkg1", "pkg1"); - assertThat(mTaggedDataCaptor.getAllValues()).containsExactly( - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0), - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0), - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0), - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0)); - } - - @Test - public void testSuggestionsLogs_SmartSuggestionEnabled() { - when(mFactory.suggestionsFeatureProvider - .isSmartSuggestionEnabled(any(Context.class))).thenReturn(true); - setupSuggestions(makeSuggestions("pkg1")); - - mDashboardAdapter.onBindSuggestionConditionHeader(mSuggestionHolder, mSuggestionHeaderData); - mSuggestionHolder.itemView.callOnClick(); - mDashboardAdapter.onPause(); - - verify(mFactory.metricsFeatureProvider, times(2)).action( - any(Context.class), mActionCategoryCaptor.capture(), - mActionPackageCaptor.capture(), - mTaggedDataCaptor.capture()); - assertThat(mActionCategoryCaptor.getAllValues()).containsExactly( - MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION, - MetricsEvent.ACTION_HIDE_SETTINGS_SUGGESTION); - assertThat(mActionPackageCaptor.getAllValues()).containsExactly("pkg1", "pkg1"); - assertThat(mTaggedDataCaptor.getAllValues()).containsExactly( - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 1), - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 1)); - } - @Test public void testSuggestionsLogs_nullSuggestionsList_shouldNotCrash() { setupSuggestions(makeSuggestions("pkg1", "pkg2", "pkg3", "pkg4", "pkg5")); @@ -618,6 +331,10 @@ public class DashboardAdapterTest { verify(data).setAdapter(any(ConditionAdapter.class)); } + /** + * @deprecated in favor of {@link #makeSuggestionsV2(String...)} + */ + @Deprecated private List makeSuggestions(String... pkgNames) { final List suggestions = new ArrayList<>(); for (String pkgName : pkgNames) { diff --git a/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionAdapterTest.java b/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionAdapterTest.java index d43a1692abf..825b388f018 100644 --- a/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionAdapterTest.java +++ b/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionAdapterTest.java @@ -39,6 +39,7 @@ import android.widget.LinearLayout; import android.widget.RemoteViews; import android.widget.TextView; +import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; import com.android.settings.SettingsActivity; import com.android.settings.TestConfig; @@ -66,7 +67,7 @@ public class SuggestionAdapterTest { @Mock(answer = Answers.RETURNS_DEEP_STUBS) private SettingsActivity mActivity; - + private FakeFeatureFactory mFeatureFactory; private Context mContext; private SuggestionAdapter mSuggestionAdapter; private DashboardAdapter.DashboardItemHolder mSuggestionHolder; @@ -79,7 +80,7 @@ public class SuggestionAdapterTest { public void setUp() { MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application; - FakeFeatureFactory.setupForTest(mActivity); + mFeatureFactory = FakeFeatureFactory.setupForTest(mActivity); final Tile suggestion1 = new Tile(); final Tile suggestion2 = new Tile(); @@ -171,6 +172,24 @@ public class SuggestionAdapterTest { verify(view).setOnClickListener(any(View.OnClickListener.class)); } + @Test + public void onBindViewHolder_shouldLog() { + final View view = spy(LayoutInflater.from(mContext).inflate( + R.layout.suggestion_tile, new LinearLayout(mContext), true)); + mSuggestionHolder = new DashboardAdapter.DashboardItemHolder(view); + mSuggestionAdapter = new SuggestionAdapter(mContext, null /* suggestionV1*/, + mOneSuggestionV2, new ArrayList<>()); + + // Bind twice + mSuggestionAdapter.onBindViewHolder(mSuggestionHolder, 0); + mSuggestionAdapter.onBindViewHolder(mSuggestionHolder, 0); + + // Log once + verify(mFeatureFactory.metricsFeatureProvider).action( + mContext, MetricsProto.MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION, + mOneSuggestionV2.get(0).getId()); + } + @Test public void onBindViewHolder_shouldInflateRemoteView() { List packages = makeSuggestions("pkg1"); diff --git a/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImplTest.java index 69b76fa8a31..5e567144a2e 100644 --- a/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImplTest.java +++ b/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImplTest.java @@ -22,6 +22,7 @@ import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.never; +import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyZeroInteractions; import static org.mockito.Mockito.when; @@ -313,4 +314,19 @@ public class SuggestionFeatureProviderImplTest { new ComponentName(mContext, NightDisplaySuggestionActivity.class); assertThat(mProvider.isSuggestionComplete(mContext, componentName)).isFalse(); } + + @Test + public void testGetSmartSuggestionEnabledTaggedData_disabled() { + assertThat(mProvider.getLoggingTaggedData(mContext)).asList().containsExactly( + Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0)); + } + + @Test + public void testGetSmartSuggestionEnabledTaggedData_enabled() { + final SuggestionFeatureProvider provider = spy(mProvider); + when(provider.isSmartSuggestionEnabled(any(Context.class))).thenReturn(true); + + assertThat(provider.getLoggingTaggedData(mContext)).asList().containsExactly( + Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 1)); + } } diff --git a/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionLogHelperTest.java b/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionLogHelperTest.java deleted file mode 100644 index 01d253f7fb3..00000000000 --- a/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionLogHelperTest.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (C) 2017 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.settings.dashboard.suggestions; - -import static com.google.common.truth.Truth.assertThat; - -import android.util.Pair; - -import com.android.internal.logging.nano.MetricsProto.MetricsEvent; -import com.android.settings.TestConfig; -import com.android.settings.testutils.SettingsRobolectricTestRunner; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.robolectric.annotation.Config; - -@RunWith(SettingsRobolectricTestRunner.class) -@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) -public class SuggestionLogHelperTest { - - @Test - public void testGetSmartSuggestionEnabledTaggedData_disabled() { - assertThat(SuggestionLogHelper.getSuggestionTaggedData(false)).asList().containsExactly( - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 0)); - } - - @Test - public void testGetSmartSuggestionEnabledTaggedData_enabled() { - assertThat(SuggestionLogHelper.getSuggestionTaggedData(true)).asList().containsExactly( - Pair.create(MetricsEvent.FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED, 1)); - } -} -