Commit a9256bd6 authored by calamity's avatar calamity Committed by Commit Bot

[MD Bookmarks] Prevent sorting of empty folders.

This CL disables the sort button in the toolbar action menu for empty
folders.

BUG=737034
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:closure_compilation

Review-Url: https://codereview.chromium.org/2973783002
Cr-Commit-Position: refs/heads/master@{#485563}
parent a8283ee7
...@@ -64,9 +64,10 @@ ...@@ -64,9 +64,10 @@
</cr-toolbar> </cr-toolbar>
<template is="cr-lazy-render" id="dropdown"> <template is="cr-lazy-render" id="dropdown">
<dialog is="cr-action-menu" role="menu"> <dialog is="cr-action-menu" role="menu">
<button class="dropdown-item" <button id="sortButton"
class="dropdown-item"
on-tap="onSortTap_" on-tap="onSortTap_"
disabled="[[!canChangeList_]]" disabled="[[!canSortFolder_]]"
role="menuitem"> role="menuitem">
$i18n{menuSort} $i18n{menuSort}
</button> </button>
......
...@@ -43,6 +43,12 @@ Polymer({ ...@@ -43,6 +43,12 @@ Polymer({
/** @private */ /** @private */
selectedFolder_: String, selectedFolder_: String,
/** @private */
canSortFolder_: {
type: Boolean,
computed: 'computeCanSortFolder_(canChangeList_, selectedFolder_)',
},
/** @private */ /** @private */
canChangeList_: { canChangeList_: {
type: Boolean, type: Boolean,
...@@ -84,8 +90,7 @@ Polymer({ ...@@ -84,8 +90,7 @@ Polymer({
/** @private */ /** @private */
onSortTap_: function() { onSortTap_: function() {
chrome.bookmarkManagerPrivate.sortChildren( chrome.bookmarkManagerPrivate.sortChildren(assert(this.selectedFolder_));
assert(this.getState().selectedFolder));
bookmarks.ToastManager.getInstance().show( bookmarks.ToastManager.getInstance().show(
loadTimeData.getString('toastFolderSorted'), true); loadTimeData.getString('toastFolderSorted'), true);
this.closeDropdownMenu_(); this.closeDropdownMenu_();
...@@ -95,7 +100,7 @@ Polymer({ ...@@ -95,7 +100,7 @@ Polymer({
onAddBookmarkTap_: function() { onAddBookmarkTap_: function() {
var dialog = var dialog =
/** @type {BookmarksEditDialogElement} */ (this.$.addDialog.get()); /** @type {BookmarksEditDialogElement} */ (this.$.addDialog.get());
dialog.showAddDialog(false, assert(this.getState().selectedFolder)); dialog.showAddDialog(false, assert(this.selectedFolder_));
this.closeDropdownMenu_(); this.closeDropdownMenu_();
}, },
...@@ -103,7 +108,7 @@ Polymer({ ...@@ -103,7 +108,7 @@ Polymer({
onAddFolderTap_: function() { onAddFolderTap_: function() {
var dialog = var dialog =
/** @type {BookmarksEditDialogElement} */ (this.$.addDialog.get()); /** @type {BookmarksEditDialogElement} */ (this.$.addDialog.get());
dialog.showAddDialog(true, assert(this.getState().selectedFolder)); dialog.showAddDialog(true, assert(this.selectedFolder_));
this.closeDropdownMenu_(); this.closeDropdownMenu_();
}, },
...@@ -121,7 +126,7 @@ Polymer({ ...@@ -121,7 +126,7 @@ Polymer({
/** @private */ /** @private */
onDeleteSelectionTap_: function() { onDeleteSelectionTap_: function() {
var selection = this.getState().selection.items; var selection = this.selectedItems_;
var commandManager = bookmarks.CommandManager.getInstance(); var commandManager = bookmarks.CommandManager.getInstance();
assert(commandManager.canExecute(Command.DELETE, selection)); assert(commandManager.canExecute(Command.DELETE, selection));
commandManager.handle(Command.DELETE, selection); commandManager.handle(Command.DELETE, selection);
...@@ -158,6 +163,15 @@ Polymer({ ...@@ -158,6 +163,15 @@ Polymer({
this.searchField.setValue(this.searchTerm_ || ''); this.searchField.setValue(this.searchTerm_ || '');
}, },
/**
* @return {boolean}
* @private
*/
computeCanSortFolder_: function() {
return this.canChangeList_ &&
this.getState().nodes[this.selectedFolder_].children.length > 0;
},
/** /**
* @return {boolean} * @return {boolean}
* @private * @private
......
...@@ -19,6 +19,12 @@ suite('<bookmarks-toolbar>', function() { ...@@ -19,6 +19,12 @@ suite('<bookmarks-toolbar>', function() {
createItem('2'), createItem('2'),
createItem('3'), createItem('3'),
createFolder('4', [], {unmodifiable: 'managed'}), createFolder('4', [], {unmodifiable: 'managed'}),
createFolder('5', []),
createFolder(
'6',
[
createItem('61'),
]),
])), ])),
selection: { selection: {
items: new Set(), items: new Set(),
...@@ -108,4 +114,18 @@ suite('<bookmarks-toolbar>', function() { ...@@ -108,4 +114,18 @@ suite('<bookmarks-toolbar>', function() {
assertTrue(toolbar.$$('#addBookmarkButton').disabled); assertTrue(toolbar.$$('#addBookmarkButton').disabled);
assertTrue(toolbar.$$('#importBookmarkButton').disabled); assertTrue(toolbar.$$('#importBookmarkButton').disabled);
}); });
test('sort button is disabled when folder is empty', function() {
MockInteractions.tap(toolbar.$.menuButton);
store.data.selectedFolder = '6';
store.notifyObservers();
assertTrue(toolbar.canSortFolder_);
store.data.selectedFolder = '5';
store.notifyObservers();
assertFalse(toolbar.canSortFolder_);
assertTrue(toolbar.$$('#sortButton').disabled);
});
}); });
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment