summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author François Degros <fdegros@google.com> 2025-03-07 00:26:16 +0000
committer François Degros <fdegros@google.com> 2025-03-07 03:59:30 +0000
commitbe7cfdfa3dedc99c2ef31351b24915a0d7184dcc (patch)
treea86a0ae6cdd7680e07fb4247c94910d9aff46186
parent022d276adf3f23052621a9858a11f8cc496acc33 (diff)
Control visibility of 'Browse' and 'Extract here' menu items
Start putting in place the infrastructure that will control the visibility of these menu items. These menu items are not visible yet. Bug: 400830188 Bug: 400829875 Flag: com.android.documentsui.flags.use_material3 Flag: com.android.documentsui.flags.zip_ng_ro Test: atest DocumentsUIGoogleTests:com.android.documentsui.picker.MenuManagerTest Test: atest DocumentsUIGoogleTests:com.android.documentsui.files.MenuManagerTest Change-Id: Ifdd82057e1f988965b3057ac26f7296bc6219f0f
-rw-r--r--src/com/android/documentsui/MenuManager.java14
-rw-r--r--src/com/android/documentsui/util/FlagUtils.kt2
-rw-r--r--tests/common/com/android/documentsui/testing/TestMenu.java7
-rw-r--r--tests/common/com/android/documentsui/testing/TestMenuItem.java14
-rw-r--r--tests/unit/com/android/documentsui/files/MenuManagerTest.java8
-rw-r--r--tests/unit/com/android/documentsui/picker/MenuManagerTest.java24
6 files changed, 57 insertions, 12 deletions
diff --git a/src/com/android/documentsui/MenuManager.java b/src/com/android/documentsui/MenuManager.java
index 5f17d7e02..eb4f98aab 100644
--- a/src/com/android/documentsui/MenuManager.java
+++ b/src/com/android/documentsui/MenuManager.java
@@ -25,6 +25,7 @@ import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
+import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;
import androidx.fragment.app.Fragment;
@@ -183,6 +184,11 @@ public abstract class MenuManager {
updateRename(rename, selectionDetails);
updateViewInOwner(viewInOwner, selectionDetails);
+ if (isZipNgFlagEnabled()) {
+ updateExtractHere(menu.findItem(R.id.dir_menu_extract_here), selectionDetails);
+ updateBrowse(menu.findItem(R.id.dir_menu_browse), selectionDetails);
+ }
+
updateContextMenu(menu, selectionDetails);
}
@@ -383,6 +389,14 @@ public abstract class MenuManager {
Menus.setEnabledAndVisible(extractTo, false);
}
+ protected void updateExtractHere(@NonNull MenuItem it, SelectionDetails selection) {
+ Menus.setEnabledAndVisible(it, false);
+ }
+
+ protected void updateBrowse(@NonNull MenuItem it, SelectionDetails selection) {
+ Menus.setEnabledAndVisible(it, false);
+ }
+
protected void updatePasteInto(MenuItem pasteInto, SelectionDetails selectionDetails) {
Menus.setEnabledAndVisible(pasteInto, false);
}
diff --git a/src/com/android/documentsui/util/FlagUtils.kt b/src/com/android/documentsui/util/FlagUtils.kt
index eee51be89..22febc317 100644
--- a/src/com/android/documentsui/util/FlagUtils.kt
+++ b/src/com/android/documentsui/util/FlagUtils.kt
@@ -31,7 +31,7 @@ class FlagUtils {
@JvmStatic
fun isZipNgFlagEnabled(): Boolean {
- return Flags.zipNgRo()
+ return Flags.zipNgRo() && Flags.useMaterial3()
}
@JvmStatic
diff --git a/tests/common/com/android/documentsui/testing/TestMenu.java b/tests/common/com/android/documentsui/testing/TestMenu.java
index 9795fd373..a97e46e5d 100644
--- a/tests/common/com/android/documentsui/testing/TestMenu.java
+++ b/tests/common/com/android/documentsui/testing/TestMenu.java
@@ -26,7 +26,6 @@ import com.android.documentsui.R;
import org.mockito.Mockito;
/**
- *
* Test copy of {@link android.view.Menu}.
*
* We use abstract so we don't have to implement all the necessary methods from the interface,
@@ -55,6 +54,8 @@ public abstract class TestMenu implements Menu {
R.id.dir_menu_paste_into_folder,
R.id.dir_menu_inspect,
R.id.dir_menu_open_in_new_window,
+ R.id.dir_menu_extract_here,
+ R.id.dir_menu_browse,
R.id.root_menu_eject_root,
R.id.root_menu_open_in_new_window,
R.id.root_menu_paste_into_folder,
@@ -89,7 +90,6 @@ public abstract class TestMenu implements Menu {
}
-
public static TestMenu create(int... ids) {
final TestMenu menu = Mockito.mock(TestMenu.class,
Mockito.withSettings().defaultAnswer(Mockito.CALLS_REAL_METHODS));
@@ -103,7 +103,8 @@ public abstract class TestMenu implements Menu {
item.setActionView(Mockito.mock(SearchView.class));
}
- if (id == R.id.option_menu_extract_all) {
+ if (id == R.id.option_menu_extract_all || id == R.id.dir_menu_extract_here
+ || id == R.id.dir_menu_browse) {
item.setEnabled(false);
item.setVisible(false);
}
diff --git a/tests/common/com/android/documentsui/testing/TestMenuItem.java b/tests/common/com/android/documentsui/testing/TestMenuItem.java
index 97ac602db..5463237b2 100644
--- a/tests/common/com/android/documentsui/testing/TestMenuItem.java
+++ b/tests/common/com/android/documentsui/testing/TestMenuItem.java
@@ -27,14 +27,12 @@ import androidx.annotation.StringRes;
import org.mockito.Mockito;
/**
-*
-* Test copy of {@link android.view.MenuItem}.
-*
-* We use abstract so we don't have to implement all the necessary methods from the interface,
-* and we use Mockito to just mock out the methods we need.
-* To get an instance, use {@link #create(int)}.
-*/
-
+ * Test copy of {@link android.view.MenuItem}.
+ *
+ * We use abstract so we don't have to implement all the necessary methods from the interface,
+ * and we use Mockito to just mock out the methods we need.
+ * To get an instance, use {@link #create(int)}.
+ */
public abstract class TestMenuItem implements MenuItem {
boolean enabled;
diff --git a/tests/unit/com/android/documentsui/files/MenuManagerTest.java b/tests/unit/com/android/documentsui/files/MenuManagerTest.java
index ac7b1c4f7..2239dd4fb 100644
--- a/tests/unit/com/android/documentsui/files/MenuManagerTest.java
+++ b/tests/unit/com/android/documentsui/files/MenuManagerTest.java
@@ -79,6 +79,8 @@ public final class MenuManagerTest {
private TestMenuItem dirPasteIntoFolder;
private TestMenuItem dirInspect;
private TestMenuItem dirOpenInNewWindow;
+ private TestMenuItem mDirExtractHere;
+ private TestMenuItem mDirBrowse;
/* Root List Context Menu items */
private TestMenuItem rootEjectRoot;
@@ -156,6 +158,8 @@ public final class MenuManagerTest {
dirPasteIntoFolder = testMenu.findItem(R.id.dir_menu_paste_into_folder);
dirInspect = testMenu.findItem(R.id.dir_menu_inspect);
dirOpenInNewWindow = testMenu.findItem(R.id.dir_menu_open_in_new_window);
+ mDirExtractHere = testMenu.findItem(R.id.dir_menu_extract_here);
+ mDirBrowse = testMenu.findItem(R.id.dir_menu_browse);
rootEjectRoot = testMenu.findItem(R.id.root_menu_eject_root);
rootOpenInNewWindow = testMenu.findItem(R.id.root_menu_open_in_new_window);
@@ -545,6 +549,8 @@ public final class MenuManagerTest {
mDirDeselectAll.assertDisabledAndInvisible();
dirPasteFromClipboard.assertDisabledAndInvisible();
dirCreateDir.assertDisabledAndInvisible();
+ mDirExtractHere.assertDisabledAndInvisible();
+ mDirBrowse.assertDisabledAndInvisible();
}
@Test
@@ -616,6 +622,8 @@ public final class MenuManagerTest {
dirRename.assertDisabledAndInvisible();
dirCreateDir.assertEnabledAndVisible();
dirDelete.assertDisabledAndInvisible();
+ mDirExtractHere.assertDisabledAndInvisible();
+ mDirBrowse.assertDisabledAndInvisible();
}
@Test
diff --git a/tests/unit/com/android/documentsui/picker/MenuManagerTest.java b/tests/unit/com/android/documentsui/picker/MenuManagerTest.java
index 266489d61..485073128 100644
--- a/tests/unit/com/android/documentsui/picker/MenuManagerTest.java
+++ b/tests/unit/com/android/documentsui/picker/MenuManagerTest.java
@@ -70,6 +70,8 @@ public final class MenuManagerTest {
private TestMenuItem dirViewInOwner;
private TestMenuItem dirOpenInNewWindow;
private TestMenuItem dirPasteIntoFolder;
+ private TestMenuItem mDirExtractHere;
+ private TestMenuItem mDirBrowse;
/* Root List Context Menu items */
private TestMenuItem rootEjectRoot;
@@ -136,6 +138,8 @@ public final class MenuManagerTest {
dirViewInOwner = testMenu.findItem(R.id.dir_menu_view_in_owner);
dirOpenInNewWindow = testMenu.findItem(R.id.dir_menu_open_in_new_window);
dirPasteIntoFolder = testMenu.findItem(R.id.dir_menu_paste_into_folder);
+ mDirExtractHere = testMenu.findItem(R.id.dir_menu_extract_here);
+ mDirBrowse = testMenu.findItem(R.id.dir_menu_browse);
rootEjectRoot = testMenu.findItem(R.id.root_menu_eject_root);
rootOpenInNewWindow = testMenu.findItem(R.id.root_menu_open_in_new_window);
@@ -351,6 +355,8 @@ public final class MenuManagerTest {
mDirDeselectAll.assertDisabledAndInvisible();
dirPasteFromClipboard.assertDisabledAndInvisible();
dirCreateDir.assertDisabledAndInvisible();
+ mDirExtractHere.assertDisabledAndInvisible();
+ mDirBrowse.assertDisabledAndInvisible();
}
@Test
@@ -363,6 +369,8 @@ public final class MenuManagerTest {
dirSelectAll.assertEnabledAndVisible();
dirPasteFromClipboard.assertDisabledAndInvisible();
dirCreateDir.assertDisabledAndInvisible();
+ mDirExtractHere.assertDisabledAndInvisible();
+ mDirBrowse.assertDisabledAndInvisible();
}
@Test
@@ -375,6 +383,8 @@ public final class MenuManagerTest {
dirSelectAll.assertEnabledAndVisible();
dirPasteFromClipboard.assertDisabledAndInvisible();
dirCreateDir.assertDisabledAndInvisible();
+ mDirExtractHere.assertDisabledAndInvisible();
+ mDirBrowse.assertDisabledAndInvisible();
}
@Test
@@ -387,6 +397,8 @@ public final class MenuManagerTest {
dirSelectAll.assertEnabledAndVisible();
dirPasteFromClipboard.assertEnabledAndVisible();
dirCreateDir.assertDisabledAndInvisible();
+ mDirExtractHere.assertDisabledAndInvisible();
+ mDirBrowse.assertDisabledAndInvisible();
}
@Test
@@ -398,6 +410,8 @@ public final class MenuManagerTest {
dirSelectAll.assertEnabledAndVisible();
dirPasteFromClipboard.assertDisabledAndInvisible();
dirCreateDir.assertEnabledAndVisible();
+ mDirExtractHere.assertDisabledAndInvisible();
+ mDirBrowse.assertDisabledAndInvisible();
}
@Test
@@ -423,6 +437,8 @@ public final class MenuManagerTest {
mDirCompress.assertDisabledAndInvisible();
dirRename.assertDisabledAndInvisible();
dirDelete.assertDisabledAndInvisible();
+ mDirExtractHere.assertDisabledAndInvisible();
+ mDirBrowse.assertDisabledAndInvisible();
}
@Test
@@ -438,6 +454,8 @@ public final class MenuManagerTest {
dirPasteIntoFolder.assertDisabledAndInvisible();
dirRename.assertDisabledAndInvisible();
dirDelete.assertDisabledAndInvisible();
+ mDirExtractHere.assertDisabledAndInvisible();
+ mDirBrowse.assertDisabledAndInvisible();
}
@Test
@@ -451,6 +469,8 @@ public final class MenuManagerTest {
dirCopyToClipboard.assertEnabledAndVisible();
mDirCompress.assertDisabledAndInvisible();
dirDelete.assertEnabledAndVisible();
+ mDirExtractHere.assertDisabledAndInvisible();
+ mDirBrowse.assertDisabledAndInvisible();
}
@Test
@@ -465,6 +485,8 @@ public final class MenuManagerTest {
dirCopyToClipboard.assertDisabledAndInvisible();
mDirCompress.assertDisabledAndInvisible();
dirDelete.assertEnabledAndVisible();
+ mDirExtractHere.assertDisabledAndInvisible();
+ mDirBrowse.assertDisabledAndInvisible();
}
@Test
@@ -478,6 +500,8 @@ public final class MenuManagerTest {
dirCopyToClipboard.assertEnabledAndVisible();
mDirCompress.assertDisabledAndInvisible();
dirDelete.assertDisabledAndInvisible();
+ mDirExtractHere.assertDisabledAndInvisible();
+ mDirBrowse.assertDisabledAndInvisible();
}
@Test