Merge "Hide apps during search across profile" into rvc-dev
diff --git a/src/com/android/documentsui/BaseActivity.java b/src/com/android/documentsui/BaseActivity.java
index 1711928..3bf2227 100644
--- a/src/com/android/documentsui/BaseActivity.java
+++ b/src/com/android/documentsui/BaseActivity.java
@@ -90,6 +90,7 @@
protected SearchViewManager mSearchManager;
protected AppsRowManager mAppsRowManager;
+ protected UserIdManager mUserIdManager;
protected State mState;
@Injected
@@ -199,6 +200,9 @@
@Override
public void onSearchViewChanged(boolean opened) {
mNavigator.update();
+ // We also need to update AppsRowManager because we may want to show/hide the
+ // appsRow in cross-profile search according to the searching conditions.
+ mAppsRowManager.updateView(BaseActivity.this);
}
@Override
@@ -248,6 +252,7 @@
cmdInterceptor);
ViewGroup chipGroup = findViewById(R.id.search_chip_group);
+ mUserIdManager = DocumentsApplication.getUserIdManager(this);
mSearchManager = new SearchViewManager(searchListener, queryInterceptor,
chipGroup, icicle);
// initialize the chip sets by accept mime types
diff --git a/src/com/android/documentsui/dirlist/AppsRowManager.java b/src/com/android/documentsui/dirlist/AppsRowManager.java
index 7b7dbc8..4af7ccf 100644
--- a/src/com/android/documentsui/dirlist/AppsRowManager.java
+++ b/src/com/android/documentsui/dirlist/AppsRowManager.java
@@ -26,6 +26,7 @@
import com.android.documentsui.ActionHandler;
import com.android.documentsui.BaseActivity;
import com.android.documentsui.R;
+import com.android.documentsui.UserIdManager;
import com.android.documentsui.base.State;
import com.android.documentsui.base.UserId;
import com.android.documentsui.dirlist.AppsRowItemData.AppData;
@@ -47,11 +48,14 @@
private final ActionHandler mActionHandler;
private final List<AppsRowItemData> mDataList;
private final boolean mMaybeShowBadge;
+ private final UserIdManager mUserIdManager;
- public AppsRowManager(ActionHandler handler, boolean maybeShowBadge) {
+ public AppsRowManager(ActionHandler handler, boolean maybeShowBadge,
+ UserIdManager userIdManager) {
mDataList = new ArrayList<>();
mActionHandler = handler;
mMaybeShowBadge = maybeShowBadge;
+ mUserIdManager = userIdManager;
}
public List<AppsRowItemData> updateList(List<Item> itemList) {
@@ -80,17 +84,22 @@
return mDataList;
}
- private boolean shouldShow(State state) {
+ private boolean shouldShow(State state, boolean isTextSearching) {
boolean isHiddenAction = state.action == State.ACTION_CREATE
|| state.action == State.ACTION_OPEN_TREE
|| state.action == State.ACTION_PICK_COPY_DESTINATION;
- return state.stack.isRecents() && !isHiddenAction && mDataList.size() > 0;
+ boolean isTextSearchingAcrossProfile = mUserIdManager.getUserIds().size() > 1
+ && state.supportsCrossProfile()
+ && isTextSearching;
+
+ return state.stack.isRecents() && !isHiddenAction && mDataList.size() > 0
+ && !isTextSearchingAcrossProfile;
}
public void updateView(BaseActivity activity) {
final View appsRowLayout = activity.findViewById(R.id.apps_row);
- if (!shouldShow(activity.getDisplayState())) {
+ if (!shouldShow(activity.getDisplayState(), activity.isTextSearching())) {
appsRowLayout.setVisibility(View.GONE);
return;
}
diff --git a/src/com/android/documentsui/files/FilesActivity.java b/src/com/android/documentsui/files/FilesActivity.java
index 0837483..f1a58eb 100644
--- a/src/com/android/documentsui/files/FilesActivity.java
+++ b/src/com/android/documentsui/files/FilesActivity.java
@@ -155,7 +155,8 @@
mInjector.selectionMgr,
mProfileTabsAddonsStub);
- mAppsRowManager = new AppsRowManager(mInjector.actions, mState.supportsCrossProfile());
+ mAppsRowManager = new AppsRowManager(mInjector.actions, mState.supportsCrossProfile(),
+ mUserIdManager);
mInjector.appsRowManager = mAppsRowManager;
mActivityInputHandler =
diff --git a/src/com/android/documentsui/picker/PickActivity.java b/src/com/android/documentsui/picker/PickActivity.java
index 775ea1e..fd8285d 100644
--- a/src/com/android/documentsui/picker/PickActivity.java
+++ b/src/com/android/documentsui/picker/PickActivity.java
@@ -138,13 +138,14 @@
ProviderExecutor::forAuthority,
mInjector,
LastAccessedStorage.create(),
- DocumentsApplication.getUserIdManager(this));
+ mUserIdManager);
mInjector.searchManager = mSearchManager;
Intent intent = getIntent();
- mAppsRowManager = new AppsRowManager(mInjector.actions, mState.supportsCrossProfile());
+ mAppsRowManager = new AppsRowManager(mInjector.actions, mState.supportsCrossProfile(),
+ mUserIdManager);
mInjector.appsRowManager = mAppsRowManager;
mSharedInputHandler =
diff --git a/tests/unit/com/android/documentsui/dirlist/AppsRowManagerTest.java b/tests/unit/com/android/documentsui/dirlist/AppsRowManagerTest.java
index d5a7f5c..893a4fa 100644
--- a/tests/unit/com/android/documentsui/dirlist/AppsRowManagerTest.java
+++ b/tests/unit/com/android/documentsui/dirlist/AppsRowManagerTest.java
@@ -16,6 +16,8 @@
package com.android.documentsui.dirlist;
+import static com.google.common.truth.Truth.assertThat;
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
@@ -33,6 +35,7 @@
import com.android.documentsui.ActionHandler;
import com.android.documentsui.BaseActivity;
import com.android.documentsui.R;
+import com.android.documentsui.TestUserIdManager;
import com.android.documentsui.base.State;
import com.android.documentsui.base.UserId;
import com.android.documentsui.sidebar.AppItem;
@@ -42,6 +45,8 @@
import com.android.documentsui.testing.TestProvidersAccess;
import com.android.documentsui.testing.TestResolveInfo;
+import com.google.common.collect.Lists;
+
import org.junit.Before;
import org.junit.Test;
@@ -55,6 +60,7 @@
private ActionHandler mActionHandler;
private boolean mMaybeShowBadge;
private BaseActivity mActivity;
+ private TestUserIdManager mTestUserIdManager;
private State mState;
private View mAppsRow;
@@ -63,8 +69,9 @@
@Before
public void setUp() {
mActionHandler = new TestActionHandler();
+ mTestUserIdManager = new TestUserIdManager();
- mAppsRowManager = new AppsRowManager(mActionHandler, mMaybeShowBadge);
+ mAppsRowManager = new AppsRowManager(mActionHandler, mMaybeShowBadge, mTestUserIdManager);
Context context = InstrumentationRegistry.getInstrumentation().getTargetContext();
LayoutInflater layoutInflater = LayoutInflater.from(context);
@@ -78,6 +85,9 @@
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);
+
+ mTestUserIdManager.userIds =
+ Lists.newArrayList(UserId.DEFAULT_USER, TestProvidersAccess.OtherUser.USER_ID);
}
@Test
@@ -220,6 +230,48 @@
}
@Test
+ public void testUpdateView_crossProfileSearch_hideRow() {
+ mState.action = State.ACTION_GET_CONTENT;
+ when(mActivity.isTextSearching()).thenReturn(true);
+
+ mState.stack.changeRoot(TestProvidersAccess.RECENTS);
+ final List<Item> rootList = new ArrayList<>();
+ rootList.add(new RootItem(TestProvidersAccess.INSPECTOR, mActionHandler, mMaybeShowBadge));
+ rootList.add(new RootItem(TestProvidersAccess.AUDIO, mActionHandler, mMaybeShowBadge));
+ rootList.add(new RootItem(TestProvidersAccess.HAMMY, mActionHandler, mMaybeShowBadge));
+ rootList.add(new RootItem(TestProvidersAccess.IMAGE, mActionHandler, mMaybeShowBadge));
+ rootList.add(new RootItem(TestProvidersAccess.OtherUser.DOWNLOADS, mActionHandler,
+ mMaybeShowBadge));
+ rootList.add(new RootItem(TestProvidersAccess.OtherUser.PICKLES, mActionHandler,
+ mMaybeShowBadge));
+ mAppsRowManager.updateList(rootList);
+ mAppsRowManager.updateView(mActivity);
+
+ assertThat(mAppsRow.getVisibility()).isEqualTo(View.GONE);
+ }
+
+ @Test
+ public void testUpdateView_notCrossProfileSearch_showRow() {
+ mState.action = State.ACTION_GET_CONTENT;
+ when(mActivity.isTextSearching()).thenReturn(false);
+
+ mState.stack.changeRoot(TestProvidersAccess.RECENTS);
+ final List<Item> rootList = new ArrayList<>();
+ rootList.add(new RootItem(TestProvidersAccess.INSPECTOR, mActionHandler, mMaybeShowBadge));
+ rootList.add(new RootItem(TestProvidersAccess.AUDIO, mActionHandler, mMaybeShowBadge));
+ rootList.add(new RootItem(TestProvidersAccess.HAMMY, mActionHandler, mMaybeShowBadge));
+ rootList.add(new RootItem(TestProvidersAccess.IMAGE, mActionHandler, mMaybeShowBadge));
+ rootList.add(new RootItem(TestProvidersAccess.OtherUser.DOWNLOADS, mActionHandler,
+ mMaybeShowBadge));
+ rootList.add(new RootItem(TestProvidersAccess.OtherUser.PICKLES, mActionHandler,
+ mMaybeShowBadge));
+ mAppsRowManager.updateList(rootList);
+ mAppsRowManager.updateView(mActivity);
+
+ assertThat(mAppsRow.getVisibility()).isEqualTo(View.VISIBLE);
+ }
+
+ @Test
public void testUpdateView_noItemsOnSelectedUser_hideRow() {
mState.action = State.ACTION_GET_CONTENT;
mState.stack.changeRoot(TestProvidersAccess.RECENTS);