Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(28)

Side by Side Diff: chrome/browser/resources/print_preview/native_layer.js

Issue 900503002: List printers managed by extensions in print preview (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 cr.exportPath('print_preview'); 5 cr.exportPath('print_preview');
6 6
7 /** 7 /**
8 * @typedef {{selectSaveAsPdfDestination: boolean, 8 * @typedef {{selectSaveAsPdfDestination: boolean,
9 * layoutSettings.portrait: boolean, 9 * layoutSettings.portrait: boolean,
10 * pageRange: string, 10 * pageRange: string,
(...skipping 18 matching lines...) Expand all
29 // Bind global handlers 29 // Bind global handlers
30 global.setInitialSettings = this.onSetInitialSettings_.bind(this); 30 global.setInitialSettings = this.onSetInitialSettings_.bind(this);
31 global.setUseCloudPrint = this.onSetUseCloudPrint_.bind(this); 31 global.setUseCloudPrint = this.onSetUseCloudPrint_.bind(this);
32 global.setPrinters = this.onSetPrinters_.bind(this); 32 global.setPrinters = this.onSetPrinters_.bind(this);
33 global.updateWithPrinterCapabilities = 33 global.updateWithPrinterCapabilities =
34 this.onUpdateWithPrinterCapabilities_.bind(this); 34 this.onUpdateWithPrinterCapabilities_.bind(this);
35 global.failedToGetPrinterCapabilities = 35 global.failedToGetPrinterCapabilities =
36 this.onFailedToGetPrinterCapabilities_.bind(this); 36 this.onFailedToGetPrinterCapabilities_.bind(this);
37 global.failedToGetPrivetPrinterCapabilities = 37 global.failedToGetPrivetPrinterCapabilities =
38 this.onFailedToGetPrivetPrinterCapabilities_.bind(this); 38 this.onFailedToGetPrivetPrinterCapabilities_.bind(this);
39 global.failedToGetExtensionPrinterCapabilities =
40 this.onFailedToGetExtensionPrinterCapabilities_.bind(this);
39 global.reloadPrintersList = this.onReloadPrintersList_.bind(this); 41 global.reloadPrintersList = this.onReloadPrintersList_.bind(this);
40 global.printToCloud = this.onPrintToCloud_.bind(this); 42 global.printToCloud = this.onPrintToCloud_.bind(this);
41 global.fileSelectionCancelled = 43 global.fileSelectionCancelled =
42 this.onFileSelectionCancelled_.bind(this); 44 this.onFileSelectionCancelled_.bind(this);
43 global.fileSelectionCompleted = 45 global.fileSelectionCompleted =
44 this.onFileSelectionCompleted_.bind(this); 46 this.onFileSelectionCompleted_.bind(this);
45 global.printPreviewFailed = this.onPrintPreviewFailed_.bind(this); 47 global.printPreviewFailed = this.onPrintPreviewFailed_.bind(this);
46 global.invalidPrinterSettings = 48 global.invalidPrinterSettings =
47 this.onInvalidPrinterSettings_.bind(this); 49 this.onInvalidPrinterSettings_.bind(this);
48 global.onDidGetDefaultPageLayout = 50 global.onDidGetDefaultPageLayout =
49 this.onDidGetDefaultPageLayout_.bind(this); 51 this.onDidGetDefaultPageLayout_.bind(this);
50 global.onDidGetPreviewPageCount = 52 global.onDidGetPreviewPageCount =
51 this.onDidGetPreviewPageCount_.bind(this); 53 this.onDidGetPreviewPageCount_.bind(this);
52 global.onDidPreviewPage = this.onDidPreviewPage_.bind(this); 54 global.onDidPreviewPage = this.onDidPreviewPage_.bind(this);
53 global.updatePrintPreview = this.onUpdatePrintPreview_.bind(this); 55 global.updatePrintPreview = this.onUpdatePrintPreview_.bind(this);
54 global.onDidGetAccessToken = this.onDidGetAccessToken_.bind(this); 56 global.onDidGetAccessToken = this.onDidGetAccessToken_.bind(this);
55 global.autoCancelForTesting = this.autoCancelForTesting_.bind(this); 57 global.autoCancelForTesting = this.autoCancelForTesting_.bind(this);
56 global.onPrivetPrinterChanged = this.onPrivetPrinterChanged_.bind(this); 58 global.onPrivetPrinterChanged = this.onPrivetPrinterChanged_.bind(this);
57 global.onPrivetCapabilitiesSet = 59 global.onPrivetCapabilitiesSet =
58 this.onPrivetCapabilitiesSet_.bind(this); 60 this.onPrivetCapabilitiesSet_.bind(this);
59 global.onPrivetPrintFailed = this.onPrivetPrintFailed_.bind(this); 61 global.onPrivetPrintFailed = this.onPrivetPrintFailed_.bind(this);
62 global.onExtensionPrintersAdded =
63 this.onExtensionPrintersAdded_.bind(this);
64 global.onExtensionCapabilitiesSet =
65 this.onExtensionCapabilitiesSet_.bind(this);
60 global.onEnableManipulateSettingsForTest = 66 global.onEnableManipulateSettingsForTest =
61 this.onEnableManipulateSettingsForTest_.bind(this); 67 this.onEnableManipulateSettingsForTest_.bind(this);
62 global.printPresetOptionsFromDocument = 68 global.printPresetOptionsFromDocument =
63 this.onPrintPresetOptionsFromDocument_.bind(this); 69 this.onPrintPresetOptionsFromDocument_.bind(this);
64 }; 70 };
65 71
66 /** 72 /**
67 * Event types dispatched from the Chromium native layer. 73 * Event types dispatched from the Chromium native layer.
68 * @enum {string} 74 * @enum {string}
69 * @const 75 * @const
(...skipping 18 matching lines...) Expand all
88 PREVIEW_GENERATION_DONE: 94 PREVIEW_GENERATION_DONE:
89 'print_preview.NativeLayer.PREVIEW_GENERATION_DONE', 95 'print_preview.NativeLayer.PREVIEW_GENERATION_DONE',
90 PREVIEW_GENERATION_FAIL: 96 PREVIEW_GENERATION_FAIL:
91 'print_preview.NativeLayer.PREVIEW_GENERATION_FAIL', 97 'print_preview.NativeLayer.PREVIEW_GENERATION_FAIL',
92 PRINT_TO_CLOUD: 'print_preview.NativeLayer.PRINT_TO_CLOUD', 98 PRINT_TO_CLOUD: 'print_preview.NativeLayer.PRINT_TO_CLOUD',
93 SETTINGS_INVALID: 'print_preview.NativeLayer.SETTINGS_INVALID', 99 SETTINGS_INVALID: 'print_preview.NativeLayer.SETTINGS_INVALID',
94 PRIVET_PRINTER_CHANGED: 'print_preview.NativeLayer.PRIVET_PRINTER_CHANGED', 100 PRIVET_PRINTER_CHANGED: 'print_preview.NativeLayer.PRIVET_PRINTER_CHANGED',
95 PRIVET_CAPABILITIES_SET: 101 PRIVET_CAPABILITIES_SET:
96 'print_preview.NativeLayer.PRIVET_CAPABILITIES_SET', 102 'print_preview.NativeLayer.PRIVET_CAPABILITIES_SET',
97 PRIVET_PRINT_FAILED: 'print_preview.NativeLayer.PRIVET_PRINT_FAILED', 103 PRIVET_PRINT_FAILED: 'print_preview.NativeLayer.PRIVET_PRINT_FAILED',
104 EXTENSION_PRINTERS_ADDED:
105 'print_preview.NativeLayer.EXTENSION_PRINTERS_ADDED',
106 EXTENSION_CAPABILITIES_SET:
107 'print_preview.NativeLayer.EXTENSION_CAPABILITIES_SET',
98 PRINT_PRESET_OPTIONS: 'print_preview.NativeLayer.PRINT_PRESET_OPTIONS', 108 PRINT_PRESET_OPTIONS: 'print_preview.NativeLayer.PRINT_PRESET_OPTIONS',
99 }; 109 };
100 110
101 /** 111 /**
102 * Constant values matching printing::DuplexMode enum. 112 * Constant values matching printing::DuplexMode enum.
103 * @enum {number} 113 * @enum {number}
104 */ 114 */
105 NativeLayer.DuplexMode = { 115 NativeLayer.DuplexMode = {
106 SIMPLEX: 0, 116 SIMPLEX: 0,
107 LONG_EDGE: 1, 117 LONG_EDGE: 1,
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 /** 180 /**
171 * Requests the privet destination's printing capabilities. A 181 * Requests the privet destination's printing capabilities. A
172 * PRIVET_CAPABILITIES_SET event will be dispatched in response. 182 * PRIVET_CAPABILITIES_SET event will be dispatched in response.
173 * @param {string} destinationId ID of the destination. 183 * @param {string} destinationId ID of the destination.
174 */ 184 */
175 startGetPrivetDestinationCapabilities: function(destinationId) { 185 startGetPrivetDestinationCapabilities: function(destinationId) {
176 chrome.send('getPrivetPrinterCapabilities', [destinationId]); 186 chrome.send('getPrivetPrinterCapabilities', [destinationId]);
177 }, 187 },
178 188
179 /** 189 /**
190 * Requests that extension system dispatches an event requesting the list of
191 * extension managed printers.
192 */
193 startGetExtensionDestinations: function() {
194 chrome.send('getExtensionPrinters');
195 },
196
197 /**
198 * Requests an extension destination's printing capabilities. A
199 * EXTENSION_CAPABILITIES_SET event will be dispatched in response.
200 * @param {string} destinationId The ID of the destination whose
201 * capabilities are requested.
202 */
203 startGetExtensionDestinationCapabilities: function(destinationId) {
204 chrome.send('getExtensionPrinterCapabilities', [destinationId]);
205 },
206
207 /**
180 * Requests the destination's printing capabilities. A CAPABILITIES_SET 208 * Requests the destination's printing capabilities. A CAPABILITIES_SET
181 * event will be dispatched in response. 209 * event will be dispatched in response.
182 * @param {string} destinationId ID of the destination. 210 * @param {string} destinationId ID of the destination.
183 */ 211 */
184 startGetLocalDestinationCapabilities: function(destinationId) { 212 startGetLocalDestinationCapabilities: function(destinationId) {
185 chrome.send('getPrinterCapabilities', [destinationId]); 213 chrome.send('getPrinterCapabilities', [destinationId]);
186 }, 214 },
187 215
188 /** 216 /**
189 * @param {!print_preview.Destination} destination Destination to print to. 217 * @param {!print_preview.Destination} destination Destination to print to.
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 */ 320 */
293 startPrint: function(destination, printTicketStore, cloudPrintInterface, 321 startPrint: function(destination, printTicketStore, cloudPrintInterface,
294 documentInfo, opt_isOpenPdfInPreview, 322 documentInfo, opt_isOpenPdfInPreview,
295 opt_showSystemDialog) { 323 opt_showSystemDialog) {
296 assert(printTicketStore.isTicketValid(), 324 assert(printTicketStore.isTicketValid(),
297 'Trying to print when ticket is not valid'); 325 'Trying to print when ticket is not valid');
298 326
299 assert(!opt_showSystemDialog || (cr.isWindows && destination.isLocal), 327 assert(!opt_showSystemDialog || (cr.isWindows && destination.isLocal),
300 'Implemented for Windows only'); 328 'Implemented for Windows only');
301 329
330 // TODO(tbarzic): Implement this.
331 assert(!destination.isExtension,
332 'Printing to extension printers not yet implemented.');
333
302 var ticket = { 334 var ticket = {
303 'pageRange': printTicketStore.pageRange.getDocumentPageRanges(), 335 'pageRange': printTicketStore.pageRange.getDocumentPageRanges(),
304 'mediaSize': printTicketStore.mediaSize.getValue(), 336 'mediaSize': printTicketStore.mediaSize.getValue(),
305 'pageCount': printTicketStore.pageRange.getPageNumberSet().size, 337 'pageCount': printTicketStore.pageRange.getPageNumberSet().size,
306 'landscape': printTicketStore.landscape.getValue(), 338 'landscape': printTicketStore.landscape.getValue(),
307 'color': this.getNativeColorModel_(destination, printTicketStore.color), 339 'color': this.getNativeColorModel_(destination, printTicketStore.color),
308 'headerFooterEnabled': printTicketStore.headerFooter.getValue(), 340 'headerFooterEnabled': printTicketStore.headerFooter.getValue(),
309 'marginsType': printTicketStore.marginsType.getValue(), 341 'marginsType': printTicketStore.marginsType.getValue(),
310 'generateDraftData': true, // TODO(rltoscano): What should this be? 342 'generateDraftData': true, // TODO(rltoscano): What should this be?
311 'duplex': printTicketStore.duplex.getValue() ? 343 'duplex': printTicketStore.duplex.getValue() ?
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
507 */ 539 */
508 onFailedToGetPrivetPrinterCapabilities_: function(destinationId) { 540 onFailedToGetPrivetPrinterCapabilities_: function(destinationId) {
509 var getCapsFailEvent = new Event( 541 var getCapsFailEvent = new Event(
510 NativeLayer.EventType.GET_CAPABILITIES_FAIL); 542 NativeLayer.EventType.GET_CAPABILITIES_FAIL);
511 getCapsFailEvent.destinationId = destinationId; 543 getCapsFailEvent.destinationId = destinationId;
512 getCapsFailEvent.destinationOrigin = 544 getCapsFailEvent.destinationOrigin =
513 print_preview.Destination.Origin.PRIVET; 545 print_preview.Destination.Origin.PRIVET;
514 this.dispatchEvent(getCapsFailEvent); 546 this.dispatchEvent(getCapsFailEvent);
515 }, 547 },
516 548
549 /**
550 * Called when native layer fails to get settings information for a
551 * requested extension destination.
552 * @param {string} destinationId Printer affected by error.
553 * @private
554 */
555 onFailedToGetExtensionPrinterCapabilities_: function(destinationId) {
556 var getCapsFailEvent = new Event(
557 NativeLayer.EventType.GET_CAPABILITIES_FAIL);
558 getCapsFailEvent.destinationId = destinationId;
559 getCapsFailEvent.destinationOrigin =
560 print_preview.Destination.Origin.EXTENSION;
561 this.dispatchEvent(getCapsFailEvent);
562 },
563
517 /** Reloads the printer list. */ 564 /** Reloads the printer list. */
518 onReloadPrintersList_: function() { 565 onReloadPrintersList_: function() {
519 cr.dispatchSimpleEvent(this, NativeLayer.EventType.DESTINATIONS_RELOAD); 566 cr.dispatchSimpleEvent(this, NativeLayer.EventType.DESTINATIONS_RELOAD);
520 }, 567 },
521 568
522 /** 569 /**
523 * Called from the C++ layer. 570 * Called from the C++ layer.
524 * Take the PDF data handed to us and submit it to the cloud, closing the 571 * Take the PDF data handed to us and submit it to the cloud, closing the
525 * print preview dialog once the upload is successful. 572 * print preview dialog once the upload is successful.
526 * @param {string} data Data to send as the print job. 573 * @param {string} data Data to send as the print job.
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
713 * @private 760 * @private
714 */ 761 */
715 onPrivetPrintFailed_: function(http_error) { 762 onPrivetPrintFailed_: function(http_error) {
716 var privetPrintFailedEvent = 763 var privetPrintFailedEvent =
717 new Event(NativeLayer.EventType.PRIVET_PRINT_FAILED); 764 new Event(NativeLayer.EventType.PRIVET_PRINT_FAILED);
718 privetPrintFailedEvent.httpError = http_error; 765 privetPrintFailedEvent.httpError = http_error;
719 this.dispatchEvent(privetPrintFailedEvent); 766 this.dispatchEvent(privetPrintFailedEvent);
720 }, 767 },
721 768
722 /** 769 /**
770 * @param {Array.<!{extensionId: string,
771 * id: string,
772 * name: string,
773 * description: (string|undefined)}>} printers The list
774 * containing information about printers added by an extension.
775 * @param {boolean} done Whether this is the final list of extension
776 * managed printers.
777 */
778 onExtensionPrintersAdded_: function(printers, done) {
779 var event = new Event(NativeLayer.EventType.EXTENSION_PRINTERS_ADDED);
780 event.printers = printers;
781 event.done = done;
782 this.dispatchEvent(event);
783 },
784
785 /**
786 * Called when an extension responds to a request for an extension printer
787 * capabilities.
788 * @param {string} printerId The printer's ID.
789 * @param {!Object} capabilities The reported printer capabilities.
790 */
791 onExtensionCapabilitiesSet_: function(printerId,
792 capabilities) {
793 var event = new Event(NativeLayer.EventType.EXTENSION_CAPABILITIES_SET);
794 event.printerId = printerId;
795 event.capabilities = capabilities;
796 this.dispatchEvent(event);
797 },
798
799 /**
723 * Allows for onManipulateSettings to be called 800 * Allows for onManipulateSettings to be called
724 * from the native layer. 801 * from the native layer.
725 * @private 802 * @private
726 */ 803 */
727 onEnableManipulateSettingsForTest_: function() { 804 onEnableManipulateSettingsForTest_: function() {
728 global.onManipulateSettingsForTest = 805 global.onManipulateSettingsForTest =
729 this.onManipulateSettingsForTest_.bind(this); 806 this.onManipulateSettingsForTest_.bind(this);
730 }, 807 },
731 808
732 /** 809 /**
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
956 return this.serializedAppStateStr_; 1033 return this.serializedAppStateStr_;
957 } 1034 }
958 }; 1035 };
959 1036
960 // Export 1037 // Export
961 return { 1038 return {
962 NativeInitialSettings: NativeInitialSettings, 1039 NativeInitialSettings: NativeInitialSettings,
963 NativeLayer: NativeLayer 1040 NativeLayer: NativeLayer
964 }; 1041 };
965 }); 1042 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698