Loading src/com/android/documentsui/dirlist/AppsRowItemData.java +7 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import androidx.annotation.Nullable; import com.android.documentsui.ActionHandler; import com.android.documentsui.base.RootInfo; import com.android.documentsui.base.UserId; import com.android.documentsui.sidebar.AppItem; import com.android.documentsui.sidebar.Item; import com.android.documentsui.sidebar.RootItem; Loading @@ -35,11 +36,13 @@ import com.android.documentsui.sidebar.RootItem; */ public abstract class AppsRowItemData { private final UserId mUserId; private final String mTitle; private final @Nullable String mSummary; protected final ActionHandler mActionHandler; public AppsRowItemData(Item item, ActionHandler actionHandler, boolean shouldShowSummary) { mUserId = item.userId; mTitle = item.title; mSummary = shouldShowSummary ? item.getSummary() : null; mActionHandler = actionHandler; Loading @@ -49,6 +52,10 @@ public abstract class AppsRowItemData { return mTitle; } public final UserId getUserId() { return mUserId; } /** * Get the summary from {@link Item}. */ Loading src/com/android/documentsui/dirlist/AppsRowManager.java +9 −4 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import com.android.documentsui.ActionHandler; import com.android.documentsui.BaseActivity; import com.android.documentsui.R; import com.android.documentsui.base.State; import com.android.documentsui.base.UserId; import com.android.documentsui.dirlist.AppsRowItemData.AppData; import com.android.documentsui.dirlist.AppsRowItemData.RootData; import com.android.documentsui.sidebar.AppItem; Loading Loading @@ -90,18 +91,22 @@ public class AppsRowManager { return; } appsRowLayout.setVisibility(View.VISIBLE); final LinearLayout appsGroup = activity.findViewById(R.id.apps_group); appsGroup.removeAllViews(); final LayoutInflater inflater = activity.getLayoutInflater(); final UserId selectedUser = activity.getSelectedUser(); for (AppsRowItemData data : mDataList) { if (selectedUser.equals(data.getUserId())) { View item = inflater.inflate(R.layout.apps_item, appsGroup, false); bindView(item, data); appsGroup.addView(item); } } appsRowLayout.setVisibility(appsGroup.getChildCount() > 0 ? View.VISIBLE : View.GONE); } private void bindView(View view, AppsRowItemData data) { final ImageView app_icon = view.findViewById(R.id.app_icon); final TextView title = view.findViewById(android.R.id.title); Loading tests/common/com/android/documentsui/testing/TestProvidersAccess.java +2 −1 Original line number Diff line number Diff line Loading @@ -52,7 +52,8 @@ public class TestProvidersAccess implements ProvidersAccess { public static final RootInfo SD_CARD; static { UserId userId = USER_ID; UserId userId = TestProvidersAccess.USER_ID; DOWNLOADS = new RootInfo() {{ flags = Root.FLAG_SUPPORTS_CREATE; }}; Loading tests/unit/com/android/documentsui/dirlist/AppsRowManagerTest.java +56 −0 Original line number Diff line number Diff line Loading @@ -76,6 +76,7 @@ public class AppsRowManagerTest { when(mActivity.getDisplayState()).thenReturn(mState); when(mActivity.findViewById(R.id.apps_row)).thenReturn(mAppsRow); when(mActivity.findViewById(R.id.apps_group)).thenReturn(mAppsGroup); when(mActivity.getSelectedUser()).thenReturn(TestProvidersAccess.USER_ID); } @Test Loading Loading @@ -132,6 +133,43 @@ public class AppsRowManagerTest { assertEquals(1, mAppsGroup.getChildCount()); } @Test public void testUpdateView_showSelectedUserItems() { mState.action = State.ACTION_GET_CONTENT; mState.stack.changeRoot(TestProvidersAccess.RECENTS); final List<Item> rootList = new ArrayList<>(); rootList.add(new RootItem(TestProvidersAccess.INSPECTOR, mActionHandler)); rootList.add(new RootItem(TestProvidersAccess.AUDIO, mActionHandler)); rootList.add(new RootItem(TestProvidersAccess.HAMMY, mActionHandler)); rootList.add(new RootItem(TestProvidersAccess.IMAGE, mActionHandler)); rootList.add(new RootItem(TestProvidersAccess.OtherUser.DOWNLOADS, mActionHandler)); rootList.add(new RootItem(TestProvidersAccess.OtherUser.PICKLES, mActionHandler)); mAppsRowManager.updateList(rootList); mAppsRowManager.updateView(mActivity); assertEquals(View.VISIBLE, mAppsRow.getVisibility()); assertEquals(4, mAppsGroup.getChildCount()); } @Test public void testUpdateView_showSelectedUserItems_otherUser() { mState.action = State.ACTION_GET_CONTENT; when(mActivity.getSelectedUser()).thenReturn(TestProvidersAccess.OtherUser.USER_ID); mState.stack.changeRoot(TestProvidersAccess.RECENTS); final List<Item> rootList = new ArrayList<>(); rootList.add(new RootItem(TestProvidersAccess.INSPECTOR, mActionHandler)); rootList.add(new RootItem(TestProvidersAccess.AUDIO, mActionHandler)); rootList.add(new RootItem(TestProvidersAccess.HAMMY, mActionHandler)); rootList.add(new RootItem(TestProvidersAccess.IMAGE, mActionHandler)); rootList.add(new RootItem(TestProvidersAccess.OtherUser.DOWNLOADS, mActionHandler)); rootList.add(new RootItem(TestProvidersAccess.OtherUser.PICKLES, mActionHandler)); mAppsRowManager.updateList(rootList); mAppsRowManager.updateView(mActivity); assertEquals(View.VISIBLE, mAppsRow.getVisibility()); assertEquals(2, mAppsGroup.getChildCount()); } @Test public void testUpdateView_notInRecent_hideRow() { mState.action = State.ACTION_BROWSE; Loading Loading @@ -172,5 +210,23 @@ public class AppsRowManagerTest { assertEquals(View.GONE, mAppsRow.getVisibility()); } @Test public void testUpdateView_noItemsOnSelectedUser_hideRow() { mState.action = State.ACTION_GET_CONTENT; mState.stack.changeRoot(TestProvidersAccess.RECENTS); when(mActivity.getSelectedUser()).thenReturn(TestProvidersAccess.OtherUser.USER_ID); final List<Item> rootList = new ArrayList<>(); rootList.add(new RootItem(TestProvidersAccess.INSPECTOR, mActionHandler)); rootList.add(new RootItem(TestProvidersAccess.AUDIO, mActionHandler)); rootList.add(new RootItem(TestProvidersAccess.HAMMY, mActionHandler)); rootList.add(new RootItem(TestProvidersAccess.IMAGE, mActionHandler)); mAppsRowManager.updateList(rootList); mAppsRowManager.updateView(mActivity); assertEquals(View.GONE, mAppsRow.getVisibility()); } } Loading
src/com/android/documentsui/dirlist/AppsRowItemData.java +7 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import androidx.annotation.Nullable; import com.android.documentsui.ActionHandler; import com.android.documentsui.base.RootInfo; import com.android.documentsui.base.UserId; import com.android.documentsui.sidebar.AppItem; import com.android.documentsui.sidebar.Item; import com.android.documentsui.sidebar.RootItem; Loading @@ -35,11 +36,13 @@ import com.android.documentsui.sidebar.RootItem; */ public abstract class AppsRowItemData { private final UserId mUserId; private final String mTitle; private final @Nullable String mSummary; protected final ActionHandler mActionHandler; public AppsRowItemData(Item item, ActionHandler actionHandler, boolean shouldShowSummary) { mUserId = item.userId; mTitle = item.title; mSummary = shouldShowSummary ? item.getSummary() : null; mActionHandler = actionHandler; Loading @@ -49,6 +52,10 @@ public abstract class AppsRowItemData { return mTitle; } public final UserId getUserId() { return mUserId; } /** * Get the summary from {@link Item}. */ Loading
src/com/android/documentsui/dirlist/AppsRowManager.java +9 −4 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import com.android.documentsui.ActionHandler; import com.android.documentsui.BaseActivity; import com.android.documentsui.R; import com.android.documentsui.base.State; import com.android.documentsui.base.UserId; import com.android.documentsui.dirlist.AppsRowItemData.AppData; import com.android.documentsui.dirlist.AppsRowItemData.RootData; import com.android.documentsui.sidebar.AppItem; Loading Loading @@ -90,18 +91,22 @@ public class AppsRowManager { return; } appsRowLayout.setVisibility(View.VISIBLE); final LinearLayout appsGroup = activity.findViewById(R.id.apps_group); appsGroup.removeAllViews(); final LayoutInflater inflater = activity.getLayoutInflater(); final UserId selectedUser = activity.getSelectedUser(); for (AppsRowItemData data : mDataList) { if (selectedUser.equals(data.getUserId())) { View item = inflater.inflate(R.layout.apps_item, appsGroup, false); bindView(item, data); appsGroup.addView(item); } } appsRowLayout.setVisibility(appsGroup.getChildCount() > 0 ? View.VISIBLE : View.GONE); } private void bindView(View view, AppsRowItemData data) { final ImageView app_icon = view.findViewById(R.id.app_icon); final TextView title = view.findViewById(android.R.id.title); Loading
tests/common/com/android/documentsui/testing/TestProvidersAccess.java +2 −1 Original line number Diff line number Diff line Loading @@ -52,7 +52,8 @@ public class TestProvidersAccess implements ProvidersAccess { public static final RootInfo SD_CARD; static { UserId userId = USER_ID; UserId userId = TestProvidersAccess.USER_ID; DOWNLOADS = new RootInfo() {{ flags = Root.FLAG_SUPPORTS_CREATE; }}; Loading
tests/unit/com/android/documentsui/dirlist/AppsRowManagerTest.java +56 −0 Original line number Diff line number Diff line Loading @@ -76,6 +76,7 @@ public class AppsRowManagerTest { when(mActivity.getDisplayState()).thenReturn(mState); when(mActivity.findViewById(R.id.apps_row)).thenReturn(mAppsRow); when(mActivity.findViewById(R.id.apps_group)).thenReturn(mAppsGroup); when(mActivity.getSelectedUser()).thenReturn(TestProvidersAccess.USER_ID); } @Test Loading Loading @@ -132,6 +133,43 @@ public class AppsRowManagerTest { assertEquals(1, mAppsGroup.getChildCount()); } @Test public void testUpdateView_showSelectedUserItems() { mState.action = State.ACTION_GET_CONTENT; mState.stack.changeRoot(TestProvidersAccess.RECENTS); final List<Item> rootList = new ArrayList<>(); rootList.add(new RootItem(TestProvidersAccess.INSPECTOR, mActionHandler)); rootList.add(new RootItem(TestProvidersAccess.AUDIO, mActionHandler)); rootList.add(new RootItem(TestProvidersAccess.HAMMY, mActionHandler)); rootList.add(new RootItem(TestProvidersAccess.IMAGE, mActionHandler)); rootList.add(new RootItem(TestProvidersAccess.OtherUser.DOWNLOADS, mActionHandler)); rootList.add(new RootItem(TestProvidersAccess.OtherUser.PICKLES, mActionHandler)); mAppsRowManager.updateList(rootList); mAppsRowManager.updateView(mActivity); assertEquals(View.VISIBLE, mAppsRow.getVisibility()); assertEquals(4, mAppsGroup.getChildCount()); } @Test public void testUpdateView_showSelectedUserItems_otherUser() { mState.action = State.ACTION_GET_CONTENT; when(mActivity.getSelectedUser()).thenReturn(TestProvidersAccess.OtherUser.USER_ID); mState.stack.changeRoot(TestProvidersAccess.RECENTS); final List<Item> rootList = new ArrayList<>(); rootList.add(new RootItem(TestProvidersAccess.INSPECTOR, mActionHandler)); rootList.add(new RootItem(TestProvidersAccess.AUDIO, mActionHandler)); rootList.add(new RootItem(TestProvidersAccess.HAMMY, mActionHandler)); rootList.add(new RootItem(TestProvidersAccess.IMAGE, mActionHandler)); rootList.add(new RootItem(TestProvidersAccess.OtherUser.DOWNLOADS, mActionHandler)); rootList.add(new RootItem(TestProvidersAccess.OtherUser.PICKLES, mActionHandler)); mAppsRowManager.updateList(rootList); mAppsRowManager.updateView(mActivity); assertEquals(View.VISIBLE, mAppsRow.getVisibility()); assertEquals(2, mAppsGroup.getChildCount()); } @Test public void testUpdateView_notInRecent_hideRow() { mState.action = State.ACTION_BROWSE; Loading Loading @@ -172,5 +210,23 @@ public class AppsRowManagerTest { assertEquals(View.GONE, mAppsRow.getVisibility()); } @Test public void testUpdateView_noItemsOnSelectedUser_hideRow() { mState.action = State.ACTION_GET_CONTENT; mState.stack.changeRoot(TestProvidersAccess.RECENTS); when(mActivity.getSelectedUser()).thenReturn(TestProvidersAccess.OtherUser.USER_ID); final List<Item> rootList = new ArrayList<>(); rootList.add(new RootItem(TestProvidersAccess.INSPECTOR, mActionHandler)); rootList.add(new RootItem(TestProvidersAccess.AUDIO, mActionHandler)); rootList.add(new RootItem(TestProvidersAccess.HAMMY, mActionHandler)); rootList.add(new RootItem(TestProvidersAccess.IMAGE, mActionHandler)); mAppsRowManager.updateList(rootList); mAppsRowManager.updateView(mActivity); assertEquals(View.GONE, mAppsRow.getVisibility()); } }