Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(34)

Unified Diff: ui/file_manager/file_manager/foreground/js/file_manager_commands.js

Issue 1233913010: Make root entry undeletable. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Revert patch set 2. Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/file_manager/file_manager/foreground/js/file_manager_commands.js
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 3d99359c54cdcbddccb073e08b5ea21196608178..84ea15633ce8b840d01fecff49a6acae8ace5685 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
@@ -665,6 +665,12 @@ CommandHandler.COMMANDS_['delete'] = /** @type {Command} */ ({
execute: function(event, fileManager) {
var entries = CommandUtil.getCommandEntries(event.target);
+ // Execute might be called without a call of canExecute method, e.g. called
+ // directly from code. Double check here not to delete undeletable entries.
+ if (this.containsFakeOrRootEntry_(entries, fileManager) ||
+ this.containsReadOnlyEntry_(entries, fileManager))
+ return;
+
var message = entries.length === 1 ?
strf('GALLERY_CONFIRM_DELETE_ONE', entries[0].name) :
strf('GALLERY_CONFIRM_DELETE_SOME', entries.length);
@@ -680,25 +686,44 @@ CommandHandler.COMMANDS_['delete'] = /** @type {Command} */ ({
canExecute: function(event, fileManager) {
var entries = CommandUtil.getCommandEntries(event.target);
- // If it contains a fake entry, hide command.
- var containsFakeEntry = entries.some(function(entry) {
- return util.isFakeEntry(entry);
- });
- if (containsFakeEntry) {
+ // If entries contain fake or root entry, hide delete option.
+ if (this.containsFakeOrRootEntry_(entries, fileManager)) {
event.canExecute = false;
event.command.setHidden(true);
return;
}
- // If it contains an entry which is on read only volume or no item is
- // selected, disable command.
- var containsReadOnlyEntry = entries.some(function(entry) {
+ event.canExecute = entries.length > 0 &&
+ !this.containsReadOnlyEntry_(entries, fileManager);
+ event.command.setHidden(false);
+ },
+ /**
+ * @param {!Array<!Entry>} entries
+ * @param {!FileManager} fileManager
+ * @return {boolean} True if entries contain fake or root entry.
+ */
+ containsFakeOrRootEntry_: function(entries, fileManager) {
+ return entries.some(function(entry) {
+ if (util.isFakeEntry(entry))
+ return true;
+
+ var volumeInfo = fileManager.volumeManager.getVolumeInfo(entry);
+ if (!volumeInfo)
+ return true;
+
+ return volumeInfo.displayRoot === entry;
+ });
+ },
+ /**
+ * @param {!Array<!Entry>} entries
+ * @param {!FileManager} fileManager
+ * @return {boolean} True if entries contain read only entry.
+ */
+ containsReadOnlyEntry_: function(entries, fileManager) {
+ return entries.some(function(entry) {
var locationInfo = fileManager.volumeManager.getLocationInfo(entry);
return locationInfo && locationInfo.isReadOnly;
});
-
- event.canExecute = !containsReadOnlyEntry && entries.length > 0;
- event.command.setHidden(false);
}
});
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698