Loading src/com/android/settings/dashboard/DashboardAdapter.java +5 −3 Original line number Diff line number Diff line Loading @@ -62,8 +62,9 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash private static final String STATE_SUGGESTION_LIST = "suggestion_list"; private static final String STATE_CATEGORY_LIST = "category_list"; private static final String STATE_SUGGESTIONS_SHOWN_LOGGED = "suggestions_shown_logged"; private static final String STATE_SUGGESTION_CONDITION_MODE = "suggestion_condition_mode"; @VisibleForTesting static final String STATE_SUGGESTION_CONDITION_MODE = "suggestion_condition_mode"; @VisibleForTesting static final int SUGGESTION_CONDITION_HEADER_POSITION = 0; Loading Loading @@ -446,8 +447,9 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash int position) { // If there is suggestions to show, it will be at position 0 as we don't show the suggestion // header anymore. if (position == (SUGGESTION_CONDITION_HEADER_POSITION) && mDashboardData.getSuggestions() != null) { final List<Tile> suggestions = mDashboardData.getSuggestions(); if (position == SUGGESTION_CONDITION_HEADER_POSITION && suggestions != null && suggestions.size() > 0) { mSuggestionAdapter = new SuggestionAdapter(mContext, (List<Tile>) mDashboardData.getItemEntityByPosition(position), mSuggestionsShownLogged); mSuggestionDismissHandler = new SuggestionDismissController(mContext, Loading tests/robotests/src/com/android/settings/dashboard/DashboardAdapterTest.java +40 −4 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Icon; import android.os.Bundle; import android.support.v7.widget.RecyclerView; import android.util.DisplayMetrics; import android.view.LayoutInflater; Loading @@ -48,6 +49,7 @@ import com.android.settings.R; import com.android.settings.SettingsActivity; import com.android.settings.TestConfig; 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.testutils.FakeFeatureFactory; import com.android.settings.testutils.SettingsRobolectricTestRunner; Loading Loading @@ -97,6 +99,7 @@ public class DashboardAdapterTest { private DashboardAdapter mDashboardAdapter; private DashboardAdapter.SuggestionAndConditionHeaderHolder mSuggestionHolder; private DashboardData.SuggestionConditionHeaderData mSuggestionHeaderData; private List<Condition> mConditionList; @Before public void setUp() { Loading @@ -115,10 +118,11 @@ public class DashboardAdapterTest { when(mResources.getQuantityString(any(int.class), any(int.class), any())) .thenReturn(""); List<Condition> conditions = new ArrayList<>(); conditions.add(mCondition); mDashboardAdapter = new DashboardAdapter(mContext, null, conditions, null, null); mSuggestionHeaderData = new DashboardData.SuggestionConditionHeaderData(conditions, 1); mConditionList = new ArrayList<>(); mConditionList.add(mCondition); when(mCondition.shouldShow()).thenReturn(true); mDashboardAdapter = new DashboardAdapter(mContext, null, mConditionList, null, null); mSuggestionHeaderData = new DashboardData.SuggestionConditionHeaderData(mConditionList, 1); when(mView.getTag()).thenReturn(mCondition); } Loading Loading @@ -392,6 +396,38 @@ public class DashboardAdapterTest { // should not crash } @Test public void testBindConditionAndSuggestion_emptySuggestion_shouldSetConditionAdapter() { final Bundle savedInstance = new Bundle(); savedInstance.putInt(DashboardAdapter.STATE_SUGGESTION_CONDITION_MODE, DashboardData.HEADER_MODE_FULLY_EXPANDED); mDashboardAdapter = new DashboardAdapter(mContext, savedInstance, mConditionList, null /* SuggestionParser */, null /* SuggestionDismissController.Callback */); final List<Tile> suggestions = new ArrayList<>(); final List<DashboardCategory> categories = new ArrayList<>(); final DashboardCategory category = mock(DashboardCategory.class); categories.add(category); final List<Tile> tiles = new ArrayList<>(); tiles.add(mock(Tile.class)); category.tiles = tiles; mDashboardAdapter.setCategoriesAndSuggestions(categories, suggestions); final RecyclerView data = mock(RecyclerView.class); when(data.getResources()).thenReturn(mResources); when(data.getContext()).thenReturn(mContext); when(mResources.getDisplayMetrics()).thenReturn(mock(DisplayMetrics.class)); final View itemView = mock(View.class); when(itemView.findViewById(R.id.data)).thenReturn(data); final DashboardAdapter.SuggestionAndConditionContainerHolder holder = new DashboardAdapter.SuggestionAndConditionContainerHolder(itemView); mDashboardAdapter.onBindConditionAndSuggestion( holder, DashboardAdapter.SUGGESTION_CONDITION_HEADER_POSITION); verify(data).setAdapter(any(ConditionAdapter.class)); } private List<Tile> makeSuggestions(String... pkgNames) { final List<Tile> suggestions = new ArrayList<>(); for (String pkgName : pkgNames) { Loading Loading
src/com/android/settings/dashboard/DashboardAdapter.java +5 −3 Original line number Diff line number Diff line Loading @@ -62,8 +62,9 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash private static final String STATE_SUGGESTION_LIST = "suggestion_list"; private static final String STATE_CATEGORY_LIST = "category_list"; private static final String STATE_SUGGESTIONS_SHOWN_LOGGED = "suggestions_shown_logged"; private static final String STATE_SUGGESTION_CONDITION_MODE = "suggestion_condition_mode"; @VisibleForTesting static final String STATE_SUGGESTION_CONDITION_MODE = "suggestion_condition_mode"; @VisibleForTesting static final int SUGGESTION_CONDITION_HEADER_POSITION = 0; Loading Loading @@ -446,8 +447,9 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash int position) { // If there is suggestions to show, it will be at position 0 as we don't show the suggestion // header anymore. if (position == (SUGGESTION_CONDITION_HEADER_POSITION) && mDashboardData.getSuggestions() != null) { final List<Tile> suggestions = mDashboardData.getSuggestions(); if (position == SUGGESTION_CONDITION_HEADER_POSITION && suggestions != null && suggestions.size() > 0) { mSuggestionAdapter = new SuggestionAdapter(mContext, (List<Tile>) mDashboardData.getItemEntityByPosition(position), mSuggestionsShownLogged); mSuggestionDismissHandler = new SuggestionDismissController(mContext, Loading
tests/robotests/src/com/android/settings/dashboard/DashboardAdapterTest.java +40 −4 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Icon; import android.os.Bundle; import android.support.v7.widget.RecyclerView; import android.util.DisplayMetrics; import android.view.LayoutInflater; Loading @@ -48,6 +49,7 @@ import com.android.settings.R; import com.android.settings.SettingsActivity; import com.android.settings.TestConfig; 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.testutils.FakeFeatureFactory; import com.android.settings.testutils.SettingsRobolectricTestRunner; Loading Loading @@ -97,6 +99,7 @@ public class DashboardAdapterTest { private DashboardAdapter mDashboardAdapter; private DashboardAdapter.SuggestionAndConditionHeaderHolder mSuggestionHolder; private DashboardData.SuggestionConditionHeaderData mSuggestionHeaderData; private List<Condition> mConditionList; @Before public void setUp() { Loading @@ -115,10 +118,11 @@ public class DashboardAdapterTest { when(mResources.getQuantityString(any(int.class), any(int.class), any())) .thenReturn(""); List<Condition> conditions = new ArrayList<>(); conditions.add(mCondition); mDashboardAdapter = new DashboardAdapter(mContext, null, conditions, null, null); mSuggestionHeaderData = new DashboardData.SuggestionConditionHeaderData(conditions, 1); mConditionList = new ArrayList<>(); mConditionList.add(mCondition); when(mCondition.shouldShow()).thenReturn(true); mDashboardAdapter = new DashboardAdapter(mContext, null, mConditionList, null, null); mSuggestionHeaderData = new DashboardData.SuggestionConditionHeaderData(mConditionList, 1); when(mView.getTag()).thenReturn(mCondition); } Loading Loading @@ -392,6 +396,38 @@ public class DashboardAdapterTest { // should not crash } @Test public void testBindConditionAndSuggestion_emptySuggestion_shouldSetConditionAdapter() { final Bundle savedInstance = new Bundle(); savedInstance.putInt(DashboardAdapter.STATE_SUGGESTION_CONDITION_MODE, DashboardData.HEADER_MODE_FULLY_EXPANDED); mDashboardAdapter = new DashboardAdapter(mContext, savedInstance, mConditionList, null /* SuggestionParser */, null /* SuggestionDismissController.Callback */); final List<Tile> suggestions = new ArrayList<>(); final List<DashboardCategory> categories = new ArrayList<>(); final DashboardCategory category = mock(DashboardCategory.class); categories.add(category); final List<Tile> tiles = new ArrayList<>(); tiles.add(mock(Tile.class)); category.tiles = tiles; mDashboardAdapter.setCategoriesAndSuggestions(categories, suggestions); final RecyclerView data = mock(RecyclerView.class); when(data.getResources()).thenReturn(mResources); when(data.getContext()).thenReturn(mContext); when(mResources.getDisplayMetrics()).thenReturn(mock(DisplayMetrics.class)); final View itemView = mock(View.class); when(itemView.findViewById(R.id.data)).thenReturn(data); final DashboardAdapter.SuggestionAndConditionContainerHolder holder = new DashboardAdapter.SuggestionAndConditionContainerHolder(itemView); mDashboardAdapter.onBindConditionAndSuggestion( holder, DashboardAdapter.SUGGESTION_CONDITION_HEADER_POSITION); verify(data).setAdapter(any(ConditionAdapter.class)); } private List<Tile> makeSuggestions(String... pkgNames) { final List<Tile> suggestions = new ArrayList<>(); for (String pkgName : pkgNames) { Loading