Plumb SuggestionControllerMixin to DismissController.
- The SuggestionControllerMixin is needed to dismiss a suggestion. - When swipe a suggestion, SuggestionControllerMixin is called, which then calls API in SuggestionService to dismiss a suggestion. Bug: 65065268 Test: robotests Change-Id: I6a0c5823d60b995ab4a36b1c91777f5cd31a500d
This commit is contained in:
@@ -120,7 +120,7 @@ public class DashboardAdapterTest {
|
||||
mConditionList = new ArrayList<>();
|
||||
mConditionList.add(mCondition);
|
||||
when(mCondition.shouldShow()).thenReturn(true);
|
||||
mDashboardAdapter = new DashboardAdapter(mContext, null, mConditionList, null, null);
|
||||
mDashboardAdapter = new DashboardAdapter(mContext, null, mConditionList, null, null, null);
|
||||
mSuggestionHeaderData = new DashboardData.SuggestionConditionHeaderData(mConditionList, 1);
|
||||
when(mView.getTag()).thenReturn(mCondition);
|
||||
}
|
||||
@@ -419,7 +419,7 @@ public class DashboardAdapterTest {
|
||||
@Test
|
||||
public void testSuggestionDismissed_notOnlySuggestion_updateSuggestionOnly() {
|
||||
final DashboardAdapter adapter =
|
||||
spy(new DashboardAdapter(mContext, null, null, null, null));
|
||||
spy(new DashboardAdapter(mContext, null, null, null, null, null));
|
||||
final List<Tile> suggestions = makeSuggestions("pkg1", "pkg2", "pkg3");
|
||||
adapter.setCategoriesAndSuggestions(null /* category */, suggestions);
|
||||
|
||||
@@ -457,7 +457,8 @@ public class DashboardAdapterTest {
|
||||
final List<Tile> suggestions =
|
||||
makeSuggestions("pkg1", "pkg2", "pkg3", "pkg4");
|
||||
final DashboardAdapter adapter = spy(new DashboardAdapter(mContext, null /*savedInstance */,
|
||||
null /* conditions */, null /* suggestionParser */, null /* callback */));
|
||||
null /* conditions */, null /* suggestionParser */,
|
||||
null /* suggestionControllerMixin */, null /* callback */));
|
||||
adapter.setCategoriesAndSuggestions(null /* category */, suggestions);
|
||||
adapter.onBindConditionAndSuggestion(
|
||||
holder, DashboardAdapter.SUGGESTION_CONDITION_HEADER_POSITION);
|
||||
@@ -474,7 +475,7 @@ public class DashboardAdapterTest {
|
||||
@Test
|
||||
public void testSuggestionDismissed_onlySuggestion_updateDashboardData() {
|
||||
DashboardAdapter adapter =
|
||||
spy(new DashboardAdapter(mContext, null, null, null, null));
|
||||
spy(new DashboardAdapter(mContext, null, null, null, null, null));
|
||||
final List<Tile> suggestions = makeSuggestions("pkg1");
|
||||
adapter.setCategoriesAndSuggestions(null /* category */, suggestions);
|
||||
final DashboardData dashboardData = adapter.mDashboardData;
|
||||
@@ -534,7 +535,7 @@ public class DashboardAdapterTest {
|
||||
|
||||
@Test
|
||||
public void testBindConditionAndSuggestion_shouldSetSuggestionAdapterAndNoCrash() {
|
||||
mDashboardAdapter = new DashboardAdapter(mContext, null, null, null, null);
|
||||
mDashboardAdapter = new DashboardAdapter(mContext, null, null, null, null, null);
|
||||
final List<Tile> suggestions = makeSuggestions("pkg1");
|
||||
final DashboardCategory category = mock(DashboardCategory.class);
|
||||
final List<Tile> tiles = new ArrayList<>();
|
||||
@@ -561,7 +562,7 @@ public class DashboardAdapterTest {
|
||||
|
||||
@Test
|
||||
public void testBindConditionAndSuggestion_v2_shouldSetSuggestionAdapterAndNoCrash() {
|
||||
mDashboardAdapter = new DashboardAdapter(mContext, null, null, null, null);
|
||||
mDashboardAdapter = new DashboardAdapter(mContext, null, null, null, null, null);
|
||||
final List<Suggestion> suggestions = makeSuggestionsV2("pkg1");
|
||||
final DashboardCategory category = mock(DashboardCategory.class);
|
||||
final List<Tile> tiles = new ArrayList<>();
|
||||
@@ -592,7 +593,8 @@ public class DashboardAdapterTest {
|
||||
savedInstance.putInt(DashboardAdapter.STATE_SUGGESTION_CONDITION_MODE,
|
||||
DashboardData.HEADER_MODE_FULLY_EXPANDED);
|
||||
mDashboardAdapter = new DashboardAdapter(mContext, savedInstance, mConditionList,
|
||||
null /* SuggestionParser */, null /* SuggestionDismissController.Callback */);
|
||||
null /* SuggestionParser */, null /* suggestionControllerMixin */,
|
||||
null /* SuggestionDismissController.Callback */);
|
||||
|
||||
final List<Tile> suggestions = new ArrayList<>();
|
||||
final DashboardCategory category = mock(DashboardCategory.class);
|
||||
|
@@ -26,6 +26,7 @@ import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.content.Context;
|
||||
import android.service.settings.suggestions.Suggestion;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.support.v7.widget.helper.ItemTouchHelper;
|
||||
|
||||
@@ -55,6 +56,8 @@ public class SuggestionDismissControllerTest {
|
||||
@Mock
|
||||
private SuggestionParser mSuggestionParser;
|
||||
@Mock
|
||||
private SuggestionControllerMixin mSuggestionControllerMixin;
|
||||
@Mock
|
||||
private SuggestionDismissController.Callback mCallback;
|
||||
|
||||
private FakeFeatureFactory mFactory;
|
||||
@@ -69,7 +72,7 @@ public class SuggestionDismissControllerTest {
|
||||
when(mRecyclerView.getResources().getDimension(anyInt())).thenReturn(50F);
|
||||
|
||||
mController = new SuggestionDismissController(mContext, mRecyclerView,
|
||||
mSuggestionParser, mCallback);
|
||||
mSuggestionControllerMixin, mSuggestionParser, mCallback);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -114,4 +117,17 @@ public class SuggestionDismissControllerTest {
|
||||
eq(mContext), eq(mSuggestionParser), nullable(Tile.class));
|
||||
verify(mCallback).onSuggestionDismissed(nullable(Tile.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onSwiped_v2_shouldTriggerDismissSuggestion() {
|
||||
final RecyclerView.ViewHolder vh = mock(RecyclerView.ViewHolder.class);
|
||||
when(mCallback.getSuggestionAt(anyInt())).thenReturn(
|
||||
new Suggestion.Builder("id").build());
|
||||
|
||||
mController.onSwiped(vh, ItemTouchHelper.START);
|
||||
|
||||
verify(mFactory.suggestionsFeatureProvider).dismissSuggestion(
|
||||
eq(mContext), eq(mSuggestionControllerMixin), nullable(Suggestion.class));
|
||||
verify(mCallback).onSuggestionDismissed(nullable(Suggestion.class));
|
||||
}
|
||||
}
|
||||
|
@@ -35,11 +35,12 @@ import android.content.SharedPreferences;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.hardware.fingerprint.FingerprintManager;
|
||||
import android.provider.Settings.Secure;
|
||||
import android.service.settings.suggestions.Suggestion;
|
||||
import android.util.FeatureFlagUtils;
|
||||
import android.util.Pair;
|
||||
|
||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||
import com.android.internal.logging.nano.MetricsProto;
|
||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.Settings.AmbientDisplayPickupSuggestionActivity;
|
||||
import com.android.settings.Settings.AmbientDisplaySuggestionActivity;
|
||||
@@ -95,6 +96,8 @@ public class SuggestionFeatureProviderImplTest {
|
||||
@Mock
|
||||
private SuggestionParser mSuggestionParser;
|
||||
@Mock
|
||||
private SuggestionControllerMixin mSuggestionControllerMixin;
|
||||
@Mock
|
||||
private Tile mSuggestion;
|
||||
@Mock
|
||||
private ActivityManager mActivityManager;
|
||||
@@ -325,13 +328,23 @@ public class SuggestionFeatureProviderImplTest {
|
||||
|
||||
@Test
|
||||
public void dismissSuggestion_noParserOrSuggestion_noop() {
|
||||
mProvider.dismissSuggestion(mContext, null, null);
|
||||
mProvider.dismissSuggestion(mContext, null, (Tile) null);
|
||||
mProvider.dismissSuggestion(mContext, mSuggestionParser, null);
|
||||
mProvider.dismissSuggestion(mContext, null, mSuggestion);
|
||||
|
||||
verifyZeroInteractions(mFactory.metricsFeatureProvider);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void dismissSuggestion_noControllerOrSuggestion_noop() {
|
||||
mProvider.dismissSuggestion(mContext, null, (Suggestion) null);
|
||||
mProvider.dismissSuggestion(mContext, mSuggestionControllerMixin, null);
|
||||
mProvider.dismissSuggestion(mContext, null, new Suggestion.Builder("id").build());
|
||||
|
||||
verifyZeroInteractions(mFactory.metricsFeatureProvider);
|
||||
verifyZeroInteractions(mSuggestionControllerMixin);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getSuggestionIdentifier_samePackage_returnClassName() {
|
||||
final Tile suggestion = new Tile();
|
||||
|
Reference in New Issue
Block a user