diff options
4 files changed, 140 insertions, 1 deletions
diff --git a/src/com/android/documentsui/MenuManager.java b/src/com/android/documentsui/MenuManager.java index c6e95142f..05e7f1703 100644 --- a/src/com/android/documentsui/MenuManager.java +++ b/src/com/android/documentsui/MenuManager.java @@ -174,9 +174,11 @@ public abstract class MenuManager { public void updateContextMenuForContainer(Menu menu) { MenuItem paste = menu.findItem(R.id.menu_paste_from_clipboard); MenuItem selectAll = menu.findItem(R.id.menu_select_all); + MenuItem createDir = menu.findItem(R.id.menu_create_dir); paste.setEnabled(mDirDetails.hasItemsToPaste() && mDirDetails.canCreateDoc()); updateSelectAll(selectAll); + updateCreateDir(createDir); } /** diff --git a/tests/common/com/android/documentsui/testing/TestDirectoryDetails.java b/tests/common/com/android/documentsui/testing/TestDirectoryDetails.java index 81bbbefc5..82bd047d7 100644 --- a/tests/common/com/android/documentsui/testing/TestDirectoryDetails.java +++ b/tests/common/com/android/documentsui/testing/TestDirectoryDetails.java @@ -27,8 +27,8 @@ public class TestDirectoryDetails extends DirectoryDetails { public boolean isInRecents; public boolean hasRootSettings; public boolean hasItemsToPaste; + public boolean canCreateDoc; public boolean canCreateDirectory; - public boolean getDisplayFileSize; public TestDirectoryDetails() { super(null); @@ -55,6 +55,11 @@ public class TestDirectoryDetails extends DirectoryDetails { } @Override + public boolean canCreateDoc() { + return canCreateDoc; + } + + @Override public boolean canCreateDirectory() { return canCreateDirectory; } diff --git a/tests/unit/com/android/documentsui/files/MenuManagerTest.java b/tests/unit/com/android/documentsui/files/MenuManagerTest.java index fd1f6cf05..5d1fb7de2 100644 --- a/tests/unit/com/android/documentsui/files/MenuManagerTest.java +++ b/tests/unit/com/android/documentsui/files/MenuManagerTest.java @@ -17,6 +17,7 @@ package com.android.documentsui.files; import static junit.framework.Assert.assertEquals; + import static org.junit.Assert.assertTrue; import android.provider.DocumentsContract.Document; @@ -62,6 +63,8 @@ public final class MenuManagerTest { private TestMenuItem pasteInto; private TestMenuItem advanced; private TestMenuItem eject; + + private TestActivity testActivity; private TestSelectionDetails selectionDetails; private TestDirectoryDetails dirDetails; private TestSearchViewManager testSearchManager; @@ -239,8 +242,70 @@ public final class MenuManagerTest { mgr.updateContextMenuForContainer(testMenu); selectAll.assertVisible(); + selectAll.assertEnabled(); + paste.assertVisible(); + paste.assertDisabled(); + createDir.assertVisible(); + createDir.assertDisabled(); + } + + @Test + public void testContextMenu_EmptyArea_NoItemToPaste() { + dirDetails.hasItemsToPaste = false; + dirDetails.canCreateDoc = true; + + mgr.updateContextMenuForContainer(testMenu); + + selectAll.assertVisible(); + selectAll.assertEnabled(); + paste.assertVisible(); + paste.assertDisabled(); + createDir.assertVisible(); + createDir.assertDisabled(); + } + + @Test + public void testContextMenu_EmptyArea_CantCreateDoc() { + dirDetails.hasItemsToPaste = true; + dirDetails.canCreateDoc = false; + + mgr.updateContextMenuForContainer(testMenu); + + selectAll.assertVisible(); + selectAll.assertEnabled(); paste.assertVisible(); + paste.assertDisabled(); createDir.assertVisible(); + createDir.assertDisabled(); + } + + @Test + public void testContextMenu_EmptyArea_CanPaste() { + dirDetails.hasItemsToPaste = true; + dirDetails.canCreateDoc = true; + + mgr.updateContextMenuForContainer(testMenu); + + selectAll.assertVisible(); + selectAll.assertEnabled(); + paste.assertVisible(); + paste.assertEnabled(); + createDir.assertVisible(); + createDir.assertDisabled(); + } + + @Test + public void testContextMenu_EmptyArea_CanCreateDirectory() { + dirDetails.canCreateDirectory = true; + + mgr.updateContextMenuForContainer(testMenu); + + selectAll.assertVisible(); + selectAll.assertEnabled(); + paste.assertVisible(); + paste.assertDisabled(); + createDir.assertVisible(); + createDir.assertEnabled(); } @Test diff --git a/tests/unit/com/android/documentsui/picker/MenuManagerTest.java b/tests/unit/com/android/documentsui/picker/MenuManagerTest.java index bf9f5cf0f..f282bd76e 100644 --- a/tests/unit/com/android/documentsui/picker/MenuManagerTest.java +++ b/tests/unit/com/android/documentsui/picker/MenuManagerTest.java @@ -182,10 +182,77 @@ public final class MenuManagerTest { @Test public void testContextMenu_EmptyArea() { + dirDetails.hasItemsToPaste = false; + dirDetails.canCreateDoc = false; + dirDetails.canCreateDirectory = false; + + mgr.updateContextMenuForContainer(testMenu); + + selectAll.assertVisible(); + selectAll.assertEnabled(); + paste.assertVisible(); + paste.assertDisabled(); + createDir.assertVisible(); + createDir.assertDisabled(); + } + + @Test + public void testContextMenu_EmptyArea_NoItemToPaste() { + dirDetails.hasItemsToPaste = false; + dirDetails.canCreateDoc = true; + + mgr.updateContextMenuForContainer(testMenu); + + selectAll.assertVisible(); + selectAll.assertEnabled(); + paste.assertVisible(); + paste.assertDisabled(); + createDir.assertVisible(); + createDir.assertDisabled(); + } + + @Test + public void testContextMenu_EmptyArea_CantCreateDoc() { + dirDetails.hasItemsToPaste = true; + dirDetails.canCreateDoc = false; + mgr.updateContextMenuForContainer(testMenu); + + selectAll.assertVisible(); + selectAll.assertEnabled(); + paste.assertVisible(); + paste.assertDisabled(); + createDir.assertVisible(); + createDir.assertDisabled(); + } + + @Test + public void testContextMenu_EmptyArea_canPaste() { + dirDetails.hasItemsToPaste = true; + dirDetails.canCreateDoc = true; + + mgr.updateContextMenuForContainer(testMenu); + selectAll.assertVisible(); + selectAll.assertEnabled(); paste.assertVisible(); + paste.assertEnabled(); createDir.assertVisible(); + createDir.assertDisabled(); + } + + @Test + public void testContextMenu_EmptyArea_CanCreateDirectory() { + dirDetails.canCreateDirectory = true; + + mgr.updateContextMenuForContainer(testMenu); + + selectAll.assertVisible(); + selectAll.assertEnabled(); + paste.assertVisible(); + paste.assertDisabled(); + createDir.assertVisible(); + createDir.assertEnabled(); } @Test |