diff options
author | yawano <yawano@chromium.org> | 2015-02-16 01:15:21 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-02-16 09:16:08 +0000 |
commit | 541151d9673721c7c55682bad0366e01d6546909 (patch) | |
tree | 6e6f4119fa79e874b87678cf86cffd4cff00fbe1 /ui | |
parent | a928f942c335761534e69e8816ee85a7b5339e0f (diff) | |
download | chromium_src-541151d9673721c7c55682bad0366e01d6546909.zip chromium_src-541151d9673721c7c55682bad0366e01d6546909.tar.gz chromium_src-541151d9673721c7c55682bad0366e01d6546909.tar.bz2 |
Fix more actions button to show its menu.
This CL also changes button label from more actions to open with.
BUG=455995
TEST=Manually tested as described in the issue.
Review URL: https://codereview.chromium.org/927003002
Cr-Commit-Position: refs/heads/master@{#316443}
Diffstat (limited to 'ui')
3 files changed, 48 insertions, 26 deletions
diff --git a/ui/file_manager/file_manager/foreground/js/file_tasks.js b/ui/file_manager/file_manager/foreground/js/file_tasks.js index 3229421..5b405aa 100644 --- a/ui/file_manager/file_manager/foreground/js/file_tasks.js +++ b/ui/file_manager/file_manager/foreground/js/file_tasks.js @@ -69,6 +69,16 @@ FileTasks.VIDEO_PLAYER_ID = 'jcgeabjmjgoblfofpppfkcoakmfobdko'; FileTasks.ZIP_UNPACKER_TASK_ID = 'oedeeodfidgoollimchfdnbmhcpnklnd|app|zip'; /** + * Available actions in task menu button. + * @enum {string} + */ +FileTasks.TaskMenuButtonActions = { + ShowMenu: 'ShowMenu', + RunTask: 'RunTask', + ChangeDefaultAction: 'ChangeDefaultAction' +}; + +/** * Returns URL of the Chrome Web Store which show apps supporting the given * file-extension and mime-type. * @@ -651,7 +661,8 @@ FileTasks.prototype.display_ = function(combobutton) { str('ACTION_OPEN')); } else { combobutton.defaultItem = { - label: loadTimeData.getString('MORE_ACTIONS') + action: FileTasks.TaskMenuButtonActions.ShowMenu, + label: str('OPEN_WITH_BUTTON_LABEL') }; } @@ -670,6 +681,7 @@ FileTasks.prototype.display_ = function(combobutton) { if (this.defaultTask_) { combobutton.addSeparator(); var changeDefaultMenuItem = combobutton.addDropDownItem({ + action: FileTasks.TaskMenuButtonActions.ChangeDefaultAction, label: loadTimeData.getString('CHANGE_DEFAULT_MENU_ITEM') }); changeDefaultMenuItem.classList.add('change-default'); @@ -732,6 +744,7 @@ FileTasks.prototype.createCombobuttonItem_ = function(task, opt_title, opt_bold, opt_isDefault) { return { + action: FileTasks.TaskMenuButtonActions.RunTask, label: opt_title || task.title, iconUrl: task.iconUrl, iconType: task.iconType, diff --git a/ui/file_manager/file_manager/foreground/js/task_controller.js b/ui/file_manager/file_manager/foreground/js/task_controller.js index 055684b..90da380 100644 --- a/ui/file_manager/file_manager/foreground/js/task_controller.js +++ b/ui/file_manager/file_manager/foreground/js/task_controller.js @@ -134,35 +134,42 @@ TaskController.prototype.onTaskItemClicked_ = function(event) { if (!selection.tasks) return; - if (event.item.task) { - // Task field doesn't exist on change-default dropdown item. - selection.tasks.execute(event.item.task.taskId); - } else { - var extensions = []; - - for (var i = 0; i < selection.entries.length; i++) { - var match = /\.(\w+)$/g.exec(selection.entries[i].toURL()); - if (match) { - var ext = match[1].toUpperCase(); - if (extensions.indexOf(ext) == -1) { - extensions.push(ext); + switch (event.item.action) { + case FileTasks.TaskMenuButtonActions.ShowMenu: + this.ui_.taskMenuButton.showMenu(false); + break; + case FileTasks.TaskMenuButtonActions.RunTask: + selection.tasks.execute(event.item.task.taskId); + break; + case FileTasks.TaskMenuButtonActions.ChangeDefaultAction: + var extensions = []; + + for (var i = 0; i < selection.entries.length; i++) { + var match = /\.(\w+)$/g.exec(selection.entries[i].toURL()); + if (match) { + var ext = match[1].toUpperCase(); + if (extensions.indexOf(ext) == -1) { + extensions.push(ext); + } } } - } - var format = ''; + var format = ''; - if (extensions.length == 1) { - format = extensions[0]; - } + if (extensions.length == 1) { + format = extensions[0]; + } - // Change default was clicked. We should open "change default" dialog. - selection.tasks.showTaskPicker( - this.ui_.defaultTaskPicker, - loadTimeData.getString('CHANGE_DEFAULT_MENU_ITEM'), - strf('CHANGE_DEFAULT_CAPTION', format), - this.changeDefaultTask_.bind(this, selection), - true); + // Change default was clicked. We should open "change default" dialog. + selection.tasks.showTaskPicker( + this.ui_.defaultTaskPicker, + loadTimeData.getString('CHANGE_DEFAULT_MENU_ITEM'), + strf('CHANGE_DEFAULT_CAPTION', format), + this.changeDefaultTask_.bind(this, selection), + true); + break; + default: + assertNotReached('Unknown action.'); } }; diff --git a/ui/file_manager/integration_tests/file_manager/tasks.js b/ui/file_manager/integration_tests/file_manager/tasks.js index 4e081ed..742717f0 100644 --- a/ui/file_manager/integration_tests/file_manager/tasks.js +++ b/ui/file_manager/integration_tests/file_manager/tasks.js @@ -121,7 +121,9 @@ function defaultActionDialog(expectedTaskId, windowId) { }). then(function() { return remoteCall.callRemoteTestUtil( - 'fakeEvent', windowId, ['#tasks', 'select', {item: {}}]); + 'fakeEvent', windowId, ['#tasks', 'select', { + item: { action: 'ChangeDefaultAction' } + }]); }). then(function(result) { chrome.test.assertTrue(result); |