Reviewers: michaelpg
CL:
https://codereview.chromium.org/2427323003/Message:
FYI, I discovered an exception being thrown from the cups UI (even without my
CL), will file a bug about it (see exception at
http://imgur.com/a/s6CuJ).
Description:
MD Settings: Migrate cups_printers_list.html to settings-action-menu.
BUG=639718,603976
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:closure_compilation
Affected files (+38, -24 lines):
M chrome/browser/resources/settings/printing_page/compiled_resources2.gyp
M chrome/browser/resources/settings/printing_page/cups_printers_list.html
M chrome/browser/resources/settings/printing_page/cups_printers_list.js
Index: chrome/browser/resources/settings/printing_page/compiled_resources2.gyp
diff --git a/chrome/browser/resources/settings/printing_page/compiled_resources2.gyp b/chrome/browser/resources/settings/printing_page/compiled_resources2.gyp
index 99685b7126fb1a3dada597474fdacde153749f7e..752fe45c978162b26059fbe3ec005842569f6b79 100644
--- a/chrome/browser/resources/settings/printing_page/compiled_resources2.gyp
+++ b/chrome/browser/resources/settings/printing_page/compiled_resources2.gyp
@@ -55,6 +55,7 @@
{
'target_name': 'cups_printers_list',
'dependencies': [
+ '../compiled_resources2.gyp:settings_action_menu',
'<(DEPTH)/ui/webui/resources/js/compiled_resources2.gyp:cr',
'<(DEPTH)/ui/webui/resources/js/compiled_resources2.gyp:icon',
'cups_printers_browser_proxy',
@@ -64,6 +65,7 @@
{
'target_name': 'printing_page',
'dependencies': [
+ '<(DEPTH)/ui/webui/resources/js/compiled_resources2.gyp:assert',
'<(DEPTH)/ui/webui/resources/js/compiled_resources2.gyp:load_time_data',
'../compiled_resources2.gyp:route',
'../settings_page/compiled_resources2.gyp:settings_animated_pages',
Index: chrome/browser/resources/settings/printing_page/cups_printers_list.html
diff --git a/chrome/browser/resources/settings/printing_page/cups_printers_list.html b/chrome/browser/resources/settings/printing_page/cups_printers_list.html
index 077a0f47ec48ca5806740ca91aa892e944fd03b7..eb1423deb87c19e624121b8f72d49126cf36fc49 100644
--- a/chrome/browser/resources/settings/printing_page/cups_printers_list.html
+++ b/chrome/browser/resources/settings/printing_page/cups_printers_list.html
@@ -1,9 +1,9 @@
<link rel="import" href="chrome://resources/cr_elements/icons.html">
<link rel="import" href="chrome://resources/html/polymer.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/iron-dropdown/iron-dropdown.html">
<link rel="import" href="chrome://resources/polymer/v1_0/paper-icon-button/paper-icon-button.html">
<link rel="import" href="chrome://resources/polymer/v1_0/paper-item/paper-item.html">
<link rel="import" href="/printing_page/cups_printers_browser_proxy.html">
+<link rel="import" href="/settings_action_menu.html">
<link rel="import" href="/settings_shared_css.html">
<dom-module id="settings-cups-printers-list">
@@ -23,33 +23,25 @@
.list-item {
min-height: 20px;
}
-
- iron-dropdown {
- width: 120px;
- }
</style>
- <template is="dom-repeat" items="{{printers}}"
+ <dialog is="settings-action-menu">
+ <button class="dropdown-item" role="option" on-tap="onDetailsTap_">
+ $i18n{cupsPrinterDetails}
+ </button>
+ <button class="dropdown-item" role="option" on-tap="onRemoveTap_">
+ $i18n{removePrinter}
+ </button>
+ </dialog>
+ <template is="dom-repeat" items="[[printers]]"
filter="[[filterPrinter_(searchTerm)]]">
<div id="container" class="list-item">
<div class="name-column">
<span class="name" id="printer-name">[[item.printerName]]</span>
<!--TODO(xdai): Add icon for enterprise CUPS printer. -->
</div>
- <paper-icon-button icon="cr:more-vert" toggles
- active="{{item.menuOpened}}">
+ <paper-icon-button icon="cr:more-vert" on-tap="onDotsTap_">
</paper-icon-button>
- <iron-dropdown opened="{{item.menuOpened}}" horizontal-align="right"
- vertical-align="top" horizontal-offset="15" vertical-offset="5">
- <div class="dropdown-content">
- <paper-item on-tap="onDetailsTap_">
- $i18n{cupsPrinterDetails}
- </paper-item>
- <paper-item on-tap="onRemoveTap_">
- $i18n{removePrinter}
- </paper-item>
- <div>
- </iron-dropdown>
</div>
</template>
</template>
Index: chrome/browser/resources/settings/printing_page/cups_printers_list.js
diff --git a/chrome/browser/resources/settings/printing_page/cups_printers_list.js b/chrome/browser/resources/settings/printing_page/cups_printers_list.js
index 6364807697e375a5ddacf40486c771d430c9aecc..6fa74d004d28b2f5d5e9dac86e1cb04926c59b0c 100644
--- a/chrome/browser/resources/settings/printing_page/cups_printers_list.js
+++ b/chrome/browser/resources/settings/printing_page/cups_printers_list.js
@@ -19,6 +19,12 @@ Polymer({
searchTerm: {
type: String,
},
+
+ /**
+ * The model for the printer action menu.
+ * @private {?CupsPrinterInfo}
+ */
+ activePrinter_: Object,
},
/** @private {settings.CupsPrintersBrowserProxy} */
@@ -30,6 +36,18 @@ Polymer({
},
/**
+ * @param {{model: {item: !CupsPrinterInfo}}} e
+ * @private
+ */
+ onDotsTap_: function(e) {
+ this.activePrinter_ = /** @type {!CupsPrinterInfo} */ (e.model.item);
+ var menu = /** @type {!SettingsActionMenuElement} */ (
+ this.$$('dialog[is=settings-action-menu]'));
+ menu.showAt(/** @type {!Element} */ (
+ Polymer.dom(/** @type {!Event} */ (e)).localTarget));
+ },
+
+ /**
* @param {{model:Object}} event
* @private
*/
@@ -37,7 +55,7 @@ Polymer({
this.closeDropdownMenu_();
// Event is caught by 'settings-printing-page'.
- this.fire('show-cups-printer-details', event.model.item);
+ this.fire('show-cups-printer-details', this.activePrinter_);
},
/**
@@ -47,15 +65,17 @@ Polymer({
onRemoveTap_: function(event) {
this.closeDropdownMenu_();
- var index = this.printers.indexOf(event.model.item);
+ var index = this.printers.indexOf(assert(this.activePrinter_));
this.splice('printers', index, 1);
- this.browserProxy_.removeCupsPrinter(event.model.item.printerId,
- event.model.item.printerName);
+ this.browserProxy_.removeCupsPrinter(this.activePrinter_.printerId,
+ this.activePrinter_.printerName);
},
/** @private */
closeDropdownMenu_: function() {
- this.$$('iron-dropdown').close();
+ var menu = /** @type {!SettingsActionMenuElement} */ (
+ this.$$('dialog[is=settings-action-menu]'));
+ menu.close();
},
/**