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

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

Issue 8055036: Revert 103010 - Refactored code to move cloudprint specific code into print_preview_cloud.js. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 2 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 // require: cr/ui/print_preview_cloud.js 5 // require: cr/ui/print_preview_cloud.js
6 6
7 var localStrings = new LocalStrings(); 7 var localStrings = new LocalStrings();
8 8
9 // If useCloudPrint is true we attempt to connect to cloud print 9 // If useCloudPrint is true we attempt to connect to cloud print
10 // and populate the list of printers with cloud print printers. 10 // and populate the list of printers with cloud print printers.
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 // The range of options in the printer dropdown controlled by cloud print. 78 // The range of options in the printer dropdown controlled by cloud print.
79 var firstCloudPrintOptionPos = 0; 79 var firstCloudPrintOptionPos = 0;
80 var lastCloudPrintOptionPos = firstCloudPrintOptionPos; 80 var lastCloudPrintOptionPos = firstCloudPrintOptionPos;
81 81
82 // Store the current previewUid. 82 // Store the current previewUid.
83 var currentPreviewUid = ''; 83 var currentPreviewUid = '';
84 84
85 // True if we need to generate draft preview data. 85 // True if we need to generate draft preview data.
86 var generateDraftData = true; 86 var generateDraftData = true;
87 87
88 // TODO(abodenha@chromium.org) A lot of cloud print specific logic has
89 // made its way into this file. Refactor to create a cleaner boundary
90 // between print preview and GCP code. Reference bug 88098 when fixing.
91
88 // A dictionary of cloud printers that have been added to the printer 92 // A dictionary of cloud printers that have been added to the printer
89 // dropdown. 93 // dropdown.
90 var addedCloudPrinters = {}; 94 var addedCloudPrinters = {};
91 95
92 // The maximum number of cloud printers to allow in the dropdown. 96 // The maximum number of cloud printers to allow in the dropdown.
93 const maxCloudPrinters = 10; 97 const maxCloudPrinters = 10;
94 98
95 const MIN_REQUEST_ID = 0; 99 const MIN_REQUEST_ID = 0;
96 const MAX_REQUEST_ID = 32000; 100 const MAX_REQUEST_ID = 32000;
97 101
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
212 * Gets the selected printer capabilities and updates the controls accordingly. 216 * Gets the selected printer capabilities and updates the controls accordingly.
213 */ 217 */
214 function updateControlsWithSelectedPrinterCapabilities() { 218 function updateControlsWithSelectedPrinterCapabilities() {
215 var printerList = $('printer-list'); 219 var printerList = $('printer-list');
216 var selectedIndex = printerList.selectedIndex; 220 var selectedIndex = printerList.selectedIndex;
217 if (selectedIndex < 0) 221 if (selectedIndex < 0)
218 return; 222 return;
219 var skip_refresh = false; 223 var skip_refresh = false;
220 var selectedValue = printerList.options[selectedIndex].value; 224 var selectedValue = printerList.options[selectedIndex].value;
221 if (cloudprint.isCloudPrint(printerList.options[selectedIndex])) { 225 if (cloudprint.isCloudPrint(printerList.options[selectedIndex])) {
222 cloudprint.updatePrinterCaps(printerList.options[selectedIndex], 226 updateWithCloudPrinterCapabilities();
223 doUpdateCloudPrinterCapabilities); 227 skip_refresh = true;
228 } else if (selectedValue == PRINT_WITH_CLOUD_PRINT) {
229 // If a preview is pending this will just disable controls.
230 // Once the preview completes we'll try again.
231 printWithCloudPrintDialog();
224 skip_refresh = true; 232 skip_refresh = true;
225 } else if (selectedValue == SIGN_IN || 233 } else if (selectedValue == SIGN_IN ||
226 selectedValue == MANAGE_CLOUD_PRINTERS || 234 selectedValue == MANAGE_CLOUD_PRINTERS ||
227 selectedValue == MANAGE_LOCAL_PRINTERS) { 235 selectedValue == MANAGE_LOCAL_PRINTERS) {
228 printerList.selectedIndex = lastSelectedPrinterIndex; 236 printerList.selectedIndex = lastSelectedPrinterIndex;
229 chrome.send(selectedValue); 237 chrome.send(selectedValue);
230 skip_refresh = true; 238 skip_refresh = true;
231 } else if (selectedValue == PRINT_TO_PDF || 239 } else if (selectedValue == PRINT_TO_PDF) {
232 selectedValue == PRINT_WITH_CLOUD_PRINT) {
233 updateWithPrinterCapabilities({ 240 updateWithPrinterCapabilities({
234 'disableColorOption': true, 241 'disableColorOption': true,
235 'setColorAsDefault': true, 242 'setColorAsDefault': true,
236 'setDuplexAsDefault': false, 243 'setDuplexAsDefault': false,
237 'printerColorModelForColor': colorSettings.COLOR, 244 'printerColorModelForColor': colorSettings.COLOR,
238 'printerDefaultDuplexValue': copiesSettings.UNKNOWN_DUPLEX_MODE, 245 'printerDefaultDuplexValue': copiesSettings.UNKNOWN_DUPLEX_MODE,
239 'disableCopiesOption': true}); 246 'disableCopiesOption': true});
240 } else { 247 } else {
241 // This message will call back to 'updateWithPrinterCapabilities' 248 // This message will call back to 'updateWithPrinterCapabilities'
242 // function. 249 // function.
243 chrome.send('getPrinterCapabilities', [selectedValue]); 250 chrome.send('getPrinterCapabilities', [selectedValue]);
244 } 251 }
245 if (!skip_refresh) { 252 if (!skip_refresh) {
246 lastSelectedPrinterIndex = selectedIndex; 253 lastSelectedPrinterIndex = selectedIndex;
247 254
248 // Regenerate the preview data based on selected printer settings. 255 // Regenerate the preview data based on selected printer settings.
249 setDefaultValuesAndRegeneratePreview(true); 256 setDefaultValuesAndRegeneratePreview(true);
250 } 257 }
251 } 258 }
252 259
253 /** 260 /**
261 * Updates the printer capabilities for the currently selected
262 * cloud print printer.
263 */
264 function updateWithCloudPrinterCapabilities() {
265 var printerList = $('printer-list');
266 var selectedIndex = printerList.selectedIndex;
267 cloudprint.updatePrinterCaps(printerList.options[selectedIndex],
268 doUpdateCloudPrinterCapabilities);
269 }
270
271 /**
254 * Helper function to do the actual work of updating cloud printer 272 * Helper function to do the actual work of updating cloud printer
255 * capabilities. 273 * capabilities.
256 * @param {Object} printer The printer object to set capabilities for. 274 * @param {Object} printer The printer object to set capabilities for.
257 */ 275 */
258 function doUpdateCloudPrinterCapabilities(printer) { 276 function doUpdateCloudPrinterCapabilities(printer) {
259 var settings = {'disableColorOption': !cloudprint.supportsColor(printer), 277 var settings = {'disableColorOption': !cloudprint.supportsColor(printer),
260 'setColorAsDefault': cloudprint.colorIsDefault(printer), 278 'setColorAsDefault': cloudprint.colorIsDefault(printer),
261 'disableCopiesOption': true, 279 'disableCopiesOption': true,
262 'disableLandscapeOption': true}; 280 'disableLandscapeOption': true};
263 updateWithPrinterCapabilities(settings); 281 updateWithPrinterCapabilities(settings);
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 function finishedCloudPrinting() { 322 function finishedCloudPrinting() {
305 window.location = cloudprint.getBaseURL(); 323 window.location = cloudprint.getBaseURL();
306 } 324 }
307 325
308 /** 326 /**
309 * Checks whether the specified settings are valid. 327 * Checks whether the specified settings are valid.
310 * 328 *
311 * @return {boolean} true if settings are valid, false if not. 329 * @return {boolean} true if settings are valid, false if not.
312 */ 330 */
313 function areSettingsValid() { 331 function areSettingsValid() {
314 var selectedPrinter = getSelectedPrinterName();
315 return pageSettings.isPageSelectionValid() && 332 return pageSettings.isPageSelectionValid() &&
316 (copiesSettings.isValid() || 333 (copiesSettings.isValid() ||
317 selectedPrinter == PRINT_TO_PDF || 334 getSelectedPrinterName() == PRINT_TO_PDF);
318 selectedPrinter == PRINT_WITH_CLOUD_PRINT);
319 } 335 }
320 336
321 /** 337 /**
322 * Creates an object based on the values in the printer settings. 338 * Creates an object based on the values in the printer settings.
323 * 339 *
324 * @return {Object} Object containing print job settings. 340 * @return {Object} Object containing print job settings.
325 */ 341 */
326 function getSettings() { 342 function getSettings() {
327 var deviceName = getSelectedPrinterName(); 343 var deviceName = getSelectedPrinterName();
328 var printToPDF = deviceName == PRINT_TO_PDF; 344 var printToPDF = (deviceName == PRINT_TO_PDF);
329 var printWithCloudPrint = deviceName == PRINT_WITH_CLOUD_PRINT;
330 345
331 var settings = 346 var settings =
332 {'deviceName': deviceName, 347 {'deviceName': deviceName,
333 'pageRange': pageSettings.selectedPageRanges, 348 'pageRange': pageSettings.selectedPageRanges,
334 'duplex': copiesSettings.duplexMode, 349 'duplex': copiesSettings.duplexMode,
335 'copies': copiesSettings.numberOfCopies, 350 'copies': copiesSettings.numberOfCopies,
336 'collate': copiesSettings.isCollated(), 351 'collate': copiesSettings.isCollated(),
337 'landscape': layoutSettings.isLandscape(), 352 'landscape': layoutSettings.isLandscape(),
338 'color': colorSettings.colorMode, 353 'color': colorSettings.colorMode,
339 'printToPDF': printToPDF, 354 'printToPDF': printToPDF,
340 'printWithCloudPrint': printWithCloudPrint,
341 'isFirstRequest' : false, 355 'isFirstRequest' : false,
342 'headerFooterEnabled': headerFooterSettings.hasHeaderFooter(), 356 'headerFooterEnabled': headerFooterSettings.hasHeaderFooter(),
343 'defaultMarginsSelected': marginSettings.isDefaultMarginsSelected(), 357 'defaultMarginsSelected': marginSettings.isDefaultMarginsSelected(),
344 'margins': marginSettings.customMargins, 358 'margins': marginSettings.customMargins,
345 'requestID': -1, 359 'requestID': -1,
346 'generateDraftData': generateDraftData}; 360 'generateDraftData': generateDraftData};
347 361
348 var printerList = $('printer-list'); 362 var printerList = $('printer-list');
349 var selectedPrinter = printerList.selectedIndex; 363 var selectedPrinter = printerList.selectedIndex;
350 if (cloudprint.isCloudPrint(printerList.options[selectedPrinter])) { 364 if (cloudprint.isCloudPrint(printerList.options[selectedPrinter])) {
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
414 return printerList.options[selectedPrinter].value; 428 return printerList.options[selectedPrinter].value;
415 } 429 }
416 430
417 /** 431 /**
418 * Asks the browser to print the preview PDF based on current print 432 * Asks the browser to print the preview PDF based on current print
419 * settings. If the preview is still loading, printPendingFile() will get 433 * settings. If the preview is still loading, printPendingFile() will get
420 * called once the preview loads. 434 * called once the preview loads.
421 */ 435 */
422 function requestToPrintDocument() { 436 function requestToPrintDocument() {
423 hasPendingPrintDocumentRequest = !isPrintReadyMetafileReady; 437 hasPendingPrintDocumentRequest = !isPrintReadyMetafileReady;
424 var selectedPrinterName = getSelectedPrinterName(); 438 var printToPDF = getSelectedPrinterName() == PRINT_TO_PDF;
425 var printToPDF = selectedPrinterName == PRINT_TO_PDF; 439
426 var printWithCloudPrint = selectedPrinterName == PRINT_WITH_CLOUD_PRINT;
427 if (hasPendingPrintDocumentRequest) { 440 if (hasPendingPrintDocumentRequest) {
428 if (printToPDF) { 441 if (printToPDF) {
429 sendPrintDocumentRequest(); 442 sendPrintDocumentRequest();
430 } else if (printWithCloudPrint) {
431 showCustomMessage(localStrings.getString('printWithCloudPrintWait'));
432 disableInputElementsInSidebar();
433 } else { 443 } else {
434 isTabHidden = true; 444 isTabHidden = true;
435 chrome.send('hidePreview'); 445 chrome.send('hidePreview');
436 } 446 }
437 return; 447 return;
438 } 448 }
439 449
440 if (printToPDF) { 450 if (printToPDF) {
441 sendPrintDocumentRequest(); 451 sendPrintDocumentRequest();
442 } else { 452 } else {
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
535 * the default printer is a cloud printer. 545 * the default printer is a cloud printer.
536 */ 546 */
537 function setDefaultPrinter(printer_name, cloudPrintData) { 547 function setDefaultPrinter(printer_name, cloudPrintData) {
538 // Add a placeholder value so the printer list looks valid. 548 // Add a placeholder value so the printer list looks valid.
539 addDestinationListOption('', '', true, true, true); 549 addDestinationListOption('', '', true, true, true);
540 if (printer_name) { 550 if (printer_name) {
541 defaultOrLastUsedPrinterName = printer_name; 551 defaultOrLastUsedPrinterName = printer_name;
542 if (cloudPrintData) { 552 if (cloudPrintData) {
543 cloudprint.setDefaultPrinter(printer_name, 553 cloudprint.setDefaultPrinter(printer_name,
544 cloudPrintData, 554 cloudPrintData,
545 addDestinationListOptionAtPosition, 555 addCloudPrinters,
546 doUpdateCloudPrinterCapabilities); 556 doUpdateCloudPrinterCapabilities);
547 } else { 557 } else {
548 $('printer-list')[0].value = defaultOrLastUsedPrinterName; 558 $('printer-list')[0].value = defaultOrLastUsedPrinterName;
549 updateControlsWithSelectedPrinterCapabilities(); 559 updateControlsWithSelectedPrinterCapabilities();
550 } 560 }
551 } 561 }
552 chrome.send('getPrinters'); 562 chrome.send('getPrinters');
553 } 563 }
554 564
555 /** 565 /**
(...skipping 25 matching lines...) Expand all
581 if (useCloudPrint) { 591 if (useCloudPrint) {
582 addDestinationListOption(localStrings.getString('printWithCloudPrint'), 592 addDestinationListOption(localStrings.getString('printWithCloudPrint'),
583 PRINT_WITH_CLOUD_PRINT, 593 PRINT_WITH_CLOUD_PRINT,
584 false, 594 false,
585 false, 595 false,
586 false); 596 false);
587 addDestinationListOption('', '', false, true, true); 597 addDestinationListOption('', '', false, true, true);
588 } 598 }
589 // Add options to manage printers. 599 // Add options to manage printers.
590 if (!cr.isChromeOS) { 600 if (!cr.isChromeOS) {
591 addDestinationListOption(localStrings.getString('managePrinters'), 601 addDestinationListOption(localStrings.getString('manageLocalPrinters'),
592 MANAGE_LOCAL_PRINTERS, false, false, false); 602 MANAGE_LOCAL_PRINTERS, false, false, false);
593 } else if (useCloudPrint) { 603 } else if (useCloudPrint) {
594 // Fetch recent printers. 604 // Fetch recent printers.
595 cloudprint.fetchPrinters(addDestinationListOptionAtPosition, false); 605 cloudprint.fetchPrinters(addCloudPrinters, false);
596 // Fetch the full printer list. 606 // Fetch the full printer list.
597 cloudprint.fetchPrinters(addDestinationListOptionAtPosition, true); 607 cloudprint.fetchPrinters(addCloudPrinters, true);
598 addDestinationListOption(localStrings.getString('managePrinters'), 608 addDestinationListOption(localStrings.getString('manageCloudPrinters'),
599 MANAGE_CLOUD_PRINTERS, false, false, false); 609 MANAGE_CLOUD_PRINTERS, false, false, false);
600 } 610 }
601 611
602 printerList.disabled = false; 612 printerList.disabled = false;
603 613
604 if (!hasRequestedPreview()) 614 if (!hasRequestedPreview())
605 updateControlsWithSelectedPrinterCapabilities(); 615 updateControlsWithSelectedPrinterCapabilities();
606 } 616 }
607 617
608 /** 618 /**
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
666 var option = createDestinationListOption(optionText, 676 var option = createDestinationListOption(optionText,
667 optionValue, 677 optionValue,
668 isDefault, 678 isDefault,
669 isDisabled, 679 isDisabled,
670 isSeparator); 680 isSeparator);
671 var printerList = $('printer-list'); 681 var printerList = $('printer-list');
672 var before = printerList[position]; 682 var before = printerList[position];
673 printerList.add(option, before); 683 printerList.add(option, before);
674 return option; 684 return option;
675 } 685 }
686
687 /**
688 * Test if a particular cloud printer has already been added to the
689 * printer dropdown.
690 * @param {string} id A unique value to track this printer.
691 * @return {boolean} True if this id has previously been passed to
692 * trackCloudPrinterAdded.
693 */
694 function cloudPrinterAlreadyAdded(id) {
695 return (addedCloudPrinters[id]);
696 }
697
698 /**
699 * Record that a cloud printer will added to the printer dropdown.
700 * @param {string} id A unique value to track this printer.
701 * @return {boolean} False if adding this printer would exceed
702 * |maxCloudPrinters|.
703 */
704 function trackCloudPrinterAdded(id) {
705 if (Object.keys(addedCloudPrinters).length < maxCloudPrinters) {
706 addedCloudPrinters[id] = true;
707 return true;
708 } else {
709 return false;
710 }
711 }
712
713
714 /**
715 * Add cloud printers to the list drop down.
716 * Called from the cloudprint object on receipt of printer information from the
717 * cloud print server.
718 * @param {Array} printers Array of printer info objects.
719 * @return {Object} The currently selected printer.
720 */
721 function addCloudPrinters(printers) {
722 var isFirstPass = false;
723 var printerList = $('printer-list');
724
725 if (firstCloudPrintOptionPos == lastCloudPrintOptionPos) {
726 isFirstPass = true;
727 // Remove empty entry added by setDefaultPrinter.
728 if (printerList[0] && printerList[0].textContent == '')
729 printerList.remove(0);
730 var option = addDestinationListOptionAtPosition(
731 lastCloudPrintOptionPos++,
732 localStrings.getString('cloudPrinters'),
733 'Label',
734 false,
735 true,
736 false);
737 cloudprint.setCloudPrint(option, null, null);
738 }
739 if (printers != null) {
740 for (var i = 0; i < printers.length; i++) {
741 if (!cloudPrinterAlreadyAdded(printers[i]['id'])) {
742 if (!trackCloudPrinterAdded(printers[i]['id'])) {
743 break;
744 }
745 var option = addDestinationListOptionAtPosition(
746 lastCloudPrintOptionPos++,
747 printers[i]['name'],
748 printers[i]['id'],
749 printers[i]['name'] == defaultOrLastUsedPrinterName,
750 false,
751 false);
752 cloudprint.setCloudPrint(option,
753 printers[i]['name'],
754 printers[i]['id']);
755 }
756 }
757 } else {
758 if (!cloudPrinterAlreadyAdded(SIGN_IN)) {
759 addDestinationListOptionAtPosition(lastCloudPrintOptionPos++,
760 localStrings.getString('signIn'),
761 SIGN_IN,
762 false,
763 false,
764 false);
765 trackCloudPrinterAdded(SIGN_IN);
766 }
767 }
768 if (isFirstPass) {
769 addDestinationListOptionAtPosition(lastCloudPrintOptionPos,
770 '',
771 '',
772 false,
773 true,
774 true);
775 addDestinationListOptionAtPosition(lastCloudPrintOptionPos + 1,
776 localStrings.getString('localPrinters'),
777 '',
778 false,
779 true,
780 false);
781 }
782 var selectedPrinter = printerList.selectedIndex;
783 if (selectedPrinter < 0)
784 return null;
785 return printerList.options[selectedPrinter];
786 }
787
676 /** 788 /**
677 * Sets the color mode for the PDF plugin. 789 * Sets the color mode for the PDF plugin.
678 * Called from PrintPreviewHandler::ProcessColorSetting(). 790 * Called from PrintPreviewHandler::ProcessColorSetting().
679 * @param {boolean} color is true if the PDF plugin should display in color. 791 * @param {boolean} color is true if the PDF plugin should display in color.
680 */ 792 */
681 function setColor(color) { 793 function setColor(color) {
682 var pdfViewer = $('pdf-viewer'); 794 var pdfViewer = $('pdf-viewer');
683 if (!pdfViewer) { 795 if (!pdfViewer) {
684 return; 796 return;
685 } 797 }
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
790 // TODO(aayushkumar): Do something here! 902 // TODO(aayushkumar): Do something here!
791 } 903 }
792 904
793 /** 905 /**
794 * This function sends a request to hide the overlay layer only if there is no 906 * This function sends a request to hide the overlay layer only if there is no
795 * pending print document request and we are not waiting for the print ready 907 * pending print document request and we are not waiting for the print ready
796 * metafile. 908 * metafile.
797 */ 909 */
798 function checkAndHideOverlayLayerIfValid() { 910 function checkAndHideOverlayLayerIfValid() {
799 var selectedPrinter = getSelectedPrinterName(); 911 var selectedPrinter = getSelectedPrinterName();
800 var printToDialog = selectedPrinter == PRINT_TO_PDF || 912 var printToPDF = selectedPrinter == PRINT_TO_PDF;
801 selectedPrinter == PRINT_WITH_CLOUD_PRINT; 913 var printWithCloudPrint = selectedPrinter == PRINT_WITH_CLOUD_PRINT;
802 if ((printToDialog || !previewModifiable) && 914 if ((printToPDF || printWithCloudPrint || !previewModifiable) &&
803 !isPrintReadyMetafileReady && hasPendingPrintDocumentRequest) { 915 !isPrintReadyMetafileReady && hasPendingPrintDocumentRequest) {
804 return; 916 return;
805 } 917 }
806 hideOverlayLayer(); 918 hideOverlayLayer();
807 } 919 }
808 920
809 /** 921 /**
810 * Called when no pipelining previewed pages. 922 * Called when no pipelining previewed pages.
811 * @param {string} previewUid Preview unique identifier. 923 * @param {string} previewUid Preview unique identifier.
812 * @param {number} previewResponseId The preview request id that resulted in 924 * @param {number} previewResponseId The preview request id that resulted in
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
897 */ 1009 */
898 function sendPrintDocumentRequestIfNeeded() { 1010 function sendPrintDocumentRequestIfNeeded() {
899 if (!hasPendingPrintDocumentRequest || !isFirstPageLoaded) 1011 if (!hasPendingPrintDocumentRequest || !isFirstPageLoaded)
900 return; 1012 return;
901 1013
902 // If the selected printer is PRINT_TO_PDF or PRINT_WITH_CLOUD_PRINT or 1014 // If the selected printer is PRINT_TO_PDF or PRINT_WITH_CLOUD_PRINT or
903 // the preview source is not modifiable, we need the print ready data for 1015 // the preview source is not modifiable, we need the print ready data for
904 // printing. If the preview source is modifiable, we need to wait till all 1016 // printing. If the preview source is modifiable, we need to wait till all
905 // the requested pages are loaded in the plugin for printing. 1017 // the requested pages are loaded in the plugin for printing.
906 var selectedPrinter = getSelectedPrinterName(); 1018 var selectedPrinter = getSelectedPrinterName();
907 var printToDialog = selectedPrinter == PRINT_TO_PDF || 1019 var printToPDF = selectedPrinter == PRINT_TO_PDF;
908 selectedPrinter == PRINT_WITH_CLOUD_PRINT; 1020 var printWithCloudPrint = selectedPrinter == PRINT_WITH_CLOUD_PRINT;
909 if (((printToDialog || !previewModifiable) && !isPrintReadyMetafileReady) || 1021 if (((printToPDF || !previewModifiable || printWithCloudPrint) &&
1022 !isPrintReadyMetafileReady) ||
910 (previewModifiable && hasPendingPreviewRequest)) { 1023 (previewModifiable && hasPendingPreviewRequest)) {
911 return; 1024 return;
912 } 1025 }
913 1026
914 hasPendingPrintDocumentRequest = false; 1027 hasPendingPrintDocumentRequest = false;
1028 if (printWithCloudPrint) {
1029 chrome.send('printWithCloudPrint');
1030 return;
1031 }
915 1032
916 if (!areSettingsValid()) { 1033 if (!areSettingsValid()) {
917 if (isTabHidden) 1034 if (isTabHidden)
918 cancelPendingPrintRequest(); 1035 cancelPendingPrintRequest();
919 return; 1036 return;
920 } 1037 }
921 sendPrintDocumentRequest(); 1038 sendPrintDocumentRequest();
922 } 1039 }
923 1040
924 /** 1041 /**
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
1017 * 'getInitiatorTabTitle' message. 1134 * 'getInitiatorTabTitle' message.
1018 * @param {string} initiatorTabTitle The title of the initiator tab. 1135 * @param {string} initiatorTabTitle The title of the initiator tab.
1019 */ 1136 */
1020 function setInitiatorTabTitle(initiatorTabTitle) { 1137 function setInitiatorTabTitle(initiatorTabTitle) {
1021 if (initiatorTabTitle == '') 1138 if (initiatorTabTitle == '')
1022 return; 1139 return;
1023 document.title = localStrings.getStringF( 1140 document.title = localStrings.getStringF(
1024 'printPreviewTitleFormat', initiatorTabTitle); 1141 'printPreviewTitleFormat', initiatorTabTitle);
1025 } 1142 }
1026 1143
1144 /**
1145 * Attempt to hide the preview tab and display the Cloud Print
1146 * dialog instead. Just disables controls if we're waiting on a new preview
1147 * to be generated.
1148 */
1149 function printWithCloudPrintDialog() {
1150 if (isPrintReadyMetafileReady) {
1151 chrome.send('printWithCloudPrint');
1152 } else {
1153 showCustomMessage(localStrings.getString('printWithCloudPrintWait'));
1154 disableInputElementsInSidebar();
1155 hasPendingPrintDocumentRequest = true;
1156 }
1157 }
1158
1027 /// Pull in all other scripts in a single shot. 1159 /// Pull in all other scripts in a single shot.
1028 <include src="print_preview_animations.js"/> 1160 <include src="print_preview_animations.js"/>
1029 <include src="print_preview_cloud.js"/> 1161 <include src="print_preview_cloud.js"/>
1030 <include src="print_preview_utils.js"/> 1162 <include src="print_preview_utils.js"/>
1031 <include src="print_header.js"/> 1163 <include src="print_header.js"/>
1032 <include src="page_settings.js"/> 1164 <include src="page_settings.js"/>
1033 <include src="copies_settings.js"/> 1165 <include src="copies_settings.js"/>
1034 <include src="header_footer_settings.js"/> 1166 <include src="header_footer_settings.js"/>
1035 <include src="layout_settings.js"/> 1167 <include src="layout_settings.js"/>
1036 <include src="color_settings.js"/> 1168 <include src="color_settings.js"/>
1037 <include src="margin_settings.js"/> 1169 <include src="margin_settings.js"/>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698