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

Commit 55dccc9d authored by Kelvin Kwan's avatar Kelvin Kwan Committed by Android (Google) Code Review
Browse files

Merge "Show apps from the selected user only in Recents appsRow"

parents 6c1febbb abba9759
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());
    }
}