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

Commit be7cfdfa authored by François Degros's avatar François Degros
Browse files

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
parent 022d276a
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -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);
    }
+1 −1
Original line number Diff line number Diff line
@@ -31,7 +31,7 @@ class FlagUtils {

        @JvmStatic
        fun isZipNgFlagEnabled(): Boolean {
            return Flags.zipNgRo()
            return Flags.zipNgRo() && Flags.useMaterial3()
        }

        @JvmStatic
+4 −3
Original line number Diff line number Diff line
@@ -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);
            }
+6 −8
Original line number Diff line number Diff line
@@ -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)}.
 */

public abstract class TestMenuItem implements MenuItem {

    boolean enabled;
+8 −0
Original line number Diff line number Diff line
@@ -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
Loading