Index: chrome/browser/resources/print_preview/native_layer.js |
diff --git a/chrome/browser/resources/print_preview/native_layer.js b/chrome/browser/resources/print_preview/native_layer.js |
index d4beb8926afb27fd2400ba4f8f52f222d76fc2be..57b73bfd32479953afff2728d6356b4700df8b0b 100644 |
--- a/chrome/browser/resources/print_preview/native_layer.js |
+++ b/chrome/browser/resources/print_preview/native_layer.js |
@@ -57,6 +57,10 @@ cr.define('print_preview', function() { |
global.onPrivetCapabilitiesSet = |
this.onPrivetCapabilitiesSet_.bind(this); |
global.onPrivetPrintFailed = this.onPrivetPrintFailed_.bind(this); |
+ global.onExtensionPrintersAdded = |
+ this.onExtensionPrintersAdded_.bind(this); |
+ global.onExtensionCapabilitiesSet = |
+ this.onExtensionCapabilitiesSet_.bind(this); |
global.onEnableManipulateSettingsForTest = |
this.onEnableManipulateSettingsForTest_.bind(this); |
global.printPresetOptionsFromDocument = |
@@ -95,6 +99,10 @@ cr.define('print_preview', function() { |
PRIVET_CAPABILITIES_SET: |
'print_preview.NativeLayer.PRIVET_CAPABILITIES_SET', |
PRIVET_PRINT_FAILED: 'print_preview.NativeLayer.PRIVET_PRINT_FAILED', |
+ EXTENSION_PRINTERS_ADDED: |
+ 'print_preview.NativeLayer.EXTENSION_PRINTERS_ADDED', |
+ EXTENSION_CAPABILITIES_SET: |
+ 'print_preview.NativeLayer.EXTENSION_CAPABILITIES_SET', |
PRINT_PRESET_OPTIONS: 'print_preview.NativeLayer.PRINT_PRESET_OPTIONS', |
}; |
@@ -177,6 +185,26 @@ cr.define('print_preview', function() { |
}, |
/** |
+ * Requests that extension system dispatches an event requesting the list of |
+ * extension managed printers. |
+ */ |
+ startGetExtensionDestinations: function() { |
+ chrome.send('getExtensionPrinters'); |
+ }, |
+ |
+ /** |
+ * Requests an extension destination's printing capabilities. A |
+ * EXTENSION_CAPABILITIES_SET event will be dispatched in response. |
+ * @param {string} extensionId The ID of the extension from which the |
+ * capabilities should be requested. |
+ * @param {string} printerId The ID of the printer whose capabilities are |
+ * requested. |
+ */ |
+ startGetExtensionDestinationCapabilities: function(extensionId, printerId) { |
+ chrome.send('getExtensionPrinterCapabilities', [extensionId, printerId]); |
+ }, |
+ |
+ /** |
* Requests the destination's printing capabilities. A CAPABILITIES_SET |
* event will be dispatched in response. |
* @param {string} destinationId ID of the destination. |
@@ -299,6 +327,10 @@ cr.define('print_preview', function() { |
assert(!opt_showSystemDialog || (cr.isWindows && destination.isLocal), |
'Implemented for Windows only'); |
+ // TODO(tbarzic): Implement this. |
+ assert(!destination.isExtension, |
+ 'Printing to extension printers not yet implemented.'); |
+ |
var ticket = { |
'pageRange': printTicketStore.pageRange.getDocumentPageRanges(), |
'mediaSize': printTicketStore.mediaSize.getValue(), |
@@ -720,6 +752,40 @@ cr.define('print_preview', function() { |
}, |
/** |
+ * @param {Array.<{extensionId: string, |
+ * id: string, |
+ * name: string, |
+ * description: (string|undefined)}>} printers The list |
+ * containing information about printers added by an extension. |
+ * @param {boolean} done Whether this is the final list of extension |
+ * managed printers. |
+ */ |
+ onExtensionPrintersAdded_: function(printers, done) { |
+ var event = new Event(NativeLayer.EventType.EXTENSION_PRINTERS_ADDED); |
+ event.printers = printers; |
+ event.done = done; |
+ this.dispatchEvent(event); |
+ }, |
+ |
+ /** |
+ * Called when an extension responds to a request for an extension printer |
+ * capabilities. |
+ * @param {string} extensionId The ID of extension that manages the printer. |
+ * @param {string} printerId The printer's ID (within the extension's |
+ * space). |
+ * @param {Object} capabilities The reported printer capabilities. |
Aleksey Shlyapnikov
2015/02/03 20:18:24
!Object or can they be null?
tbarzic
2015/02/04 02:21:23
Done.
|
+ */ |
+ onExtensionCapabilitiesSet_: function(extensionId, |
+ printerId, |
+ capabilities) { |
+ var event = new Event(NativeLayer.EventType.EXTENSION_CAPABILITIES_SET); |
+ event.extensionID = extensionId; |
Aleksey Shlyapnikov
2015/02/03 20:18:24
extensionId
tbarzic
2015/02/04 02:21:23
removed
|
+ event.printerID = printerId; |
Aleksey Shlyapnikov
2015/02/03 20:18:24
printerId
tbarzic
2015/02/04 02:21:23
Done.
|
+ event.capabilities = capabilities; |
+ this.dispatchEvent(event); |
+ }, |
+ |
+ /** |
* Allows for onManipulateSettings to be called |
* from the native layer. |
* @private |