Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit abba9759 authored by Kelvin Kwan's avatar Kelvin Kwan
Browse files

Show apps from the selected user only in Recents appsRow

Bug: 148271447
Test: manual
Test: atest DocumentsUIGoogleTests:com.android.documentsui.dirlist.AppsRowManagerTest
Change-Id: Ic532abc8d5e30fc479c3c9db5e3833357d91fab9
parent 9feaaf55
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -49,6 +52,10 @@ public abstract class AppsRowItemData {
        return mTitle;
    }

    public final UserId getUserId() {
        return mUserId;
    }

    /**
     * Get the summary from {@link Item}.
     */
+9 −4
Original line number Diff line number Diff line
@@ -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;
@@ -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);
+2 −1
Original line number Diff line number Diff line
@@ -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;
        }};
+56 −0
Original line number Diff line number Diff line
@@ -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
@@ -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;
@@ -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());
    }
}