Move menu managers to respective packages.
Also add some unit tests to cover mixed docs in context menus.
Change-Id: I764383daed21afa5e355d85f807ad4ef1710593e
diff --git a/src/com/android/documentsui/MenuManager.java b/src/com/android/documentsui/MenuManager.java
index efe5703..55dffb1 100644
--- a/src/com/android/documentsui/MenuManager.java
+++ b/src/com/android/documentsui/MenuManager.java
@@ -31,8 +31,8 @@
public abstract class MenuManager {
- final State mState;
- final SearchViewManager mSearchManager;
+ final protected State mState;
+ final protected SearchViewManager mSearchManager;
public MenuManager(SearchViewManager searchManager, State displayState) {
mSearchManager = searchManager;
@@ -98,7 +98,7 @@
* unselectable item in pickers
*/
@VisibleForTesting
- void updateContextMenuForFiles(Menu menu, SelectionDetails selectionDetails) {
+ public void updateContextMenuForFiles(Menu menu, SelectionDetails selectionDetails) {
assert(selectionDetails != null);
MenuItem share = menu.findItem(R.id.menu_share);
@@ -125,7 +125,7 @@
* an unselectable item in pickers
*/
@VisibleForTesting
- void updateContextMenuForDirs(Menu menu, SelectionDetails selectionDetails) {
+ public void updateContextMenuForDirs(Menu menu, SelectionDetails selectionDetails) {
assert(selectionDetails != null);
MenuItem openInNewWindow = menu.findItem(R.id.menu_open_in_new_window);
@@ -145,7 +145,7 @@
* Update shared context menu items of both files and folders context menus.
*/
@VisibleForTesting
- void updateContextMenu(Menu menu, SelectionDetails selectionDetails) {
+ public void updateContextMenu(Menu menu, SelectionDetails selectionDetails) {
assert(selectionDetails != null);
MenuItem cut = menu.findItem(R.id.menu_cut_to_clipboard);
@@ -166,7 +166,7 @@
* Called when user tries to generate a context menu anchored to an empty pane.
*/
@VisibleForTesting
- void updateContextMenuForContainer(Menu menu, DirectoryDetails directoryDetails) {
+ public void updateContextMenuForContainer(Menu menu, DirectoryDetails directoryDetails) {
MenuItem paste = menu.findItem(R.id.menu_paste_from_clipboard);
MenuItem selectAll = menu.findItem(R.id.menu_select_all);
@@ -185,72 +185,75 @@
updateEject(eject, root);
}
- void updateModePicker(MenuItem grid, MenuItem list, DirectoryDetails directoryDetails) {
+ protected void updateModePicker(
+ MenuItem grid, MenuItem list, DirectoryDetails directoryDetails) {
grid.setVisible(mState.derivedMode != State.MODE_GRID);
list.setVisible(mState.derivedMode != State.MODE_LIST);
}
- void updateAdvanced(MenuItem advanced, DirectoryDetails directoryDetails) {
+ protected void updateAdvanced(MenuItem advanced, DirectoryDetails directoryDetails) {
advanced.setVisible(mState.showAdvancedOption);
advanced.setTitle(mState.showAdvancedOption && mState.showAdvanced
? R.string.menu_advanced_hide : R.string.menu_advanced_show);
}
- void updateSettings(MenuItem settings, DirectoryDetails directoryDetails) {
+ protected void updateSettings(MenuItem settings, DirectoryDetails directoryDetails) {
settings.setVisible(false);
}
- void updateSettings(MenuItem settings, RootInfo root) {
+ protected void updateSettings(MenuItem settings, RootInfo root) {
settings.setVisible(false);
}
- void updateEject(MenuItem eject, RootInfo root) {
+ protected void updateEject(MenuItem eject, RootInfo root) {
eject.setVisible(false);
}
- void updateNewWindow(MenuItem newWindow, DirectoryDetails directoryDetails) {
+ protected void updateNewWindow(MenuItem newWindow, DirectoryDetails directoryDetails) {
newWindow.setVisible(false);
}
- void updateOpenInActionMode(MenuItem open, SelectionDetails selectionDetails) {
+ protected void updateOpenInActionMode(MenuItem open, SelectionDetails selectionDetails) {
open.setVisible(false);
}
- void updateOpenWith(MenuItem openWith, SelectionDetails selectionDetails) {
+ protected void updateOpenWith(MenuItem openWith, SelectionDetails selectionDetails) {
openWith.setVisible(false);
}
- void updateOpenInNewWindow(MenuItem openInNewWindow, SelectionDetails selectionDetails) {
+ protected void updateOpenInNewWindow(
+ MenuItem openInNewWindow, SelectionDetails selectionDetails) {
openInNewWindow.setVisible(false);
}
- void updateShare(MenuItem share, SelectionDetails selectionDetails) {
+ protected void updateShare(MenuItem share, SelectionDetails selectionDetails) {
share.setVisible(false);
}
- void updateDelete(MenuItem delete, SelectionDetails selectionDetails) {
+ protected void updateDelete(MenuItem delete, SelectionDetails selectionDetails) {
delete.setVisible(false);
}
- void updateRename(MenuItem rename, SelectionDetails selectionDetails) {
+ protected void updateRename(MenuItem rename, SelectionDetails selectionDetails) {
rename.setVisible(false);
}
- void updateMoveTo(MenuItem moveTo, SelectionDetails selectionDetails) {
+ protected void updateMoveTo(MenuItem moveTo, SelectionDetails selectionDetails) {
moveTo.setVisible(false);
}
- void updateCopyTo(MenuItem copyTo, SelectionDetails selectionDetails) {
+ protected void updateCopyTo(MenuItem copyTo, SelectionDetails selectionDetails) {
copyTo.setVisible(false);
}
- void updatePasteInto(MenuItem pasteInto, SelectionDetails selectionDetails) {
+ protected void updatePasteInto(MenuItem pasteInto, SelectionDetails selectionDetails) {
pasteInto.setVisible(false);
}
- abstract void updateOpenInContextMenu(MenuItem open, SelectionDetails selectionDetails);
- abstract void updateSelectAll(MenuItem selectAll);
- abstract void updateCreateDir(MenuItem createDir, DirectoryDetails directoryDetails);
+ protected abstract void updateOpenInContextMenu(
+ MenuItem open, SelectionDetails selectionDetails);
+ protected abstract void updateSelectAll(MenuItem selectAll);
+ protected abstract void updateCreateDir(MenuItem createDir, DirectoryDetails directoryDetails);
/**
* Access to meta data about the selection.
diff --git a/src/com/android/documentsui/SearchViewManager.java b/src/com/android/documentsui/SearchViewManager.java
index 6ee455a..a632136 100644
--- a/src/com/android/documentsui/SearchViewManager.java
+++ b/src/com/android/documentsui/SearchViewManager.java
@@ -136,7 +136,7 @@
&& ((root.flags & Root.FLAG_SUPPORTS_SEARCH) != 0));
}
- protected void showMenu(boolean visible) {
+ public void showMenu(boolean visible) {
if (mMenuItem == null) {
if (DEBUG) Log.d(TAG, "showMenu called before Search MenuItem installed.");
return;
diff --git a/src/com/android/documentsui/manager/ManageActivity.java b/src/com/android/documentsui/manager/ManageActivity.java
index 9f1c6e7..4f5de12 100644
--- a/src/com/android/documentsui/manager/ManageActivity.java
+++ b/src/com/android/documentsui/manager/ManageActivity.java
@@ -37,8 +37,6 @@
import com.android.documentsui.BaseActivity;
import com.android.documentsui.DocumentsApplication;
-import com.android.documentsui.FilesMenuManager;
-import com.android.documentsui.MenuManager;
import com.android.documentsui.MenuManager.DirectoryDetails;
import com.android.documentsui.Metrics;
import com.android.documentsui.OperationDialogFragment;
@@ -82,7 +80,7 @@
// We use the time gap to figure out whether to close app or reopen the drawer.
private long mDrawerLastFiddled;
private DocumentClipper mClipper;
- private FilesMenuManager mMenuManager;
+ private MenuManager mMenuManager;
private DirectoryDetails mDetails;
public ManageActivity() {
@@ -94,7 +92,7 @@
super.onCreate(icicle);
mClipper = DocumentsApplication.getDocumentClipper(this);
- mMenuManager = new FilesMenuManager(mSearchManager, getDisplayState());
+ mMenuManager = new MenuManager(mSearchManager, getDisplayState());
mDetails = new DirectoryDetails(this) {
@Override
public boolean hasItemsToPaste() {
diff --git a/src/com/android/documentsui/FilesMenuManager.java b/src/com/android/documentsui/manager/MenuManager.java
similarity index 72%
rename from src/com/android/documentsui/FilesMenuManager.java
rename to src/com/android/documentsui/manager/MenuManager.java
index 3ad89f6..7fca108 100644
--- a/src/com/android/documentsui/FilesMenuManager.java
+++ b/src/com/android/documentsui/manager/MenuManager.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.manager;
import android.app.Fragment;
import android.view.Menu;
@@ -22,12 +22,14 @@
import android.view.MenuItem;
import android.view.View;
+import com.android.documentsui.R;
+import com.android.documentsui.SearchViewManager;
import com.android.documentsui.base.RootInfo;
import com.android.documentsui.base.State;
-public final class FilesMenuManager extends MenuManager {
+public final class MenuManager extends com.android.documentsui.MenuManager {
- public FilesMenuManager(SearchViewManager searchManager, State displayState) {
+ public MenuManager(SearchViewManager searchManager, State displayState) {
super(searchManager, displayState);
}
@@ -78,86 +80,87 @@
}
@Override
- void updateSettings(MenuItem settings, RootInfo root) {
+ protected void updateSettings(MenuItem settings, RootInfo root) {
settings.setVisible(true);
settings.setEnabled(root.hasSettings());
}
@Override
- void updateEject(MenuItem eject, RootInfo root) {
+ protected void updateEject(MenuItem eject, RootInfo root) {
eject.setVisible(true);
eject.setEnabled(root.supportsEject() && !root.ejecting);
}
@Override
- void updateSettings(MenuItem settings, DirectoryDetails directoryDetails) {
+ protected void updateSettings(MenuItem settings, DirectoryDetails directoryDetails) {
settings.setVisible(directoryDetails.hasRootSettings());
}
@Override
- void updateNewWindow(MenuItem newWindow, DirectoryDetails directoryDetails) {
+ protected void updateNewWindow(MenuItem newWindow, DirectoryDetails directoryDetails) {
newWindow.setVisible(directoryDetails.shouldShowFancyFeatures());
}
@Override
- void updateOpenInContextMenu(MenuItem open, SelectionDetails selectionDetails) {
+ protected void updateOpenInContextMenu(MenuItem open, SelectionDetails selectionDetails) {
open.setEnabled(selectionDetails.size() == 1
&& !selectionDetails.containsPartialFiles());
}
@Override
- void updateOpenWith(MenuItem openWith, SelectionDetails selectionDetails) {
+ protected void updateOpenWith(MenuItem openWith, SelectionDetails selectionDetails) {
openWith.setEnabled(selectionDetails.size() == 1
&& !selectionDetails.containsPartialFiles());
}
@Override
- void updateOpenInNewWindow(MenuItem openInNewWindow, SelectionDetails selectionDetails) {
+ protected void updateOpenInNewWindow(
+ MenuItem openInNewWindow, SelectionDetails selectionDetails) {
openInNewWindow.setEnabled(selectionDetails.size() == 1
&& !selectionDetails.containsPartialFiles());
}
@Override
- void updateMoveTo(MenuItem moveTo, SelectionDetails selectionDetails) {
+ protected void updateMoveTo(MenuItem moveTo, SelectionDetails selectionDetails) {
moveTo.setVisible(true);
moveTo.setEnabled(!selectionDetails.containsPartialFiles() && selectionDetails.canDelete());
}
@Override
- void updateCopyTo(MenuItem copyTo, SelectionDetails selectionDetails) {
+ protected void updateCopyTo(MenuItem copyTo, SelectionDetails selectionDetails) {
copyTo.setVisible(true);
copyTo.setEnabled(!selectionDetails.containsPartialFiles());
}
@Override
- void updatePasteInto(MenuItem pasteInto, SelectionDetails selectionDetails) {
+ protected void updatePasteInto(MenuItem pasteInto, SelectionDetails selectionDetails) {
pasteInto.setEnabled(selectionDetails.canPasteInto());
}
@Override
- void updateSelectAll(MenuItem selectAll) {
+ protected void updateSelectAll(MenuItem selectAll) {
selectAll.setVisible(true);
}
@Override
- void updateCreateDir(MenuItem createDir, DirectoryDetails directoryDetails) {
+ protected void updateCreateDir(MenuItem createDir, DirectoryDetails directoryDetails) {
createDir.setVisible(true);
createDir.setEnabled(directoryDetails.canCreateDirectory());
}
@Override
- void updateShare(MenuItem share, SelectionDetails selectionDetails) {
+ protected void updateShare(MenuItem share, SelectionDetails selectionDetails) {
share.setVisible(!selectionDetails.containsDirectories()
&& !selectionDetails.containsPartialFiles());
}
@Override
- void updateDelete(MenuItem delete, SelectionDetails selectionDetails) {
+ protected void updateDelete(MenuItem delete, SelectionDetails selectionDetails) {
delete.setVisible(selectionDetails.canDelete());
}
@Override
- void updateRename(MenuItem rename, SelectionDetails selectionDetails) {
+ protected void updateRename(MenuItem rename, SelectionDetails selectionDetails) {
rename.setVisible(true);
rename.setEnabled(!selectionDetails.containsPartialFiles() && selectionDetails.canRename());
}
diff --git a/src/com/android/documentsui/DocumentsMenuManager.java b/src/com/android/documentsui/picker/MenuManager.java
similarity index 78%
rename from src/com/android/documentsui/DocumentsMenuManager.java
rename to src/com/android/documentsui/picker/MenuManager.java
index 4104a2c..5385482 100644
--- a/src/com/android/documentsui/DocumentsMenuManager.java
+++ b/src/com/android/documentsui/picker/MenuManager.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.picker;
import static com.android.documentsui.base.State.ACTION_CREATE;
import static com.android.documentsui.base.State.ACTION_GET_CONTENT;
@@ -25,13 +25,14 @@
import android.view.Menu;
import android.view.MenuItem;
+import com.android.documentsui.SearchViewManager;
import com.android.documentsui.base.State;
-public final class DocumentsMenuManager extends MenuManager {
+public final class MenuManager extends com.android.documentsui.MenuManager {
private boolean mPicking;
- public DocumentsMenuManager(SearchViewManager searchManager, State displayState) {
+ public MenuManager(SearchViewManager searchManager, State displayState) {
super(searchManager, displayState);
mPicking = mState.action == ACTION_CREATE
@@ -50,7 +51,8 @@
}
@Override
- void updateModePicker(MenuItem grid, MenuItem list, DirectoryDetails directoryDetails) {
+ protected void updateModePicker(
+ MenuItem grid, MenuItem list, DirectoryDetails directoryDetails) {
// No display options in recent directories
if (mPicking && directoryDetails.isInRecents()) {
grid.setVisible(false);
@@ -61,23 +63,23 @@
}
@Override
- void updateSelectAll(MenuItem selectAll) {
+ protected void updateSelectAll(MenuItem selectAll) {
selectAll.setVisible(mState.allowMultiple);
}
@Override
- void updateCreateDir(MenuItem createDir, DirectoryDetails directoryDetails) {
+ protected void updateCreateDir(MenuItem createDir, DirectoryDetails directoryDetails) {
createDir.setVisible(mPicking);
createDir.setEnabled(mPicking && directoryDetails.canCreateDirectory());
}
@Override
- void updateOpenInActionMode(MenuItem open, SelectionDetails selectionDetails) {
+ protected void updateOpenInActionMode(MenuItem open, SelectionDetails selectionDetails) {
updateOpen(open, selectionDetails);
}
@Override
- void updateOpenInContextMenu(MenuItem open, SelectionDetails selectionDetails) {
+ protected void updateOpenInContextMenu(MenuItem open, SelectionDetails selectionDetails) {
updateOpen(open, selectionDetails);
}
diff --git a/src/com/android/documentsui/picker/PickActivity.java b/src/com/android/documentsui/picker/PickActivity.java
index dbe722f..9f738c8 100644
--- a/src/com/android/documentsui/picker/PickActivity.java
+++ b/src/com/android/documentsui/picker/PickActivity.java
@@ -43,8 +43,6 @@
import com.android.documentsui.BaseActivity;
import com.android.documentsui.DocumentsApplication;
-import com.android.documentsui.DocumentsMenuManager;
-import com.android.documentsui.MenuManager;
import com.android.documentsui.MenuManager.DirectoryDetails;
import com.android.documentsui.base.DocumentInfo;
import com.android.documentsui.base.MimePredicate;
@@ -68,7 +66,7 @@
public class PickActivity extends BaseActivity {
private static final int CODE_FORWARD = 42;
private static final String TAG = "DocumentsActivity";
- private DocumentsMenuManager mMenuManager;
+ private MenuManager mMenuManager;
private DirectoryDetails mDetails;
public PickActivity() {
@@ -78,7 +76,7 @@
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
- mMenuManager = new DocumentsMenuManager(mSearchManager, getDisplayState());
+ mMenuManager = new MenuManager(mSearchManager, getDisplayState());
mDetails = new DirectoryDetails(this);
if (mState.action == ACTION_CREATE) {
diff --git a/tests/common/com/android/documentsui/testing/TestSearchViewManager.java b/tests/common/com/android/documentsui/testing/TestSearchViewManager.java
index a8d4ce0..76319c3 100644
--- a/tests/common/com/android/documentsui/testing/TestSearchViewManager.java
+++ b/tests/common/com/android/documentsui/testing/TestSearchViewManager.java
@@ -42,7 +42,7 @@
}
@Override
- protected void showMenu(boolean visible) {
+ public void showMenu(boolean visible) {
showMenuCalled = true;
}
diff --git a/tests/functional/com/android/documentsui/RenameDocumentUiTest.java b/tests/functional/com/android/documentsui/RenameDocumentUiTest.java
index 5ed4d79..b70477d 100644
--- a/tests/functional/com/android/documentsui/RenameDocumentUiTest.java
+++ b/tests/functional/com/android/documentsui/RenameDocumentUiTest.java
@@ -18,8 +18,8 @@
import android.support.test.uiautomator.UiObjectNotFoundException;
import android.test.suitebuilder.annotation.LargeTest;
+
import com.android.documentsui.R;
-import com.android.documentsui.R.string;
import com.android.documentsui.manager.ManageActivity;
@LargeTest
@@ -38,7 +38,6 @@
bots.roots.closeDrawer();
}
- // TODO: Move this over to the FilesMenuManagerTest.
public void testRenameEnabled_SingleSelection() throws Exception {
bots.directory.selectDocument(fileName1, 1);
bots.main.openOverflowMenu();
@@ -48,7 +47,6 @@
device.pressBack();
}
- // TODO: Move this over to the FilesMenuManagerTest.
public void testNoRenameSupport_SingleSelection() throws Exception {
bots.directory.selectDocument(fileNameNoRename, 1);
bots.main.openOverflowMenu();
@@ -58,7 +56,6 @@
device.pressBack();
}
- // TODO: Move this over to the FilesMenuManagerTest.
public void testOneHasRenameSupport_MultipleSelection() throws Exception {
bots.directory.selectDocument(fileName1, 1);
bots.directory.selectDocument(fileNameNoRename, 2);
@@ -69,7 +66,6 @@
device.pressBack();
}
- // TODO: Move this over to the FilesMenuManagerTest.
public void testRenameDisabled_MultipleSelection() throws Exception {
bots.directory.selectDocument(fileName1, 1);
bots.directory.selectDocument(fileName2, 2);
diff --git a/tests/unit/com/android/documentsui/FilesMenuManagerTest.java b/tests/unit/com/android/documentsui/manager/MenuManagerTest.java
similarity index 75%
rename from tests/unit/com/android/documentsui/FilesMenuManagerTest.java
rename to tests/unit/com/android/documentsui/manager/MenuManagerTest.java
index bd131a0..9565b9c 100644
--- a/tests/unit/com/android/documentsui/FilesMenuManagerTest.java
+++ b/tests/unit/com/android/documentsui/manager/MenuManagerTest.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.manager;
import static junit.framework.Assert.assertEquals;
@@ -24,6 +24,7 @@
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
+import com.android.documentsui.R;
import com.android.documentsui.base.RootInfo;
import com.android.documentsui.base.State;
import com.android.documentsui.testing.TestDirectoryDetails;
@@ -37,10 +38,9 @@
import org.junit.Test;
import org.junit.runner.RunWith;
-
@RunWith(AndroidJUnit4.class)
@SmallTest
-public final class FilesMenuManagerTest {
+public final class MenuManagerTest {
private TestMenu testMenu;
private TestMenuItem rename;
@@ -104,7 +104,7 @@
selectionDetails.canDelete = true;
selectionDetails.canRename = true;
- FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
+ MenuManager mgr = new MenuManager(testSearchManager, state);
mgr.updateActionMenu(testMenu, selectionDetails);
rename.assertEnabled();
@@ -117,7 +117,7 @@
@Test
public void testActionMenu_containsPartial() {
selectionDetails.containPartial = true;
- FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
+ MenuManager mgr = new MenuManager(testSearchManager, state);
mgr.updateActionMenu(testMenu, selectionDetails);
rename.assertDisabled();
@@ -129,7 +129,7 @@
@Test
public void testActionMenu_cantRename() {
selectionDetails.canRename = false;
- FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
+ MenuManager mgr = new MenuManager(testSearchManager, state);
mgr.updateActionMenu(testMenu, selectionDetails);
rename.assertDisabled();
@@ -138,7 +138,7 @@
@Test
public void testActionMenu_cantDelete() {
selectionDetails.canDelete = false;
- FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
+ MenuManager mgr = new MenuManager(testSearchManager, state);
mgr.updateActionMenu(testMenu, selectionDetails);
delete.assertInvisible();
@@ -149,7 +149,7 @@
@Test
public void testActionMenu_containsDirectory() {
selectionDetails.containDirectories = true;
- FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
+ MenuManager mgr = new MenuManager(testSearchManager, state);
mgr.updateActionMenu(testMenu, selectionDetails);
// We can't share directories
@@ -158,7 +158,7 @@
@Test
public void testOptionMenu() {
- FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
+ MenuManager mgr = new MenuManager(testSearchManager, state);
mgr.updateOptionMenu(testMenu, directoryDetails);
advanced.assertInvisible();
@@ -171,7 +171,7 @@
public void testOptionMenu_showAdvanced() {
state.showAdvanced = true;
state.showAdvancedOption = true;
- FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
+ MenuManager mgr = new MenuManager(testSearchManager, state);
mgr.updateOptionMenu(testMenu, directoryDetails);
advanced.assertVisible();
@@ -181,7 +181,7 @@
@Test
public void testOptionMenu_canCreateDirectory() {
directoryDetails.canCreateDirectory = true;
- FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
+ MenuManager mgr = new MenuManager(testSearchManager, state);
mgr.updateOptionMenu(testMenu, directoryDetails);
createDir.assertEnabled();
@@ -190,7 +190,7 @@
@Test
public void testOptionMenu_hasRootSettings() {
directoryDetails.hasRootSettings = true;
- FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
+ MenuManager mgr = new MenuManager(testSearchManager, state);
mgr.updateOptionMenu(testMenu, directoryDetails);
settings.assertVisible();
@@ -199,7 +199,7 @@
@Test
public void testOptionMenu_shouldShowFancyFeatures() {
directoryDetails.shouldShowFancyFeatures = true;
- FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
+ MenuManager mgr = new MenuManager(testSearchManager, state);
mgr.updateOptionMenu(testMenu, directoryDetails);
newWindow.assertVisible();
@@ -208,7 +208,7 @@
@Test
public void testInflateContextMenu_Files() {
TestMenuInflater inflater = new TestMenuInflater();
- FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
+ MenuManager mgr = new MenuManager(testSearchManager, state);
selectionDetails.containFiles = true;
selectionDetails.containDirectories = false;
@@ -220,7 +220,7 @@
@Test
public void testInflateContextMenu_Dirs() {
TestMenuInflater inflater = new TestMenuInflater();
- FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
+ MenuManager mgr = new MenuManager(testSearchManager, state);
selectionDetails.containFiles = false;
selectionDetails.containDirectories = true;
@@ -232,7 +232,7 @@
@Test
public void testInflateContextMenu_Mixed() {
TestMenuInflater inflater = new TestMenuInflater();
- FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
+ MenuManager mgr = new MenuManager(testSearchManager, state);
selectionDetails.containFiles = true;
selectionDetails.containDirectories = true;
@@ -243,7 +243,7 @@
@Test
public void testContextMenu_EmptyArea() {
- FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
+ MenuManager mgr = new MenuManager(testSearchManager, state);
mgr.updateContextMenuForContainer(testMenu, directoryDetails);
selectAll.assertVisible();
@@ -254,7 +254,7 @@
@Test
public void testContextMenu_OnFile() {
selectionDetails.size = 1;
- FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
+ MenuManager mgr = new MenuManager(testSearchManager, state);
mgr.updateContextMenuForFiles(testMenu, selectionDetails);
open.assertVisible();
open.assertEnabled();
@@ -269,7 +269,7 @@
@Test
public void testContextMenu_OnMultipleFiles() {
- FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
+ MenuManager mgr = new MenuManager(testSearchManager, state);
selectionDetails.size = 3;
mgr.updateContextMenuForFiles(testMenu, selectionDetails);
open.assertVisible();
@@ -280,7 +280,7 @@
@Test
public void testContextMenu_OnWritableDirectory() {
- FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
+ MenuManager mgr = new MenuManager(testSearchManager, state);
selectionDetails.size = 1;
selectionDetails.canPasteInto = true;
mgr.updateContextMenuForDirs(testMenu, selectionDetails);
@@ -296,7 +296,7 @@
@Test
public void testContextMenu_OnNonWritableDirectory() {
- FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
+ com.android.documentsui.manager.MenuManager mgr = new MenuManager(testSearchManager, state);
selectionDetails.size = 1;
selectionDetails.canPasteInto = false;
mgr.updateContextMenuForDirs(testMenu, selectionDetails);
@@ -312,7 +312,7 @@
@Test
public void testContextMenu_OnMultipleDirectories() {
- FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
+ MenuManager mgr = new MenuManager(testSearchManager, state);
selectionDetails.size = 3;
mgr.updateContextMenuForDirs(testMenu, selectionDetails);
openInNewWindow.assertVisible();
@@ -320,8 +320,57 @@
}
@Test
+ public void testContextMenu_OnMixedDocs() {
+ MenuManager mgr = new MenuManager(testSearchManager, state);
+ selectionDetails.containDirectories = true;
+ selectionDetails.containFiles = true;
+ selectionDetails.size = 2;
+ selectionDetails.canDelete = true;
+ mgr.updateContextMenu(testMenu, selectionDetails);
+ cut.assertVisible();
+ cut.assertEnabled();
+ copy.assertVisible();
+ copy.assertEnabled();
+ delete.assertVisible();
+ delete.assertEnabled();
+ }
+
+ @Test
+ public void testContextMenu_OnMixedDocs_hasPartialFile() {
+ MenuManager mgr = new MenuManager(testSearchManager, state);
+ selectionDetails.containDirectories = true;
+ selectionDetails.containFiles = true;
+ selectionDetails.size = 2;
+ selectionDetails.containPartial = true;
+ selectionDetails.canDelete = true;
+ mgr.updateContextMenu(testMenu, selectionDetails);
+ cut.assertVisible();
+ cut.assertDisabled();
+ copy.assertVisible();
+ copy.assertDisabled();
+ delete.assertVisible();
+ delete.assertEnabled();
+ }
+
+ @Test
+ public void testContextMenu_OnMixedDocs_hasUndeletableFile() {
+ MenuManager mgr = new MenuManager(testSearchManager, state);
+ selectionDetails.containDirectories = true;
+ selectionDetails.containFiles = true;
+ selectionDetails.size = 2;
+ selectionDetails.canDelete = false;
+ mgr.updateContextMenu(testMenu, selectionDetails);
+ cut.assertVisible();
+ cut.assertDisabled();
+ copy.assertVisible();
+ copy.assertEnabled();
+ delete.assertVisible();
+ delete.assertDisabled();
+ }
+
+ @Test
public void testRootContextMenu() {
- FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
+ MenuManager mgr = new MenuManager(testSearchManager, state);
mgr.updateRootContextMenu(testMenu, testRootInfo);
eject.assertVisible();
@@ -334,7 +383,7 @@
@Test
public void testRootContextMenu_hasRootSettings() {
testRootInfo.flags = Root.FLAG_HAS_SETTINGS;
- FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
+ MenuManager mgr = new MenuManager(testSearchManager, state);
mgr.updateRootContextMenu(testMenu, testRootInfo);
settings.assertEnabled();
@@ -343,7 +392,7 @@
@Test
public void testRootContextMenu_eject() {
testRootInfo.flags = Root.FLAG_SUPPORTS_EJECT;
- FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
+ MenuManager mgr = new MenuManager(testSearchManager, state);
mgr.updateRootContextMenu(testMenu, testRootInfo);
eject.assertEnabled();
@@ -353,7 +402,7 @@
public void testRootContextMenu_ejectInProcess() {
testRootInfo.flags = Root.FLAG_SUPPORTS_EJECT;
testRootInfo.ejecting = true;
- FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
+ MenuManager mgr = new MenuManager(testSearchManager, state);
mgr.updateRootContextMenu(testMenu, testRootInfo);
eject.assertDisabled();
diff --git a/tests/unit/com/android/documentsui/DocumentsMenuManagerTest.java b/tests/unit/com/android/documentsui/picker/MenuManagerTest.java
similarity index 73%
rename from tests/unit/com/android/documentsui/DocumentsMenuManagerTest.java
rename to tests/unit/com/android/documentsui/picker/MenuManagerTest.java
index ad79062..7a0eec7 100644
--- a/tests/unit/com/android/documentsui/DocumentsMenuManagerTest.java
+++ b/tests/unit/com/android/documentsui/picker/MenuManagerTest.java
@@ -14,10 +14,11 @@
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.picker;
import static com.android.documentsui.base.State.ACTION_CREATE;
import static com.android.documentsui.base.State.ACTION_OPEN;
+
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -25,6 +26,7 @@
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
+import com.android.documentsui.R;
import com.android.documentsui.base.RootInfo;
import com.android.documentsui.base.State;
import com.android.documentsui.testing.TestDirectoryDetails;
@@ -39,7 +41,7 @@
@RunWith(AndroidJUnit4.class)
@SmallTest
-public final class DocumentsMenuManagerTest {
+public final class MenuManagerTest {
private TestMenu testMenu;
private TestMenuItem open;
@@ -98,7 +100,7 @@
@Test
public void testActionMenu() {
- DocumentsMenuManager mgr = new DocumentsMenuManager(testSearchManager, state);
+ MenuManager mgr = new MenuManager(testSearchManager, state);
mgr.updateActionMenu(testMenu, selectionDetails);
open.assertInvisible();
@@ -111,7 +113,7 @@
@Test
public void testActionMenu_openAction() {
state.action = ACTION_OPEN;
- DocumentsMenuManager mgr = new DocumentsMenuManager(testSearchManager, state);
+ MenuManager mgr = new MenuManager(testSearchManager, state);
mgr.updateActionMenu(testMenu, selectionDetails);
open.assertVisible();
@@ -121,7 +123,7 @@
@Test
public void testActionMenu_notAllowMultiple() {
state.allowMultiple = false;
- DocumentsMenuManager mgr = new DocumentsMenuManager(testSearchManager, state);
+ MenuManager mgr = new MenuManager(testSearchManager, state);
mgr.updateActionMenu(testMenu, selectionDetails);
selectAll.assertInvisible();
@@ -129,7 +131,7 @@
@Test
public void testOptionMenu() {
- DocumentsMenuManager mgr = new DocumentsMenuManager(testSearchManager, state);
+ MenuManager mgr = new MenuManager(testSearchManager, state);
mgr.updateOptionMenu(testMenu, directoryDetails);
advanced.assertInvisible();
@@ -142,7 +144,7 @@
public void testOptionMenu_notPicking() {
state.action = ACTION_OPEN;
state.derivedMode = State.MODE_LIST;
- DocumentsMenuManager mgr = new DocumentsMenuManager(testSearchManager, state);
+ MenuManager mgr = new MenuManager(testSearchManager, state);
mgr.updateOptionMenu(testMenu, directoryDetails);
createDir.assertInvisible();
@@ -153,7 +155,7 @@
@Test
public void testOptionMenu_canCreateDirectory() {
- DocumentsMenuManager mgr = new DocumentsMenuManager(testSearchManager, state);
+ MenuManager mgr = new MenuManager(testSearchManager, state);
directoryDetails.canCreateDirectory = true;
mgr.updateOptionMenu(testMenu, directoryDetails);
@@ -164,7 +166,7 @@
public void testOptionMenu_showAdvanced() {
state.showAdvanced = true;
state.showAdvancedOption = true;
- DocumentsMenuManager mgr = new DocumentsMenuManager(testSearchManager, state);
+ MenuManager mgr = new MenuManager(testSearchManager, state);
mgr.updateOptionMenu(testMenu, directoryDetails);
advanced.assertVisible();
@@ -173,7 +175,7 @@
@Test
public void testOptionMenu_inRecents() {
- DocumentsMenuManager mgr = new DocumentsMenuManager(testSearchManager, state);
+ MenuManager mgr = new MenuManager(testSearchManager, state);
directoryDetails.isInRecents = true;
mgr.updateOptionMenu(testMenu, directoryDetails);
@@ -183,7 +185,7 @@
@Test
public void testContextMenu_EmptyArea() {
- DocumentsMenuManager mgr = new DocumentsMenuManager(testSearchManager, state);
+ MenuManager mgr = new MenuManager(testSearchManager, state);
mgr.updateContextMenuForContainer(testMenu, directoryDetails);
selectAll.assertVisible();
paste.assertVisible();
@@ -192,7 +194,7 @@
@Test
public void testContextMenu_OnFile() {
- DocumentsMenuManager mgr = new DocumentsMenuManager(testSearchManager, state);
+ MenuManager mgr = new MenuManager(testSearchManager, state);
mgr.updateContextMenuForFiles(testMenu, selectionDetails);
// We don't want share in pickers.
share.assertInvisible();
@@ -206,7 +208,7 @@
@Test
public void testContextMenu_OnDirectory() {
- DocumentsMenuManager mgr = new DocumentsMenuManager(testSearchManager, state);
+ MenuManager mgr = new MenuManager(testSearchManager, state);
selectionDetails.canPasteInto = true;
mgr.updateContextMenuForDirs(testMenu, selectionDetails);
// We don't want openInNewWindow in pickers
@@ -220,8 +222,54 @@
}
@Test
+ public void testContextMenu_OnMixedDocs() {
+ MenuManager mgr = new MenuManager(testSearchManager, state);
+ selectionDetails.containDirectories = true;
+ selectionDetails.containFiles = true;
+ selectionDetails.size = 2;
+ selectionDetails.canDelete = true;
+ mgr.updateContextMenu(testMenu, selectionDetails);
+ cut.assertVisible();
+ copy.assertVisible();
+ delete.assertVisible();
+ }
+
+ @Test
+ public void testContextMenu_OnMixedDocs_hasPartialFile() {
+ MenuManager mgr = new MenuManager(testSearchManager, state);
+ selectionDetails.containDirectories = true;
+ selectionDetails.containFiles = true;
+ selectionDetails.size = 2;
+ selectionDetails.containPartial = true;
+ selectionDetails.canDelete = true;
+ mgr.updateContextMenu(testMenu, selectionDetails);
+ cut.assertVisible();
+ cut.assertDisabled();
+ copy.assertVisible();
+ copy.assertDisabled();
+ delete.assertVisible();
+ delete.assertEnabled();
+ }
+
+ @Test
+ public void testContextMenu_OnMixedDocs_hasUndeletableFile() {
+ MenuManager mgr = new MenuManager(testSearchManager, state);
+ selectionDetails.containDirectories = true;
+ selectionDetails.containFiles = true;
+ selectionDetails.size = 2;
+ selectionDetails.canDelete = false;
+ mgr.updateContextMenu(testMenu, selectionDetails);
+ cut.assertVisible();
+ cut.assertDisabled();
+ copy.assertVisible();
+ copy.assertEnabled();
+ delete.assertVisible();
+ delete.assertDisabled();
+ }
+
+ @Test
public void testRootContextMenu() {
- DocumentsMenuManager mgr = new DocumentsMenuManager(testSearchManager, state);
+ MenuManager mgr = new MenuManager(testSearchManager, state);
mgr.updateRootContextMenu(testMenu, testRootInfo);
eject.assertInvisible();
@@ -230,7 +278,7 @@
@Test
public void testRootContextMenu_hasRootSettings() {
- DocumentsMenuManager mgr = new DocumentsMenuManager(testSearchManager, state);
+ MenuManager mgr = new MenuManager(testSearchManager, state);
testRootInfo.flags = Root.FLAG_HAS_SETTINGS;
mgr.updateRootContextMenu(testMenu, testRootInfo);
@@ -239,7 +287,7 @@
@Test
public void testRootContextMenu_canEject() {
- DocumentsMenuManager mgr = new DocumentsMenuManager(testSearchManager, state);
+ MenuManager mgr = new MenuManager(testSearchManager, state);
testRootInfo.flags = Root.FLAG_SUPPORTS_EJECT;
mgr.updateRootContextMenu(testMenu, testRootInfo);