From 0ec6b02fe44ece54e8b4d0e97fda8f2b133b50e2 Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Tue, 30 Jan 2018 15:38:48 -0800 Subject: [PATCH] Re-add isSuggestionEnabled check It was accidentally removed previously Test: robotest Change-Id: I5b7707e746d6b825d835a007727b29c9a81a7fc1 --- .../settings/dashboard/DashboardSummary.java | 22 ++++++++++----- .../SuggestionFeatureProvider.java | 2 +- .../SuggestionFeatureProviderImpl.java | 2 +- .../system/SystemDashboardFragment.java | 1 - .../dashboard/DashboardSummaryTest.java | 27 +++++++++++++++++++ .../SuggestionFeatureProviderImplTest.java | 4 +-- 6 files changed, 46 insertions(+), 12 deletions(-) diff --git a/src/com/android/settings/dashboard/DashboardSummary.java b/src/com/android/settings/dashboard/DashboardSummary.java index fc82d41f7aa..f86867b67de 100644 --- a/src/com/android/settings/dashboard/DashboardSummary.java +++ b/src/com/android/settings/dashboard/DashboardSummary.java @@ -39,6 +39,7 @@ import com.android.settings.dashboard.conditional.ConditionManager.ConditionList import com.android.settings.dashboard.conditional.FocusRecyclerView; import com.android.settings.dashboard.conditional.FocusRecyclerView.FocusListener; import com.android.settings.dashboard.suggestions.SuggestionDismissController; +import com.android.settings.dashboard.suggestions.SuggestionFeatureProvider; import com.android.settings.overlay.FeatureFactory; import com.android.settings.widget.ActionBarShadowController; import com.android.settingslib.drawer.CategoryKey; @@ -86,10 +87,14 @@ public class DashboardSummary extends InstrumentedFragment public void onAttach(Context context) { super.onAttach(context); Log.d(TAG, "Creating SuggestionControllerMixin"); - mSuggestionControllerMixin = new SuggestionControllerMixin(context, this /* host */, - getLifecycle(), FeatureFactory.getFactory(context) - .getSuggestionFeatureProvider(context) - .getSuggestionServiceComponent()); + final SuggestionFeatureProvider suggestionFeatureProvider = FeatureFactory + .getFactory(context) + .getSuggestionFeatureProvider(context); + if (suggestionFeatureProvider.isSuggestionEnabled(context)) { + mSuggestionControllerMixin = new SuggestionControllerMixin(context, this /* host */, + getLifecycle(), suggestionFeatureProvider + .getSuggestionServiceComponent()); + } } @Override @@ -202,12 +207,12 @@ public class DashboardSummary extends InstrumentedFragment mDashboard.setItemAnimator(new DashboardItemAnimator()); if (mDashboardFeatureProvider.useSuggestionUiV2()) { mAdapterV2 = new DashboardAdapterV2(getContext(), bundle, - mConditionManager.getConditions(), mSuggestionControllerMixin, getLifecycle()); + mConditionManager.getConditions(), mSuggestionControllerMixin, getLifecycle()); mDashboard.setAdapter(mAdapterV2); mSummaryLoader.setSummaryConsumer(mAdapterV2); } else { mAdapter = new DashboardAdapter(getContext(), bundle, mConditionManager.getConditions(), - mSuggestionControllerMixin, this /* SuggestionDismissController.Callback */); + mSuggestionControllerMixin, this /* SuggestionDismissController.Callback */); mDashboard.setAdapter(mAdapter); mSummaryLoader.setSummaryConsumer(mAdapter); } @@ -302,6 +307,9 @@ public class DashboardSummary extends InstrumentedFragment CategoryKey.CATEGORY_HOMEPAGE); mSummaryLoader.updateSummaryToCache(category); mStagingCategory = category; + if (mSuggestionControllerMixin == null) { + return; + } if (mSuggestionControllerMixin.isSuggestionLoaded()) { Log.d(TAG, "Suggestion has loaded, setting suggestion/category"); ThreadUtils.postOnMainThread(() -> { @@ -321,7 +329,7 @@ public class DashboardSummary extends InstrumentedFragment Log.d(TAG, "Suggestion NOT loaded, delaying setCategory by " + MAX_WAIT_MILLIS + "ms"); if (mDashboardFeatureProvider.useSuggestionUiV2()) { mHandler.postDelayed(() - -> mAdapterV2.setCategory(mStagingCategory), MAX_WAIT_MILLIS); + -> mAdapterV2.setCategory(mStagingCategory), MAX_WAIT_MILLIS); } else { mHandler.postDelayed(() -> mAdapter.setCategory(mStagingCategory), MAX_WAIT_MILLIS); } diff --git a/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProvider.java b/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProvider.java index b7000490e88..f913085088c 100644 --- a/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProvider.java +++ b/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProvider.java @@ -34,7 +34,7 @@ public interface SuggestionFeatureProvider { /** * Whether or not the whole suggestion feature is enabled. */ - boolean isSuggestionV2Enabled(Context context); + boolean isSuggestionEnabled(Context context); /** * Returns the component name for SuggestionService. diff --git a/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImpl.java b/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImpl.java index 4e5f6887f02..8523273252d 100644 --- a/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImpl.java +++ b/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImpl.java @@ -54,7 +54,7 @@ public class SuggestionFeatureProviderImpl implements SuggestionFeatureProvider private final MetricsFeatureProvider mMetricsFeatureProvider; @Override - public boolean isSuggestionV2Enabled(Context context) { + public boolean isSuggestionEnabled(Context context) { final ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); return !am.isLowRamDevice(); diff --git a/src/com/android/settings/system/SystemDashboardFragment.java b/src/com/android/settings/system/SystemDashboardFragment.java index 323a2d42cd0..88cafb042cc 100644 --- a/src/com/android/settings/system/SystemDashboardFragment.java +++ b/src/com/android/settings/system/SystemDashboardFragment.java @@ -17,7 +17,6 @@ package com.android.settings.system; import android.content.Context; import android.os.Bundle; -import android.os.UserManager; import android.provider.SearchIndexableResource; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceGroup; diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardSummaryTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardSummaryTest.java index 59823ec45bf..2a7b829c17e 100644 --- a/tests/robotests/src/com/android/settings/dashboard/DashboardSummaryTest.java +++ b/tests/robotests/src/com/android/settings/dashboard/DashboardSummaryTest.java @@ -16,6 +16,7 @@ package com.android.settings.dashboard; +import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.nullable; import static org.mockito.Mockito.any; import static org.mockito.Mockito.doNothing; @@ -34,9 +35,11 @@ import android.support.v7.widget.LinearLayoutManager; import com.android.settings.TestConfig; import com.android.settings.dashboard.conditional.ConditionManager; import com.android.settings.dashboard.conditional.FocusRecyclerView; +import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settingslib.drawer.CategoryKey; import com.android.settingslib.drawer.DashboardCategory; +import com.android.settingslib.suggestions.SuggestionControllerMixin; import org.junit.Before; import org.junit.Test; @@ -67,10 +70,12 @@ public class DashboardSummaryTest { private Context mContext; private DashboardSummary mSummary; + private FakeFeatureFactory mFeatureFactory; @Before public void setUp() { MockitoAnnotations.initMocks(this); + mFeatureFactory = FakeFeatureFactory.setupForTest(); mContext = RuntimeEnvironment.application; mSummary = spy(new DashboardSummary()); ReflectionHelpers.setField(mSummary, "mAdapter", mAdapter); @@ -82,6 +87,28 @@ public class DashboardSummaryTest { ReflectionHelpers.setField(mSummary, "mSummaryLoader", mSummaryLoader); } + @Test + public void onAttach_suggestionDisabled_shouldNotStartSuggestionControllerMixin() { + when(mFeatureFactory.suggestionsFeatureProvider.isSuggestionEnabled(any(Context.class))) + .thenReturn(false); + + mSummary.onAttach(mContext); + final SuggestionControllerMixin mixin = ReflectionHelpers + .getField(mSummary, "mSuggestionControllerMixin"); + assertThat(mixin).isNull(); + } + + @Test + public void onAttach_suggestionEnabled_shouldStartSuggestionControllerMixin() { + when(mFeatureFactory.suggestionsFeatureProvider.isSuggestionEnabled(any(Context.class))) + .thenReturn(true); + + mSummary.onAttach(mContext); + final SuggestionControllerMixin mixin = ReflectionHelpers + .getField(mSummary, "mSuggestionControllerMixin"); + assertThat(mixin).isNotNull(); + } + @Test public void updateCategory_shouldGetCategoryFromFeatureProvider() { doReturn(mock(Activity.class)).when(mSummary).getActivity(); 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 54af3084d9a..e9c8805ec30 100644 --- a/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImplTest.java +++ b/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImplTest.java @@ -114,13 +114,13 @@ public class SuggestionFeatureProviderImplTest { public void isSuggestionEnabled_isLowMemoryDevice_shouldReturnFalse() { when(mActivityManager.isLowRamDevice()).thenReturn(true); - assertThat(mProvider.isSuggestionV2Enabled(mContext)).isFalse(); + assertThat(mProvider.isSuggestionEnabled(mContext)).isFalse(); } @Test public void isSuggestionV2Enabled_isNotLowMemoryDevice_shouldReturnTrue() { when(mActivityManager.isLowRamDevice()).thenReturn(false); - assertThat(mProvider.isSuggestionV2Enabled(mContext)).isTrue(); + assertThat(mProvider.isSuggestionEnabled(mContext)).isTrue(); } @Test