Chromium Code Reviews| Index: chrome/browser/resources/settings/printing_page/cups_add_printer_dialog.js |
| diff --git a/chrome/browser/resources/settings/printing_page/cups_add_printer_dialog.js b/chrome/browser/resources/settings/printing_page/cups_add_printer_dialog.js |
| index e27685ae8d6bdcefa78c01d3cc26d098e3a592ee..ba7cd363c1b22d54a521bbe59e943b8dbb4b25dc 100644 |
| --- a/chrome/browser/resources/settings/printing_page/cups_add_printer_dialog.js |
| +++ b/chrome/browser/resources/settings/printing_page/cups_add_printer_dialog.js |
| @@ -26,11 +26,19 @@ var AddPrinterDialogs = { |
| MANUFACTURER: 'add-printer-manufacturer-model-dialog', |
| }; |
| +/** |
| + * The maximum height of the discovered printers list when the searching spinner |
| + * is not showing. |
|
michaelpg
2016/10/04 22:31:10
@const {number}
xdai1
2016/10/04 23:36:19
Done.
|
| + */ |
| +var printerListFullHeight = 350; |
|
michaelpg
2016/10/04 22:31:10
kPrinterListFullHeight or PRINTER_LIST_FULL_HEIGHT
xdai1
2016/10/04 23:36:19
Done.
|
| + |
| Polymer({ |
| is: 'add-printer-discovery-dialog', |
| + behaviors: [WebUIListenerBehavior], |
| + |
| properties: { |
| - /** @type {!Array<!CupsPrinterInfo>} */ |
| + /** @type {!Array<!CupsPrinterInfo>|undefined} */ |
| discoveredPrinters: { |
| type: Array, |
| }, |
| @@ -40,26 +48,71 @@ Polymer({ |
| type: Object, |
| notify: true, |
| }, |
| + |
| + discovering_: { |
| + type: Boolean, |
| + value: false, |
| + }, |
| }, |
| /** @override */ |
| ready: function() { |
| - // TODO(xdai): Get the discovered printer list after the API is ready. |
| + this.discovering_ = true; |
|
michaelpg
2016/10/04 22:31:10
Why not set the initial value to true, above?
xdai1
2016/10/04 23:36:19
Done.
|
| + settings.CupsPrintersBrowserProxyImpl.getInstance(). |
| + startDiscoveringPrinters(); |
| + this.addWebUIListener('on-printer-discovered', |
| + this.onPrinterDiscovered_.bind(this)); |
| + this.addWebUIListener('on-printer-discovery-done', |
| + this.onPrinterDiscoveryDone_.bind(this)); |
| + this.addWebUIListener('on-printer-discovery-failed', |
| + this.onPrinterDiscoveryDone_.bind(this)); |
| + }, |
| + |
| + /** |
| + * @param {!Array<!CupsPrinterInfo>} printers |
| + * @private |
| + */ |
| + onPrinterDiscovered_: function(printers) { |
| + this.discovering_ = true; |
| + if (!this.discoveredPrinters) |
| + this.discoveredPrinters = printers; |
| + else |
| + this.discoveredPrinters = this.discoveredPrinters.concat(printers); |
|
michaelpg
2016/10/04 22:31:10
instead of replacing the whole array (which might
xdai1
2016/10/04 23:36:19
Seems like it could not push back a CupsPrinterInf
|
| + }, |
| + |
| + /** @private */ |
| + onPrinterDiscoveryDone_: function() { |
| + this.discovering_ = false; |
| + this.$$('add-printer-list').style.maxHeight = printerListFullHeight + 'px'; |
| + if (!this.discoveredPrinters) |
| + this.$.noPrinterMessage.hidden = false; |
|
michaelpg
2016/10/04 22:31:10
this.$.nPM.hidden = !!this.discoveredPrinters;
xdai1
2016/10/04 23:36:19
Done.
|
| + else |
| + this.$.noPrinterMessage.hidden = true; |
| + }, |
| + |
| + /** @private */ |
| + stopDiscoveringPrinters_: function() { |
| + settings.CupsPrintersBrowserProxyImpl.getInstance(). |
| + stopDiscoveringPrinters(); |
| + this.discovering_ = false; |
| }, |
| /** @private */ |
| switchToManualAddDialog_: function() { |
| + this.stopDiscoveringPrinters_(); |
| this.$$('add-printer-dialog').close(); |
| this.fire('open-manually-add-printer-dialog'); |
| }, |
| /** @private */ |
| onCancelTap_: function() { |
| + this.stopDiscoveringPrinters_(); |
| this.$$('add-printer-dialog').close(); |
| }, |
| /** @private */ |
| switchToConfiguringDialog_: function() { |
| + this.stopDiscoveringPrinters_(); |
| this.$$('add-printer-dialog').close(); |
| this.fire('open-configuring-printer-dialog'); |
| }, |
| @@ -329,8 +382,14 @@ Polymer({ |
| openConfiguringPrinterDialog_: function() { |
| this.switchDialog_(this.currentDialog_, AddPrinterDialogs.CONFIGURING, |
| 'showConfiguringDialog_'); |
| - settings.CupsPrintersBrowserProxyImpl.getInstance(). |
| - addCupsPrinter(this.newPrinter); |
| + if (this.previousDialog_ == AddPrinterDialogs.DISCOVERY) { |
| + settings.CupsPrintersBrowserProxyImpl.getInstance(). |
| + addCupsPrinter(this.selectedPrinter); |
| + } else if (this.previousDialog_ == AddPrinterDialogs.MANUALLY || |
| + this.previousDialog_ == AddPrinterDialogs.MANUFACTURER) { |
| + settings.CupsPrintersBrowserProxyImpl.getInstance(). |
| + addCupsPrinter(this.newPrinter); |
| + } |
| }, |
| /** @private */ |
| @@ -398,9 +457,11 @@ Polymer({ |
| if (success) |
| return; |
| - if (this.previousDialog_ == AddPrinterDialogs.MANUFACTURER) |
| + if (this.previousDialog_ == AddPrinterDialogs.MANUFACTURER) { |
| this.setupFailed = true; |
| - this.switchDialog_(this.currentDialog_, AddPrinterDialogs.MANUFACTURER, |
| - 'showManufacturerDialog_'); |
| + } else if (this.previousDialog_ == AddPrinterDialogs.MANUALLY) { |
| + this.switchDialog_(this.currentDialog_, AddPrinterDialogs.MANUFACTURER, |
| + 'showManufacturerDialog_'); |
| + } |
| }, |
| }); |