summaryrefslogtreecommitdiffstats
path: root/ui/file_manager
diff options
context:
space:
mode:
authorfukino <fukino@chromium.org>2016-02-04 01:20:59 -0800
committerCommit bot <commit-bot@chromium.org>2016-02-04 09:21:52 +0000
commite8a62a620a31f2b7c4b15495586661eb540d6f2d (patch)
tree92b45d73061b658994603ebe717409eaf4cd345f /ui/file_manager
parent17be731c097793e928e8d146c0dc7c8611e856b9 (diff)
downloadchromium_src-e8a62a620a31f2b7c4b15495586661eb540d6f2d.zip
chromium_src-e8a62a620a31f2b7c4b15495586661eb540d6f2d.tar.gz
chromium_src-e8a62a620a31f2b7c4b15495586661eb540d6f2d.tar.bz2
Files app: Consider parent directory's writability to enable rename command.
To disable/enable the rename command on context, we refer to the target entry's writablility. However, we should have checked the containing directory's writability. BUG=536108 TEST=manually check the context menu on Recent, Offline, or Shared with me. Review URL: https://codereview.chromium.org/1664143002 Cr-Commit-Position: refs/heads/master@{#373487}
Diffstat (limited to 'ui/file_manager')
-rw-r--r--ui/file_manager/file_manager/foreground/js/file_manager_commands.js33
1 files changed, 30 insertions, 3 deletions
diff --git a/ui/file_manager/file_manager/foreground/js/file_manager_commands.js b/ui/file_manager/file_manager/foreground/js/file_manager_commands.js
index 840d074..0440716 100644
--- a/ui/file_manager/file_manager/foreground/js/file_manager_commands.js
+++ b/ui/file_manager/file_manager/foreground/js/file_manager_commands.js
@@ -81,6 +81,30 @@ CommandUtil.getCommandEntries = function(element) {
};
/**
+ * Extracts a directory which contains entries on which command event was
+ * dispatched.
+ *
+ * @param {EventTarget} element Element which is the command event's target.
+ * @param {DirectoryModel} directoryModel
+ * @return {DirectoryEntry|FakeEntry} The extracted parent entry.
+ */
+CommandUtil.getParentEntry = function(element, directoryModel) {
+ if (element instanceof DirectoryTree) {
+ if (!element.selectedItem)
+ return null;
+ var parentItem = element.selectedItem.parentItem;
+ return parentItem ? parentItem.entry : null;
+ } else if (element instanceof DirectoryItem ||
+ element instanceof ShortcutItem) {
+ return element.parentItem ? element.parentItem.entry : null;
+ } else if (element instanceof cr.ui.List) {
+ return directoryModel ? directoryModel.getCurrentDirEntry() : null;
+ } else {
+ return null;
+ }
+};
+
+/**
* @param {EventTarget} element
* @param {!FileManager} fileManager
* @return {VolumeInfo}
@@ -892,9 +916,12 @@ CommandHandler.COMMANDS_['rename'] = /** @type {Command} */ ({
return;
}
- var locationInfo = fileManager.volumeManager.getLocationInfo(entries[0]);
- event.canExecute = entries.length === 1 && !!locationInfo &&
- !locationInfo.isReadOnly;
+ var parentEntry =
+ CommandUtil.getParentEntry(event.target, fileManager.directoryModel);
+ var locationInfo = parentEntry ?
+ fileManager.volumeManager.getLocationInfo(parentEntry) : null;
+ event.canExecute =
+ entries.length === 1 && !!locationInfo && !locationInfo.isReadOnly;
event.command.setHidden(false);
}
});