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 @@
</cr-toolbar>
<template is="cr-lazy-render" id="dropdown">
<dialog is="cr-action-menu" role="menu">
<button class="dropdown-item"
<button id="sortButton"
class="dropdown-item"
on-tap="onSortTap_"
disabled="[[!canChangeList_]]"
disabled="[[!canSortFolder_]]"
role="menuitem">
$i18n{menuSort}
</button>
......
......@@ -43,6 +43,12 @@ Polymer({
/** @private */
selectedFolder_: String,
/** @private */
canSortFolder_: {
type: Boolean,
computed: 'computeCanSortFolder_(canChangeList_, selectedFolder_)',
},
/** @private */
canChangeList_: {
type: Boolean,
......@@ -84,8 +90,7 @@ Polymer({
/** @private */
onSortTap_: function() {
chrome.bookmarkManagerPrivate.sortChildren(
assert(this.getState().selectedFolder));
chrome.bookmarkManagerPrivate.sortChildren(assert(this.selectedFolder_));
bookmarks.ToastManager.getInstance().show(
loadTimeData.getString('toastFolderSorted'), true);
this.closeDropdownMenu_();
......@@ -95,7 +100,7 @@ Polymer({
onAddBookmarkTap_: function() {
var dialog =
/** @type {BookmarksEditDialogElement} */ (this.$.addDialog.get());
dialog.showAddDialog(false, assert(this.getState().selectedFolder));
dialog.showAddDialog(false, assert(this.selectedFolder_));
this.closeDropdownMenu_();
},
......@@ -103,7 +108,7 @@ Polymer({
onAddFolderTap_: function() {
var dialog =
/** @type {BookmarksEditDialogElement} */ (this.$.addDialog.get());
dialog.showAddDialog(true, assert(this.getState().selectedFolder));
dialog.showAddDialog(true, assert(this.selectedFolder_));
this.closeDropdownMenu_();
},
......@@ -121,7 +126,7 @@ Polymer({
/** @private */
onDeleteSelectionTap_: function() {
var selection = this.getState().selection.items;
var selection = this.selectedItems_;
var commandManager = bookmarks.CommandManager.getInstance();
assert(commandManager.canExecute(Command.DELETE, selection));
commandManager.handle(Command.DELETE, selection);
......@@ -158,6 +163,15 @@ Polymer({
this.searchField.setValue(this.searchTerm_ || '');
},
/**
* @return {boolean}
* @private
*/
computeCanSortFolder_: function() {
return this.canChangeList_ &&
this.getState().nodes[this.selectedFolder_].children.length > 0;
},
/**
* @return {boolean}
* @private
......
......@@ -19,6 +19,12 @@ suite('<bookmarks-toolbar>', function() {
createItem('2'),
createItem('3'),
createFolder('4', [], {unmodifiable: 'managed'}),
createFolder('5', []),
createFolder(
'6',
[
createItem('61'),
]),
])),
selection: {
items: new Set(),
......@@ -108,4 +114,18 @@ suite('<bookmarks-toolbar>', function() {
assertTrue(toolbar.$$('#addBookmarkButton').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