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

Unified Diff: chrome/browser/resources/print_preview/print_preview.js

Issue 7976017: Simplified print preview printer selection to be more consistent with Chrome (Closed)
Patch Set: Fix whitespace Created 9 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/resources/print_preview/print_preview.js
diff --git a/chrome/browser/resources/print_preview/print_preview.js b/chrome/browser/resources/print_preview/print_preview.js
index 92328501b25f4161eda52ed55175486c6926801d..3d4be808bf5eb5eaf0a99f29f282710a141bd2d0 100644
--- a/chrome/browser/resources/print_preview/print_preview.js
+++ b/chrome/browser/resources/print_preview/print_preview.js
@@ -85,10 +85,6 @@ var currentPreviewUid = '';
// True if we need to generate draft preview data.
var generateDraftData = true;
-// TODO(abodenha@chromium.org) A lot of cloud print specific logic has
-// made its way into this file. Refactor to create a cleaner boundary
-// between print preview and GCP code. Reference bug 88098 when fixing.
-
// A dictionary of cloud printers that have been added to the printer
// dropdown.
var addedCloudPrinters = {};
@@ -223,12 +219,8 @@ function updateControlsWithSelectedPrinterCapabilities() {
var skip_refresh = false;
var selectedValue = printerList.options[selectedIndex].value;
if (cloudprint.isCloudPrint(printerList.options[selectedIndex])) {
- updateWithCloudPrinterCapabilities();
- skip_refresh = true;
- } else if (selectedValue == PRINT_WITH_CLOUD_PRINT) {
- // If a preview is pending this will just disable controls.
- // Once the preview completes we'll try again.
- printWithCloudPrintDialog();
+ cloudprint.updatePrinterCaps(printerList.options[selectedIndex],
+ doUpdateCloudPrinterCapabilities);
skip_refresh = true;
} else if (selectedValue == SIGN_IN ||
selectedValue == MANAGE_CLOUD_PRINTERS ||
@@ -236,7 +228,8 @@ function updateControlsWithSelectedPrinterCapabilities() {
printerList.selectedIndex = lastSelectedPrinterIndex;
chrome.send(selectedValue);
skip_refresh = true;
- } else if (selectedValue == PRINT_TO_PDF) {
+ } else if (selectedValue == PRINT_TO_PDF ||
+ selectedValue == PRINT_WITH_CLOUD_PRINT) {
updateWithPrinterCapabilities({
'disableColorOption': true,
'setColorAsDefault': true,
@@ -258,17 +251,6 @@ function updateControlsWithSelectedPrinterCapabilities() {
}
/**
- * Updates the printer capabilities for the currently selected
- * cloud print printer.
- */
-function updateWithCloudPrinterCapabilities() {
- var printerList = $('printer-list');
- var selectedIndex = printerList.selectedIndex;
- cloudprint.updatePrinterCaps(printerList.options[selectedIndex],
- doUpdateCloudPrinterCapabilities);
-}
-
-/**
* Helper function to do the actual work of updating cloud printer
* capabilities.
* @param {Object} printer The printer object to set capabilities for.
@@ -329,9 +311,11 @@ function finishedCloudPrinting() {
* @return {boolean} true if settings are valid, false if not.
*/
function areSettingsValid() {
+ var selectedPrinter = getSelectedPrinterName();
return pageSettings.isPageSelectionValid() &&
(copiesSettings.isValid() ||
- getSelectedPrinterName() == PRINT_TO_PDF);
+ selectedPrinter == PRINT_TO_PDF ||
+ selectedPrinter == PRINT_WITH_CLOUD_PRINT);
}
/**
@@ -341,7 +325,8 @@ function areSettingsValid() {
*/
function getSettings() {
var deviceName = getSelectedPrinterName();
- var printToPDF = (deviceName == PRINT_TO_PDF);
+ var printToPDF = deviceName == PRINT_TO_PDF;
+ var printWithCloudPrint = deviceName == PRINT_WITH_CLOUD_PRINT;
var settings =
{'deviceName': deviceName,
@@ -352,6 +337,7 @@ function getSettings() {
'landscape': layoutSettings.isLandscape(),
'color': colorSettings.colorMode,
'printToPDF': printToPDF,
+ 'printWithCloudPrint': printWithCloudPrint,
'isFirstRequest' : false,
'headerFooterEnabled': headerFooterSettings.hasHeaderFooter(),
'defaultMarginsSelected': marginSettings.isDefaultMarginsSelected(),
@@ -435,11 +421,15 @@ function getSelectedPrinterName() {
*/
function requestToPrintDocument() {
hasPendingPrintDocumentRequest = !isPrintReadyMetafileReady;
- var printToPDF = getSelectedPrinterName() == PRINT_TO_PDF;
-
+ var selectedPrinterName = getSelectedPrinterName();
+ var printToPDF = selectedPrinterName == PRINT_TO_PDF;
+ var printWithCloudPrint = selectedPrinterName == PRINT_WITH_CLOUD_PRINT;
if (hasPendingPrintDocumentRequest) {
if (printToPDF) {
sendPrintDocumentRequest();
+ } else if (printWithCloudPrint) {
+ showCustomMessage(localStrings.getString('printWithCloudPrintWait'));
+ disableInputElementsInSidebar();
} else {
isTabHidden = true;
chrome.send('hidePreview');
@@ -552,7 +542,7 @@ function setDefaultPrinter(printer_name, cloudPrintData) {
if (cloudPrintData) {
cloudprint.setDefaultPrinter(printer_name,
cloudPrintData,
- addCloudPrinters,
+ addDestinationListOptionAtPosition,
doUpdateCloudPrinterCapabilities);
} else {
$('printer-list')[0].value = defaultOrLastUsedPrinterName;
@@ -598,14 +588,14 @@ function setPrinters(printers) {
}
// Add options to manage printers.
if (!cr.isChromeOS) {
- addDestinationListOption(localStrings.getString('manageLocalPrinters'),
+ addDestinationListOption(localStrings.getString('managePrinters'),
MANAGE_LOCAL_PRINTERS, false, false, false);
} else if (useCloudPrint) {
// Fetch recent printers.
- cloudprint.fetchPrinters(addCloudPrinters, false);
+ cloudprint.fetchPrinters(addDestinationListOptionAtPosition, false);
// Fetch the full printer list.
- cloudprint.fetchPrinters(addCloudPrinters, true);
- addDestinationListOption(localStrings.getString('manageCloudPrinters'),
+ cloudprint.fetchPrinters(addDestinationListOptionAtPosition, true);
+ addDestinationListOption(localStrings.getString('managePrinters'),
MANAGE_CLOUD_PRINTERS, false, false, false);
}
@@ -683,108 +673,6 @@ function addDestinationListOptionAtPosition(position,
printerList.add(option, before);
return option;
}
-
-/**
- * Test if a particular cloud printer has already been added to the
- * printer dropdown.
- * @param {string} id A unique value to track this printer.
- * @return {boolean} True if this id has previously been passed to
- * trackCloudPrinterAdded.
- */
-function cloudPrinterAlreadyAdded(id) {
- return (addedCloudPrinters[id]);
-}
-
-/**
- * Record that a cloud printer will added to the printer dropdown.
- * @param {string} id A unique value to track this printer.
- * @return {boolean} False if adding this printer would exceed
- * |maxCloudPrinters|.
- */
-function trackCloudPrinterAdded(id) {
- if (Object.keys(addedCloudPrinters).length < maxCloudPrinters) {
- addedCloudPrinters[id] = true;
- return true;
- } else {
- return false;
- }
-}
-
-
-/**
- * Add cloud printers to the list drop down.
- * Called from the cloudprint object on receipt of printer information from the
- * cloud print server.
- * @param {Array} printers Array of printer info objects.
- * @return {Object} The currently selected printer.
- */
-function addCloudPrinters(printers) {
- var isFirstPass = false;
- var printerList = $('printer-list');
-
- if (firstCloudPrintOptionPos == lastCloudPrintOptionPos) {
- isFirstPass = true;
- // Remove empty entry added by setDefaultPrinter.
- if (printerList[0] && printerList[0].textContent == '')
- printerList.remove(0);
- var option = addDestinationListOptionAtPosition(
- lastCloudPrintOptionPos++,
- localStrings.getString('cloudPrinters'),
- 'Label',
- false,
- true,
- false);
- cloudprint.setCloudPrint(option, null, null);
- }
- if (printers != null) {
- for (var i = 0; i < printers.length; i++) {
- if (!cloudPrinterAlreadyAdded(printers[i]['id'])) {
- if (!trackCloudPrinterAdded(printers[i]['id'])) {
- break;
- }
- var option = addDestinationListOptionAtPosition(
- lastCloudPrintOptionPos++,
- printers[i]['name'],
- printers[i]['id'],
- printers[i]['name'] == defaultOrLastUsedPrinterName,
- false,
- false);
- cloudprint.setCloudPrint(option,
- printers[i]['name'],
- printers[i]['id']);
- }
- }
- } else {
- if (!cloudPrinterAlreadyAdded(SIGN_IN)) {
- addDestinationListOptionAtPosition(lastCloudPrintOptionPos++,
- localStrings.getString('signIn'),
- SIGN_IN,
- false,
- false,
- false);
- trackCloudPrinterAdded(SIGN_IN);
- }
- }
- if (isFirstPass) {
- addDestinationListOptionAtPosition(lastCloudPrintOptionPos,
- '',
- '',
- false,
- true,
- true);
- addDestinationListOptionAtPosition(lastCloudPrintOptionPos + 1,
- localStrings.getString('localPrinters'),
- '',
- false,
- true,
- false);
- }
- var selectedPrinter = printerList.selectedIndex;
- if (selectedPrinter < 0)
- return null;
- return printerList.options[selectedPrinter];
-}
-
/**
* Sets the color mode for the PDF plugin.
* Called from PrintPreviewHandler::ProcessColorSetting().
@@ -909,9 +797,9 @@ function onDidGetDefaultPageLayout(pageLayout) {
*/
function checkAndHideOverlayLayerIfValid() {
var selectedPrinter = getSelectedPrinterName();
- var printToPDF = selectedPrinter == PRINT_TO_PDF;
- var printWithCloudPrint = selectedPrinter == PRINT_WITH_CLOUD_PRINT;
- if ((printToPDF || printWithCloudPrint || !previewModifiable) &&
+ var printToDialog = selectedPrinter == PRINT_TO_PDF ||
+ selectedPrinter == PRINT_WITH_CLOUD_PRINT;
+ if ((printToDialog || !previewModifiable) &&
!isPrintReadyMetafileReady && hasPendingPrintDocumentRequest) {
return;
}
@@ -1016,19 +904,14 @@ function sendPrintDocumentRequestIfNeeded() {
// printing. If the preview source is modifiable, we need to wait till all
// the requested pages are loaded in the plugin for printing.
var selectedPrinter = getSelectedPrinterName();
- var printToPDF = selectedPrinter == PRINT_TO_PDF;
- var printWithCloudPrint = selectedPrinter == PRINT_WITH_CLOUD_PRINT;
- if (((printToPDF || !previewModifiable || printWithCloudPrint) &&
- !isPrintReadyMetafileReady) ||
+ var printToDialog = selectedPrinter == PRINT_TO_PDF ||
+ selectedPrinter == PRINT_WITH_CLOUD_PRINT;
+ if (((printToDialog || !previewModifiable) && !isPrintReadyMetafileReady) ||
(previewModifiable && hasPendingPreviewRequest)) {
return;
}
hasPendingPrintDocumentRequest = false;
- if (printWithCloudPrint) {
- chrome.send('printWithCloudPrint');
- return;
- }
if (!areSettingsValid()) {
if (isTabHidden)
@@ -1141,21 +1024,6 @@ function setInitiatorTabTitle(initiatorTabTitle) {
'printPreviewTitleFormat', initiatorTabTitle);
}
-/**
- * Attempt to hide the preview tab and display the Cloud Print
- * dialog instead. Just disables controls if we're waiting on a new preview
- * to be generated.
- */
-function printWithCloudPrintDialog() {
- if (isPrintReadyMetafileReady) {
- chrome.send('printWithCloudPrint');
- } else {
- showCustomMessage(localStrings.getString('printWithCloudPrintWait'));
- disableInputElementsInSidebar();
- hasPendingPrintDocumentRequest = true;
- }
-}
-
/// Pull in all other scripts in a single shot.
<include src="print_preview_animations.js"/>
<include src="print_preview_cloud.js"/>

Powered by Google App Engine
This is Rietveld 408576698