Disable searching in archives.
It doesn't work anyway.
Test: Confirmed manually that the search icon is not shown.
Bug: 35053993
Change-Id: I53a3ed8784d7bf9662c2b1a4fe2d0c3240cf263b
diff --git a/src/com/android/documentsui/BaseActivity.java b/src/com/android/documentsui/BaseActivity.java
index 1510d29..ac5d9d8 100644
--- a/src/com/android/documentsui/BaseActivity.java
+++ b/src/com/android/documentsui/BaseActivity.java
@@ -155,8 +155,6 @@
*/
@Override
public void onSearchChanged(@Nullable String query) {
- // We should not get here if root is not searchable
- assert (canSearchRoot());
reloadSearch(query);
}
@@ -229,7 +227,7 @@
@CallSuper
public boolean onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
- mSearchManager.showMenu(canSearchRoot());
+ mSearchManager.showMenu(mState.stack);
return true;
}
@@ -431,11 +429,6 @@
return authorities;
}
- boolean canSearchRoot() {
- final RootInfo root = getCurrentRoot();
- return (root.flags & Root.FLAG_SUPPORTS_SEARCH) != 0;
- }
-
public static BaseActivity get(Fragment fragment) {
return (BaseActivity) fragment.getActivity();
}
diff --git a/src/com/android/documentsui/RootsMonitor.java b/src/com/android/documentsui/RootsMonitor.java
index a0d4d0b..28a10f0 100644
--- a/src/com/android/documentsui/RootsMonitor.java
+++ b/src/com/android/documentsui/RootsMonitor.java
@@ -136,7 +136,7 @@
// Clear entire backstack and start in new root.
mState.stack.changeRoot(defaultRoot);
- mSearchMgr.update(defaultRoot);
+ mSearchMgr.update(mState.stack);
if (defaultRoot.isRecents()) {
mOwner.refreshCurrentRootAndDirectory(AnimationView.ANIM_NONE);
diff --git a/src/com/android/documentsui/picker/MenuManager.java b/src/com/android/documentsui/picker/MenuManager.java
index 9288717..9e74944 100644
--- a/src/com/android/documentsui/picker/MenuManager.java
+++ b/src/com/android/documentsui/picker/MenuManager.java
@@ -57,7 +57,7 @@
if (picking()) {
// May already be hidden because the root
// doesn't support search.
- mSearchManager.showMenu(false);
+ mSearchManager.showMenu(null);
}
}
diff --git a/src/com/android/documentsui/queries/SearchViewManager.java b/src/com/android/documentsui/queries/SearchViewManager.java
index ba05115..57b9053 100644
--- a/src/com/android/documentsui/queries/SearchViewManager.java
+++ b/src/com/android/documentsui/queries/SearchViewManager.java
@@ -34,6 +34,8 @@
import com.android.documentsui.DocumentsToolbar;
import com.android.documentsui.R;
+import com.android.documentsui.base.DocumentInfo;
+import com.android.documentsui.base.DocumentStack;
import com.android.documentsui.base.RootInfo;
import com.android.documentsui.base.Shared;
@@ -103,9 +105,9 @@
}
/**
- * @param root Info about the current directory.
+ * @param stack New stack.
*/
- public void update(RootInfo root) {
+ public void update(DocumentStack stack) {
if (mMenuItem == null) {
if (DEBUG) Log.d(TAG, "update called before Search MenuItem installed.");
return;
@@ -129,21 +131,35 @@
}
}
- showMenu(root != null
- && ((root.flags & Root.FLAG_SUPPORTS_SEARCH) != 0));
+ showMenu(stack);
}
- public void showMenu(boolean visible) {
+ public void showMenu(@Nullable DocumentStack stack) {
+ final DocumentInfo cwd = stack.peek();
+
+ boolean supportsSearch = true;
+
+ // Searching in archives is not enabled, as archives are backed by
+ // a different provider than the root provider.
+ if (cwd != null && cwd.isInArchive()) {
+ supportsSearch = false;
+ }
+
+ final RootInfo root = stack != null ? stack.getRoot() : null;
+ if (root == null || (root.flags & Root.FLAG_SUPPORTS_SEARCH) == 0) {
+ supportsSearch = false;
+ }
+
if (mMenuItem == null) {
if (DEBUG) Log.d(TAG, "showMenu called before Search MenuItem installed.");
return;
}
- if (!visible) {
+ if (!supportsSearch) {
mCurrentSearch = null;
}
- mMenuItem.setVisible(visible);
+ mMenuItem.setVisible(supportsSearch);
}
/**
diff --git a/tests/common/com/android/documentsui/testing/TestSearchViewManager.java b/tests/common/com/android/documentsui/testing/TestSearchViewManager.java
index 6d84cb9..045045d 100644
--- a/tests/common/com/android/documentsui/testing/TestSearchViewManager.java
+++ b/tests/common/com/android/documentsui/testing/TestSearchViewManager.java
@@ -16,6 +16,7 @@
package com.android.documentsui.testing;
+import com.android.documentsui.base.DocumentStack;
import com.android.documentsui.queries.DebugCommandProcessor;
import com.android.documentsui.queries.SearchViewManager;
@@ -52,7 +53,7 @@
}
@Override
- public void showMenu(boolean visible) {
+ public void showMenu(DocumentStack stack) {
mShowMenuCalled = true;
}