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

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

Issue 2969383003: Print Preview: Finish removing global Javascript functions. (Closed)
Patch Set: Fix test Created 3 years, 5 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 // TODO(rltoscano): Move data/* into print_preview.data namespace 5 // TODO(rltoscano): Move data/* into print_preview.data namespace
6 6
7 // <include src="component.js"> 7 // <include src="component.js">
8 // <include src="print_preview_focus_manager.js"> 8 // <include src="print_preview_focus_manager.js">
9 // 9 //
10 10
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after
303 * @private 303 * @private
304 */ 304 */
305 this.isPreviewGenerationInProgress_ = true; 305 this.isPreviewGenerationInProgress_ = true;
306 306
307 /** 307 /**
308 * Whether to show system dialog before next printing. 308 * Whether to show system dialog before next printing.
309 * @type {boolean} 309 * @type {boolean}
310 * @private 310 * @private
311 */ 311 */
312 this.showSystemDialogBeforeNextPrint_ = false; 312 this.showSystemDialogBeforeNextPrint_ = false;
313
314 /**
315 * Whether the preview is listening for the manipulate-settings-for-test
316 * UI event.
317 * @private {boolean}
318 */
319 this.isListeningForManipulateSettings_ = false;
313 } 320 }
314 321
315 PrintPreview.prototype = { 322 PrintPreview.prototype = {
316 __proto__: print_preview.Component.prototype, 323 __proto__: print_preview.Component.prototype,
317 /** 324 /**
318 * @return {!print_preview.PreviewArea} The preview area. Used for tests. 325 * @return {!print_preview.PreviewArea} The preview area. Used for tests.
319 */ 326 */
320 getPreviewArea: function() { 327 getPreviewArea: function() {
321 return this.previewArea_; 328 return this.previewArea_;
322 }, 329 },
323 330
324 /** Sets up the page and print preview by getting the printer list. */ 331 /** Sets up the page and print preview by getting the printer list. */
325 initialize: function() { 332 initialize: function() {
326 this.decorate($('print-preview')); 333 this.decorate($('print-preview'));
327 if (!this.previewArea_.hasCompatiblePlugin) { 334 if (!this.previewArea_.hasCompatiblePlugin) {
328 this.setIsEnabled_(false); 335 this.setIsEnabled_(false);
329 } 336 }
330 this.nativeLayer_.getInitialSettings().then( 337 this.nativeLayer_.getInitialSettings().then(
331 this.onInitialSettingsSet_.bind(this)); 338 this.onInitialSettingsSet_.bind(this));
332 print_preview.PrintPreviewFocusManager.getInstance().initialize(); 339 print_preview.PrintPreviewFocusManager.getInstance().initialize();
333 cr.ui.FocusOutlineManager.forDocument(document); 340 cr.ui.FocusOutlineManager.forDocument(document);
334 this.listenerTracker.add('print-failed', this.onPrintFailed_.bind(this)); 341 this.listenerTracker.add('print-failed', this.onPrintFailed_.bind(this));
335 this.listenerTracker.add( 342 this.destinationStore_.addWebUIEventListeners(this.listenerTracker);
336 'privet-printer-added',
337 this.destinationStore_.onPrivetPrinterAdded_.bind(
338 this.destinationStore_));
339 this.listenerTracker.add(
340 'extension-printers-added',
341 this.destinationStore_.onExtensionPrintersAdded_.bind(
342 this.destinationStore_));
343 this.listenerTracker.add( 343 this.listenerTracker.add(
344 'use-cloud-print', this.onCloudPrintEnable_.bind(this)); 344 'use-cloud-print', this.onCloudPrintEnable_.bind(this));
345 this.listenerTracker.add(
346 'print-preset-options',
347 this.onPrintPresetOptionsFromDocument_.bind(this));
348 this.listenerTracker.add(
349 'preview-page-count', this.onPageCountReady_.bind(this));
350 this.listenerTracker.add(
351 'enable-manipulate-settings-for-test',
352 this.onEnableManipulateSettingsForTest_.bind(this));
345 }, 353 },
346 354
347 /** @override */ 355 /** @override */
348 enterDocument: function() { 356 enterDocument: function() {
349 // Native layer events.
350 var nativeLayerEventTarget = this.nativeLayer_.getEventTarget();
351 this.tracker.add(
352 nativeLayerEventTarget,
353 print_preview.NativeLayer.EventType.PRINT_PRESET_OPTIONS,
354 this.onPrintPresetOptionsFromDocument_.bind(this));
355 this.tracker.add(
356 nativeLayerEventTarget,
357 print_preview.NativeLayer.EventType.PAGE_COUNT_READY,
358 this.onPageCountReady_.bind(this));
359 this.tracker.add(
360 nativeLayerEventTarget,
361 print_preview.NativeLayer.EventType.MANIPULATE_SETTINGS_FOR_TEST,
362 this.onManipulateSettingsForTest_.bind(this));
363
364 if ($('system-dialog-link')) { 357 if ($('system-dialog-link')) {
365 this.tracker.add( 358 this.tracker.add(
366 getRequiredElement('system-dialog-link'), 'click', 359 getRequiredElement('system-dialog-link'), 'click',
367 this.openSystemPrintDialog_.bind(this)); 360 this.openSystemPrintDialog_.bind(this));
368 } 361 }
369 if ($('open-pdf-in-preview-link')) { 362 if ($('open-pdf-in-preview-link')) {
370 this.tracker.add( 363 this.tracker.add(
371 getRequiredElement('open-pdf-in-preview-link'), 'click', 364 getRequiredElement('open-pdf-in-preview-link'), 'click',
372 this.onOpenPdfInPreviewLinkClick_.bind(this)); 365 this.onOpenPdfInPreviewLinkClick_.bind(this));
373 } 366 }
(...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after
817 this.isPreviewGenerationInProgress_ = true; 810 this.isPreviewGenerationInProgress_ = true;
818 }, 811 },
819 812
820 /** 813 /**
821 * Called when the preview area's preview generation is complete. 814 * Called when the preview area's preview generation is complete.
822 * @private 815 * @private
823 */ 816 */
824 onPreviewGenerationDone_: function() { 817 onPreviewGenerationDone_: function() {
825 this.isPreviewGenerationInProgress_ = false; 818 this.isPreviewGenerationInProgress_ = false;
826 this.printHeader_.isPrintButtonEnabled = true; 819 this.printHeader_.isPrintButtonEnabled = true;
827 this.nativeLayer_.previewReadyForTest(); 820 if (this.isListeningForManipulateSettings_)
821 this.nativeLayer_.previewReadyForTest();
828 this.printIfReady_(); 822 this.printIfReady_();
829 }, 823 },
830 824
831 /** 825 /**
832 * Called when the preview area's preview failed to load. 826 * Called when the preview area's preview failed to load.
833 * @private 827 * @private
834 */ 828 */
835 onPreviewGenerationFail_: function() { 829 onPreviewGenerationFail_: function() {
836 this.isPreviewGenerationInProgress_ = false; 830 this.isPreviewGenerationInProgress_ = false;
837 this.printHeader_.isPrintButtonEnabled = false; 831 this.printHeader_.isPrintButtonEnabled = false;
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
995 }, 989 },
996 990
997 /** 991 /**
998 * Called when the user wants to sign in to Google Cloud Print. Calls the 992 * Called when the user wants to sign in to Google Cloud Print. Calls the
999 * corresponding native layer event. 993 * corresponding native layer event.
1000 * @param {boolean} addAccount Whether to open an 'add a new account' or 994 * @param {boolean} addAccount Whether to open an 'add a new account' or
1001 * default sign in page. 995 * default sign in page.
1002 * @private 996 * @private
1003 */ 997 */
1004 onCloudPrintSignInActivated_: function(addAccount) { 998 onCloudPrintSignInActivated_: function(addAccount) {
1005 this.nativeLayer_.startCloudPrintSignIn(addAccount); 999 this.nativeLayer_.signIn(addAccount)
1000 .then(this.destinationStore_.onDestinationsReload.bind(
1001 this.destinationStore_));
1006 }, 1002 },
1007 1003
1008 /** 1004 /**
1009 * Updates printing options according to source document presets. 1005 * Updates printing options according to source document presets.
1010 * @param {Event} event Contains options from source document. 1006 * @param {boolean} disableScaling Whether the document disables scaling.
1007 * @param {number} copies The default number of copies from the document.
1008 * @param {number} duplex The default duplex setting from the document.
1011 * @private 1009 * @private
1012 */ 1010 */
1013 onPrintPresetOptionsFromDocument_: function(event) { 1011 onPrintPresetOptionsFromDocument_: function(
1014 if (event.optionsFromDocument.disableScaling) 1012 disableScaling, copies, duplex) {
1013 if (disableScaling)
1015 this.documentInfo_.updateIsScalingDisabled(true); 1014 this.documentInfo_.updateIsScalingDisabled(true);
1016 1015
1017 if (event.optionsFromDocument.copies > 0 && 1016 if (copies > 0 && this.printTicketStore_.copies.isCapabilityAvailable()) {
1018 this.printTicketStore_.copies.isCapabilityAvailable()) { 1017 this.printTicketStore_.copies.updateValue(copies);
1019 this.printTicketStore_.copies.updateValue(
1020 event.optionsFromDocument.copies);
1021 } 1018 }
1022 1019
1023 if (event.optionsFromDocument.duplex >= 0 && 1020 if (duplex >= 0 & this.printTicketStore_.duplex.isCapabilityAvailable()) {
1024 this.printTicketStore_.duplex.isCapabilityAvailable()) { 1021 this.printTicketStore_.duplex.updateValue(duplex);
1025 this.printTicketStore_.duplex.updateValue(
1026 event.optionsFromDocument.duplex);
1027 } 1022 }
1028 }, 1023 },
1029 1024
1030 /** 1025 /**
1031 * Called when the Page Count Ready message is received to update the fit to 1026 * Called when the Page Count Ready message is received to update the fit to
1032 * page scaling value in the scaling settings. 1027 * page scaling value in the scaling settings.
1033 * @param {Event} event Event object representing the page count ready 1028 * @param {number} pageCount The document's page count (unused).
1034 * message 1029 * @param {number} previewResponseId The request ID that corresponds to this
1030 * page count (unused).
1031 * @param {number} fitToPageScaling The scaling required to fit the document
1032 * to page.
1035 * @private 1033 * @private
1036 */ 1034 */
1037 onPageCountReady_: function(event) { 1035 onPageCountReady_: function(
1038 if (event.fitToPageScaling >= 0) { 1036 pageCount, previewResponseId, fitToPageScaling) {
1039 this.scalingSettings_.updateFitToPageScaling(event.fitToPageScaling); 1037 if (fitToPageScaling >= 0) {
1038 this.scalingSettings_.updateFitToPageScaling(fitToPageScaling);
1040 } 1039 }
1041 }, 1040 },
1042 1041
1043 /** 1042 /**
1044 * Called when printing to a privet or extension printer fails. 1043 * Called when printing to a privet or extension printer fails.
1045 * @param {*} httpError The HTTP error code, or -1 or a string describing 1044 * @param {*} httpError The HTTP error code, or -1 or a string describing
1046 * the error, if not an HTTP error. 1045 * the error, if not an HTTP error.
1047 * @private 1046 * @private
1048 */ 1047 */
1049 onPrintFailed_: function(httpError) { 1048 onPrintFailed_: function(httpError) {
1050 console.error('Privet printing failed with error code ' + httpError); 1049 console.error('Privet printing failed with error code ' + httpError);
1051 this.printHeader_.setErrorMessage( 1050 this.printHeader_.setErrorMessage(
1052 loadTimeData.getString('couldNotPrint')); 1051 loadTimeData.getString('couldNotPrint'));
1053 }, 1052 },
1054 1053
1055 /** 1054 /**
1056 * Called when the print preview settings need to be changed for testing. 1055 * Called to start listening for the manipulate-settings-for-test WebUI
1057 * @param {Event} event Event object that contains the option that is to 1056 * event so that settings can be modified by this event.
1058 * be changed and what to set that option.
1059 * @private 1057 * @private
1060 */ 1058 */
1061 onManipulateSettingsForTest_: function(event) { 1059 onEnableManipulateSettingsForTest_: function() {
1062 var settings = 1060 this.listenerTracker.add(
1063 /** @type {print_preview.PreviewSettings} */ (event.settings); 1061 'manipulate-settings-for-test',
1062 this.onManipulateSettingsForTest_.bind(this));
1063 this.isListeningForManipulateSettings_ = true;
1064 },
1065
1066 /**
1067 * Called when the print preview settings need to be changed for testing.
1068 * @param {!print_preview.PreviewSettings} settings Contains print preview
1069 * settings to change and the values to change them to.
1070 * @private
1071 */
1072 onManipulateSettingsForTest_: function(settings) {
1064 if ('selectSaveAsPdfDestination' in settings) { 1073 if ('selectSaveAsPdfDestination' in settings) {
1065 this.saveAsPdfForTest_(); // No parameters. 1074 this.saveAsPdfForTest_(); // No parameters.
1066 } else if ('layoutSettings' in settings) { 1075 } else if ('layoutSettings' in settings) {
1067 this.setLayoutSettingsForTest_(settings.layoutSettings.portrait); 1076 this.setLayoutSettingsForTest_(settings.layoutSettings.portrait);
1068 } else if ('pageRange' in settings) { 1077 } else if ('pageRange' in settings) {
1069 this.setPageRangeForTest_(settings.pageRange); 1078 this.setPageRangeForTest_(settings.pageRange);
1070 } else if ('headersAndFooters' in settings) { 1079 } else if ('headersAndFooters' in settings) {
1071 this.setHeadersAndFootersForTest_(settings.headersAndFooters); 1080 this.setHeadersAndFootersForTest_(settings.headersAndFooters);
1072 } else if ('backgroundColorsAndImages' in settings) { 1081 } else if ('backgroundColorsAndImages' in settings) {
1073 this.setBackgroundColorsAndImagesForTest_( 1082 this.setBackgroundColorsAndImagesForTest_(
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after
1360 // <include src="search/destination_search.js"> 1369 // <include src="search/destination_search.js">
1361 // <include src="search/provisional_destination_resolver.js"> 1370 // <include src="search/provisional_destination_resolver.js">
1362 1371
1363 window.addEventListener('DOMContentLoaded', function() { 1372 window.addEventListener('DOMContentLoaded', function() {
1364 var previewWindow = /** @type {{isTest: boolean}} */ (window); 1373 var previewWindow = /** @type {{isTest: boolean}} */ (window);
1365 if (!previewWindow.isTest) { 1374 if (!previewWindow.isTest) {
1366 var printPreview = new print_preview.PrintPreview(); 1375 var printPreview = new print_preview.PrintPreview();
1367 printPreview.initialize(); 1376 printPreview.initialize();
1368 } 1377 }
1369 }); 1378 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698