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

Commit daf172e1 authored by Ben Reich's avatar Ben Reich
Browse files

Only hide the AppsRow on devices the are non-FEATURE_PC

As part of the Material 3 uplift, devices which have more screen estate
should hide the AppsRow as the same information is available in the
RootsFragment. This updates the tests to skip when FEATURE_PC is
defined and the use_material3 flag is enabled.

Fix: 406344785
Bug: 383932124
Test: atest com.android.documentsui.dirlist.AppsRowManagerTest
Flag: com.android.documentsui.flags.use_material3

Change-Id: I839bfddc1a4b35a7e7fb67cc1b9c7f7d8a0c1a9f
parent 51e193f3
Loading
Loading
Loading
Loading
+17 −7
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@

package com.android.documentsui.dirlist;

import static com.android.documentsui.util.FlagUtils.isUseMaterial3FlagEnabled;

import android.text.TextUtils;
import android.view.LayoutInflater;
@@ -57,25 +56,36 @@ public class AppsRowManager {
    private final UserIdManager mUserIdManager;
    private final UserManagerState mUserManagerState;
    private final ConfigStore mConfigStore;

    public AppsRowManager(ActionHandler handler, boolean maybeShowBadge,
            UserIdManager userIdManager, ConfigStore configStore) {
    private final boolean mShouldShowByDefault;

    public AppsRowManager(
            ActionHandler handler,
            boolean maybeShowBadge,
            UserIdManager userIdManager,
            ConfigStore configStore,
            boolean shouldShowByDefault) {
        mDataList = new ArrayList<>();
        mActionHandler = handler;
        mMaybeShowBadge = maybeShowBadge;
        mUserIdManager = userIdManager;
        mUserManagerState = null;
        mConfigStore = configStore;
        mShouldShowByDefault = shouldShowByDefault;
    }

    public AppsRowManager(ActionHandler handler, boolean maybeShowBadge,
            UserManagerState userManagerState, ConfigStore configStore) {
    public AppsRowManager(
            ActionHandler handler,
            boolean maybeShowBadge,
            UserManagerState userManagerState,
            ConfigStore configStore,
            boolean shouldShowByDefault) {
        mDataList = new ArrayList<>();
        mActionHandler = handler;
        mMaybeShowBadge = maybeShowBadge;
        mUserIdManager = null;
        mUserManagerState = userManagerState;
        mConfigStore = configStore;
        mShouldShowByDefault = shouldShowByDefault;
    }

    public List<AppsRowItemData> updateList(List<Item> itemList) {
@@ -105,7 +115,7 @@ public class AppsRowManager {
    }

    private boolean shouldShow(State state, boolean isSearchExpanded) {
        if (isUseMaterial3FlagEnabled()) {
        if (!mShouldShowByDefault) {
            return false;
        }

+16 −4
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import static com.android.documentsui.util.FlagUtils.isZipNgFlagEnabled;

import android.app.ActivityManager.TaskDescription;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
@@ -224,11 +225,22 @@ public class FilesActivity extends BaseActivity implements AbstractActionHandler
    }

    private AppsRowManager getAppsRowManager() {
        boolean shouldShowByDefault =
                !isUseMaterial3FlagEnabled()
                        || !getPackageManager().hasSystemFeature(PackageManager.FEATURE_PC);
        return mConfigStore.isPrivateSpaceInDocsUIEnabled()
                ? new AppsRowManager(mInjector.actions, mState.supportsCrossProfile(),
                mUserManagerState, mConfigStore)
                : new AppsRowManager(mInjector.actions, mState.supportsCrossProfile(),
                        mUserIdManager, mConfigStore);
                ? new AppsRowManager(
                mInjector.actions,
                mState.supportsCrossProfile(),
                mUserManagerState,
                mConfigStore,
                shouldShowByDefault)
                : new AppsRowManager(
                        mInjector.actions,
                        mState.supportsCrossProfile(),
                        mUserIdManager,
                        mConfigStore,
                        shouldShowByDefault);
    }

    // This is called in the intent contains label and icon resources.
+16 −4
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import static com.android.documentsui.base.State.ACTION_PICK_COPY_DESTINATION;
import static com.android.documentsui.util.FlagUtils.isUseMaterial3FlagEnabled;

import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.graphics.Color;
import android.net.Uri;
@@ -175,11 +176,22 @@ public class PickActivity extends BaseActivity implements ActionHandler.Addons {
    }

    private AppsRowManager getAppsRowManager() {
        boolean shouldShowByDefault =
                !isUseMaterial3FlagEnabled()
                        || !getPackageManager().hasSystemFeature(PackageManager.FEATURE_PC);
        return mConfigStore.isPrivateSpaceInDocsUIEnabled()
                ? new AppsRowManager(mInjector.actions, mState.supportsCrossProfile(),
                mUserManagerState, mConfigStore)
                : new AppsRowManager(mInjector.actions, mState.supportsCrossProfile(),
                        mUserIdManager, mConfigStore);
                ? new AppsRowManager(
                mInjector.actions,
                mState.supportsCrossProfile(),
                mUserManagerState,
                mConfigStore,
                shouldShowByDefault)
                : new AppsRowManager(
                        mInjector.actions,
                        mState.supportsCrossProfile(),
                        mUserIdManager,
                        mConfigStore,
                        shouldShowByDefault);
    }

    @Override
+21 −3
Original line number Diff line number Diff line
@@ -16,7 +16,10 @@

package com.android.documentsui.dirlist;

import static com.android.documentsui.util.FlagUtils.isUseMaterial3FlagEnabled;

import static com.google.common.truth.Truth.assertThat;
import static com.google.common.truth.TruthJUnit.assume;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
@@ -25,12 +28,13 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

import android.content.Context;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;

import androidx.test.InstrumentationRegistry;
import androidx.test.platform.app.InstrumentationRegistry;

import com.android.documentsui.ActionHandler;
import com.android.documentsui.BaseActivity;
@@ -52,6 +56,7 @@ import com.android.modules.utils.build.SdkLevel;
import com.google.common.collect.Lists;

import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@@ -89,6 +94,19 @@ public class AppsRowManagerTest {
        return com.google.android.collect.Lists.newArrayList(true, false);
    }

    @BeforeClass
    public static void setUpClass() {
        if (isUseMaterial3FlagEnabled()) {
            // The AppsRowManager is only available on devices that don't specify `FEATURE_PC`.
            assume().that(
                            InstrumentationRegistry.getInstrumentation()
                                    .getTargetContext()
                                    .getPackageManager()
                                    .hasSystemFeature(PackageManager.FEATURE_PC))
                    .isFalse();
        }
    }

    @Before
    public void setUp() {
        mActionHandler = new TestActionHandler();
@@ -124,13 +142,13 @@ public class AppsRowManagerTest {
                    Lists.newArrayList(UserId.DEFAULT_USER, TestProvidersAccess.OtherUser.USER_ID,
                            TestProvidersAccess.AnotherUser.USER_ID);
            return new AppsRowManager(mActionHandler, mMaybeShowBadge, mTestUserManagerState,
                    mTestConfigStore);
                    mTestConfigStore, /*shouldShowByDefault=*/true);
        }
        mTestUserIdManager = new TestUserIdManager();
        mTestUserIdManager.userIds =
                Lists.newArrayList(UserId.DEFAULT_USER, TestProvidersAccess.OtherUser.USER_ID);
        return new AppsRowManager(mActionHandler, mMaybeShowBadge, mTestUserIdManager,
                mTestConfigStore);
                mTestConfigStore, /*shouldShowByDefault=*/true);
    }

    @Test