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

Commit bcc79b35 authored by Garfield Tan's avatar Garfield Tan
Browse files

Make sure shares and deletes are enabled after they're changed to be visible.

In ag/1106329 we disable all hidden menu items, but we never enable them
when they become visible. There is no way to have a similar one-for-all
logic to enable everything back because there are menu items visible but
disabled.

Bug: 34854166

Change-Id: I8d52183ef69d7fd60bc1c930b5e11e7aaf8dbdbb
parent f83f9744
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -74,7 +74,6 @@ public abstract class MenuManager {
        updateSelectAll(menu.findItem(R.id.menu_select_all));
        updateNewWindow(menu.findItem(R.id.menu_new_window));
        updateModePicker(menu.findItem(R.id.menu_grid), menu.findItem(R.id.menu_list));
        // Sort menu item is managed by SortMenuManager
        updateAdvanced(menu.findItem(R.id.menu_advanced));

        Menus.disableHiddenItems(menu);
+19 −5
Original line number Diff line number Diff line
@@ -133,7 +133,9 @@ public final class MenuManager extends com.android.documentsui.MenuManager {

    @Override
    protected void updateSettings(MenuItem settings) {
        settings.setVisible(mDirDetails.hasRootSettings());
        boolean enabled = mDirDetails.hasRootSettings();
        settings.setVisible(enabled);
        settings.setEnabled(enabled);
    }

    @Override
@@ -143,18 +145,21 @@ public final class MenuManager extends com.android.documentsui.MenuManager {

    @Override
    protected void updateOpenInContextMenu(MenuItem open, SelectionDetails selectionDetails) {
        open.setVisible(true);
        open.setEnabled(selectionDetails.size() == 1
                && !selectionDetails.containsPartialFiles());
    }

    @Override
    protected void updateOpenWith(MenuItem openWith, SelectionDetails selectionDetails) {
        openWith.setVisible(true);
        openWith.setEnabled(selectionDetails.canOpenWith());
    }

    @Override
    protected void updateOpenInNewWindow(
            MenuItem openInNewWindow, SelectionDetails selectionDetails) {
        openInNewWindow.setVisible(true);
        openInNewWindow.setEnabled(selectionDetails.size() == 1
            && !selectionDetails.containsPartialFiles());
    }
@@ -187,16 +192,20 @@ public final class MenuManager extends com.android.documentsui.MenuManager {

    @Override
    protected void updateExtractTo(MenuItem extractTo, SelectionDetails selectionDetails) {
        extractTo.setVisible(selectionDetails.canExtract());
        boolean enabled = selectionDetails.canExtract();
        extractTo.setVisible(enabled);
        extractTo.setEnabled(enabled);
    }

    @Override
    protected void updatePasteInto(MenuItem pasteInto, SelectionDetails selectionDetails) {
        pasteInto.setVisible(true);
        pasteInto.setEnabled(selectionDetails.canPasteInto() && mDirDetails.hasItemsToPaste());
    }

    @Override
    protected void updatePasteInto(MenuItem pasteInto, RootInfo root, DocumentInfo docInfo) {
        pasteInto.setVisible(true);
        pasteInto.setEnabled(root.supportsCreate()
                && docInfo != null
                && docInfo.isCreateSupported()
@@ -206,6 +215,7 @@ public final class MenuManager extends com.android.documentsui.MenuManager {
    @Override
    protected void updateSelectAll(MenuItem selectAll) {
        selectAll.setVisible(true);
        selectAll.setEnabled(true);
    }

    @Override
@@ -216,14 +226,18 @@ public final class MenuManager extends com.android.documentsui.MenuManager {

    @Override
    protected void updateShare(MenuItem share, SelectionDetails selectionDetails) {
        share.setVisible(!selectionDetails.containsDirectories()
        boolean enabled = !selectionDetails.containsDirectories()
                && !selectionDetails.containsPartialFiles()
                && !selectionDetails.canExtract());
                && !selectionDetails.canExtract();
        share.setVisible(enabled);
        share.setEnabled(enabled);
    }

    @Override
    protected void updateDelete(MenuItem delete, SelectionDetails selectionDetails) {
        delete.setVisible(selectionDetails.canDelete());
        boolean enabled = selectionDetails.canDelete();
        delete.setVisible(enabled);
        delete.setEnabled(enabled);
    }

    @Override
+3 −1
Original line number Diff line number Diff line
@@ -74,7 +74,9 @@ public final class MenuManager extends com.android.documentsui.MenuManager {

    @Override
    protected void updateSelectAll(MenuItem selectAll) {
        selectAll.setVisible(mState.allowMultiple);
        boolean enabled = mState.allowMultiple;
        selectAll.setVisible(enabled);
        selectAll.setEnabled(enabled);
    }

    @Override
+26 −0
Original line number Diff line number Diff line
@@ -191,6 +191,20 @@ public final class MenuManagerTest {
        moveTo.assertDisabled();
    }

    @Test
    public void testActionMenu_changeToCanDelete() {
        selectionDetails.canDelete = false;
        mgr.updateActionMenu(testMenu, selectionDetails);

        selectionDetails.canDelete = true;
        mgr.updateActionMenu(testMenu, selectionDetails);

        delete.assertVisible();
        delete.assertEnabled();
        moveTo.assertVisible();
        moveTo.assertEnabled();
    }

    @Test
    public void testActionMenu_containsDirectory() {
        selectionDetails.containDirectories = true;
@@ -200,6 +214,18 @@ public final class MenuManagerTest {
        share.assertInvisible();
    }

    @Test
    public void testActionMenu_removesDirectory() {
        selectionDetails.containDirectories = true;
        mgr.updateActionMenu(testMenu, selectionDetails);

        selectionDetails.containDirectories = false;
        mgr.updateActionMenu(testMenu, selectionDetails);

        share.assertVisible();
        share.assertEnabled();
    }

    @Test
    public void testActionMenu_cantExtract() {
        selectionDetails.canExtract = false;