Re-connect search on MD downloads
Also fix "Clear all" for a Polymer world.
Prev CL: https://codereview.chromium.org/1259363004/
R=michaelpg@chromium.org
BUG=425626
Review URL: https://codereview.chromium.org/1264553002
Cr-Commit-Position: refs/heads/master@{#341181}
diff --git a/chrome/browser/resources/md_downloads/manager.js b/chrome/browser/resources/md_downloads/manager.js
index f1c629b4c..657e842 100644
--- a/chrome/browser/resources/md_downloads/manager.js
+++ b/chrome/browser/resources/md_downloads/manager.js
@@ -44,7 +44,7 @@
e.canExecute = this.$.toolbar.canUndo();
break;
case 'clear-all-command':
- e.canExecute = true;
+ e.canExecute = this.$.toolbar.canClearAll();
break;
}
},
@@ -157,7 +157,7 @@
this.hasDownloads_ = this.size_() > 0;
if (loadTimeData.getBoolean('allowDeletingHistory'))
- this.$.toolbar.canClearAll = this.hasDownloads_;
+ this.$.toolbar.downloadsShowing = this.hasDownloads_;
this.onResize_();
},
diff --git a/chrome/browser/resources/md_downloads/toolbar.html b/chrome/browser/resources/md_downloads/toolbar.html
index 5db4bae..1ae8853 100644
--- a/chrome/browser/resources/md_downloads/toolbar.html
+++ b/chrome/browser/resources/md_downloads/toolbar.html
@@ -3,6 +3,7 @@
<link rel="import" href="chrome://resources/polymer/v1_0/paper-icon-button/paper-icon-button.html">
<link rel="import" href="chrome://resources/cr_elements/v1_0/cr_button/cr_button.html">
<link rel="import" href="chrome://resources/cr_elements/v1_0/cr_input/cr_input.html">
+<link rel="import" href="chrome://resources/html/assert.html">
<link rel="import" href="chrome://resources/html/cr.html">
<dom-module id="downloads-toolbar">
@@ -12,8 +13,7 @@
</div>
<div id="actions">
<cr-button id="clear-all" i18n-content="clearAll"
- on-click="onClearAllClick_"
- hidden$="[[!canClearAll]]"></cr-button>
+ on-click="onClearAllClick_"></cr-button>
<cr-button id="open-downloads-folder" i18n-content="openDownloadsFolder"
on-click="onOpenDownloadsFolderClick_"></cr-button>
</div>
diff --git a/chrome/browser/resources/md_downloads/toolbar.js b/chrome/browser/resources/md_downloads/toolbar.js
index 61716d4..647778d 100644
--- a/chrome/browser/resources/md_downloads/toolbar.js
+++ b/chrome/browser/resources/md_downloads/toolbar.js
@@ -13,9 +13,10 @@
},
properties: {
- canClearAll: {
+ downloadsShowing: {
type: Boolean,
value: false,
+ observer: 'onDownloadsShowingChange_',
},
showingSearch_: {
@@ -26,15 +27,45 @@
/** @return {boolean} Whether removal can be undone. */
canUndo: function() {
- return this.$['search-term'] != document.activeElement;
+ return !this.$['search-term'].shadowRoot.activeElement;
+ },
+
+ /** @return {boolean} Whether "Clear all" should be allowed. */
+ canClearAll: function() {
+ return !this.$['search-term'].value && this.downloadsShowing;
+ },
+
+ ready: function() {
+ var term = this.$['search-term'];
+ term.addEventListener('input', this.onSearchTermInput_.bind(this));
+ term.addEventListener('keydown', this.onSearchTermKeydown_.bind(this));
},
/** @private */
onClearAllClick_: function() {
+ assert(this.canClearAll());
this.actionService_.clearAll();
},
/** @private */
+ onDownloadsShowingChange_: function() {
+ this.updateClearAll_();
+ },
+
+ /** @private */
+ onSearchTermInput_: function() {
+ this.actionService_.search(this.$['search-term'].value);
+ this.updateClearAll_();
+ },
+
+ /** @private */
+ onSearchTermKeydown_: function(e) {
+ assert(this.showingSearch_);
+ if (e.keyIdentifier == 'U+001B') // Escape.
+ this.toggleShowingSearch_();
+ },
+
+ /** @private */
onOpenDownloadsFolderClick_: function() {
this.actionService_.openDownloadsFolder();
},
@@ -42,6 +73,18 @@
/** @private */
toggleShowingSearch_: function() {
this.showingSearch_ = !this.showingSearch_;
+
+ if (this.showingSearch_) {
+ this.$['search-term'].focus();
+ } else {
+ this.$['search-term'].value = '';
+ this.onSearchTermInput_();
+ }
+ },
+
+ /** @private */
+ updateClearAll_: function() {
+ this.$['clear-all'].hidden = !this.canClearAll();
},
});
diff --git a/ui/webui/resources/cr_elements/v1_0/cr_input/cr_input.js b/ui/webui/resources/cr_elements/v1_0/cr_input/cr_input.js
index 362d0c76..2dec111 100644
--- a/ui/webui/resources/cr_elements/v1_0/cr_input/cr_input.js
+++ b/ui/webui/resources/cr_elements/v1_0/cr_input/cr_input.js
@@ -86,7 +86,7 @@
* Focuses the 'input' element.
*/
focus: function() {
- this.$.input.focus();
+ this.$.input.inputElement.focus();
},
/** @override */