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

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

Issue 10108001: Refactor print preview web ui (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Resolve conflicts Created 8 years, 7 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_cloud.js
diff --git a/chrome/browser/resources/print_preview/print_preview_cloud.js b/chrome/browser/resources/print_preview/print_preview_cloud.js
deleted file mode 100644
index 7c8b7c02aa6f1993e377fa60292fccfe664e09f1..0000000000000000000000000000000000000000
--- a/chrome/browser/resources/print_preview/print_preview_cloud.js
+++ /dev/null
@@ -1,455 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-cr.define('cloudprint', function() {
-
- // The URL to use to access the cloud print servers.
- // Set by a call to setBaseURL.
- var cloudPrintBaseURL = '';
-
- // Headers to set for most cloud print API calls.
- var xCloudPrintURLHeader = {'Content-Type':
- 'application/x-www-form-urlencoded',
- 'X-CloudPrint-Proxy': 'ChromePrintPreview'};
-
- // Headers to set when sending multipart data to cloud print APIs.
- // Currently only used when submitting a job.
- var xCloudPrintFormHeader = {'Content-Type':
- 'multipart/form-data; boundary=----CloudPrintFormBoundaryjc9wuprokl8i',
- 'X-CloudPrint-Proxy': 'ChromePrintPreview'};
-
- // The last received XSRF token. This should be sent with each request
- // to prevent XSRF.
- var lastXSRFToken = '';
-
- /**
- * Sets the base URL to be used for communicating with cloud print
- * servers.
- * @param {string} cloudPrintURL The URL to use.
- */
- function setBaseURL(cloudPrintURL) {
- cloudPrintBaseURL = cloudPrintURL;
- }
-
- /**
- * Gets the base URL to be used for communicating with cloud print
- * servers.
- * @return {string} The URL.
- */
- function getBaseURL() {
- return cloudPrintBaseURL;
- }
-
- /**
- * Extracts the XSRF token from each response to be used in the next
- * request.
- * @param {XMLHttpRequest} xhr The object used to make the request.
- * @return {string} The extracted XSRF token.
- */
- function extractXSRFtoken(xhr) {
- if (xhr.status == 200) {
- var result = JSON.parse(xhr.responseText);
- return result['xsrf_token'];
- } else {
- return null;
- }
- }
-
- /**
- * Makes a request to cloud print servers.
- * @param {string} method The HTTP method to be used.
- * @param {string} action The cloud print API to call.
- * @param {Array} headers Headers to send with the request.
- * @param {string} body Body to be sent with POST requests.
- * @param {function} callback Function to be called to process response.
- * @param {boolean} async True if we want the request made asyncronously.
- */
- function sendCloudPrintRequest(method,
- action,
- headers,
- params,
- body,
- callback) {
- var xhr = new XMLHttpRequest();
- if (callback != null) {
- xhr.onreadystatechange = function() {
- if (xhr.readyState == 4) {
- var updatedXSRFToken = extractXSRFtoken(xhr);
- if (updatedXSRFToken != null) {
- lastXSRFToken = updatedXSRFToken;
- }
- callback.call(this, xhr);
- }
- };
- }
- var url = cloudPrintBaseURL + '/' + action;
- if (params == null) {
- params = new Array;
- }
- if (lastXSRFToken.length != 0) {
- params.push('xsrf=' + lastXSRFToken);
- }
- if (params.length != 0) {
- url = url + '?';
- for (param in params) {
- url = url + params[param] + '&';
- }
- }
- xhr.open(method, url, true);
- xhr.withCredentials = true;
- if (headers) {
- for (var header in headers) {
- if (headers.hasOwnProperty(header)) {
- xhr.setRequestHeader(header, headers[header]);
- }
- }
- }
- xhr.send(body);
- return xhr;
- }
-
- /**
- * Parse the response from the fetchPrinters call.
- * @param {function} callback Function to be called to process response.
- * @param {XMLHttpRequest} xhr The object used to make the request.
- */
- function fetchPrintersResponse(callback, xhr) {
- if (xhr.status == 200) {
- var searchResult = JSON.parse(xhr.responseText);
- if (searchResult['success']) {
- var printerList = searchResult['printers'];
- addCloudPrinters(printerList, callback);
- return;
- }
- }
- addCloudPrinters(null, callback);
- }
-
- /**
- * Retrieve the list of printers available via cloud print.
- * @param {function} callback Function to be called to process response.
- */
- function fetchPrinters(callback, all) {
- var query = 'q=^recent';
- if (all) {
- query = '';
- }
- sendCloudPrintRequest('GET',
- 'search',
- xCloudPrintURLHeader,
- [query],
- null,
- fetchPrintersResponse.bind(this, callback));
- }
-
- /**
- * Handle the response from printing to cloud print.
- * @param {function} callback Function to be called to process response.
- * @param {XMLHttpRequest} xhr The object used to make the request.
- */
- function printToCloudResponse(callback, xhr) {
- if (xhr.status == 200) {
- var printResult = JSON.parse(xhr.responseText);
- if (printResult['success']) {
- callback.call();
- }
- }
- // TODO(abodenha@chromium.org) Catch and handle failures.
- }
-
- /**
- * Send the current document to cloud print.
- * @param {string} data The document to be printed.
- * @param {function} callback Function to be called to process response.
- */
- function printToCloud(data, callback) {
- // TODO(abodenha@chromium.org) Make sure we have an XSRF token before
- // sending a submit. Right now if the user clicks print before we
- // complete any request we wont have an XSRF and the submit will fail.
- sendCloudPrintRequest('POST',
- 'submit',
- xCloudPrintFormHeader,
- null,
- data,
- printToCloudResponse.bind(this, callback));
- }
-
- /**
- * Gets the JSON string used to control the behavior of the current
- * print job.
- * @param {Object} printer The printer object to get the ticket for.
- * @return {string} The print ticket or null if not a cloud printer.
- */
- function getPrintTicketJSON(printer) {
- if (isCloudPrint(printer)) {
- return JSON.stringify({'capabilities':
- [printer.cloudPrintOptions.colorOption]});
- } else {
- return null;
- }
- }
-
- /**
- * Process the response from cloud print containing the capabilities
- * for the printer.
- * @param {function} callback Function to be called to process response.
- * @param {Object} printer The printer object to get the capabilites for.
- * @param {XMLHttpRequest} xhr The object used to make the request.
- */
- function updatePrinterCapsResponse(callback, printer, xhr) {
- if (xhr.status == 200) {
- var printResult = JSON.parse(xhr.responseText);
- if (printResult['success']) {
- if (!printer.cloudPrintOptions)
- printer.cloudPrintOptions = new Object;
- printer.cloudPrintOptions.capsDownloaded = true;
- printer.cloudPrintOptions.colorOption = null;
- printer.cloudPrintOptions.colorIsDefault = false;
- var detailedCapabilities = printResult.printers[0].capabilities;
- for (var capability in detailedCapabilities) {
- var cap = detailedCapabilities[capability];
- if (cap.name == 'ns1:Colors') {
- printer.cloudPrintOptions.colorOption = new Object;
- printer.cloudPrintOptions.colorOption.name = cap.name;
- printer.cloudPrintOptions.colorOption.type = cap.type;
- for (var option in cap.options) {
- var opt = cap.options[option];
- if (opt.name == 'Color') {
- printer.cloudPrintOptions.colorOnOption = opt;
- }
- if (opt.name == 'Grey_K') {
- printer.cloudPrintOptions.colorOffOption = opt;
- }
- if (opt.default) {
- printer.cloudPrintOptions.colorOption.options = [opt];
- printer.cloudPrintOptions.colorIsDefault =
- opt.name == printer.cloudPrintOptions.colorOnOption.name;
- }
- }
- }
- }
- callback.call(this, printer);
- }
- }
- }
-
- /**
- * Retrieve capabilities for a printer.
- * @param {Object} printer The printer object to get the capabilities for.
- * @param {function} callback Function to be called to process response.
- */
- function updatePrinterCaps(printer, callback) {
- if (isCloudPrint(printer) && !printer.cloudPrintOptions.capsDownloaded) {
- sendCloudPrintRequest('GET',
- 'printer?printerid=' +
- printer.value +
- '&output=json',
- xCloudPrintURLHeader,
- null,
- null,
- updatePrinterCapsResponse.bind(this,
- callback,
- printer));
- } else {
- callback.call(this, printer);
- }
- }
-
- /**
- * @param {Object} printer The printer object to get the data for.
- * @return {boolean} true if the printer supports color.
- */
- function supportsColor(printer) {
- return isCloudPrint(printer) &&
- printer.cloudPrintOptions.colorOption != null;
- }
-
- /**
- * @param {Object} printer The printer object to get the data for.
- * @return {boolean} true if the printer defaults to color.
- */
- function colorIsDefault(printer) {
- // For now assume that unsupported color means we just don't know
- // and assume color.
- return !supportsColor(printer) ||
- (isCloudPrint(printer) && printer.cloudPrintOptions.colorIsDefault);
- }
-
- /**
- * Turn color on or off for the specified printer.
- * @param {Object} printer The printer object to turn color on/off for.
- * @param {boolean} color True to turn color on.
- */
- function setColor(printer, color) {
- if (isCloudPrint(printer) && supportsColor(printer)) {
- if (color) {
- printer.cloudPrintOptions.colorOption.options =
- [printer.cloudPrintOptions.colorOnOption];
- } else {
- printer.cloudPrintOptions.colorOption.options =
- [printer.cloudPrintOptions.colorOffOption];
- }
- }
- }
-
- /**
- * Creates a cloud print printer and sets it as the default printer.
- * @param {string} printer_name The name of the printer to create.
- * @param {Object} cloud_print_data Data to be stored in cloudPrintOptions.
- * @param {function} add_callback The callback to be called to add the new
- * printer to the print preview UI.
- * @param {function} update_caps_callback The callback to be called to update
- * capabilities on the new printer.
- */
- function setDefaultPrinter(printer_name,
- cloud_print_data,
- add_callback,
- update_caps_callback) {
- var printer = addCloudPrinters([JSON.parse(cloud_print_data)],
- add_callback);
- if (printer)
- update_caps_callback(printer);
- }
-
- /**
- * Returns the data necessary to serialize a cloud print printer.
- * @param {Object} printer The printer object to get data for.
- * @return {string} A JSON string that can be used to recreate the
- * cloud print portion of the printer object, or and empty string if
- * there is no data to save.
- */
- function getData(printer) {
- if (isCloudPrint(printer)) {
- return JSON.stringify(printer.cloudPrintOptions);
- } else {
- return '';
- }
- }
-
- /**
- * Test if a printer is a cloud print printer.
- * @param {Object} printer The printer to test.
- * @return {boolean} true iff the printer is a cloud print printer.
- */
- function isCloudPrint(printer) {
- return printer && printer.cloudPrintOptions != null;
- }
-
- /**
- * Mark a printer as a cloud print printer and record its name and id.
- * @param {Object} printer The printer to mark.
- * @param {string} name The user visible name of the printer.
- * @param {string} id The id of the printer used by cloud print to
- * identify it.
- */
- function setCloudPrint(printer, name, id) {
- if (!printer.cloudPrintOptions) {
- printer.cloudPrintOptions = new Object;
- }
- printer.cloudPrintOptions.name = name;
- printer.cloudPrintOptions.id = id;
- }
-
- /**
- * 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 |id| has previously been passed to
- * trackCloudPrinterAdded.
- */
- function cloudPrinterAlreadyAdded(id) {
- return addedCloudPrinters[id];
- }
-
- /**
- * Test if a particular printer has already been added to the printers
- * dropdown. Records it if not.
- * @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, addDestinationListOptionAtPosition) {
- 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);
- }
- if (printers != null) {
- for (var i = 0; i < printers.length; i++) {
- if (!cloudPrinterAlreadyAdded(printers[i]['id'])) {
- if (!trackCloudPrinterAdded(printers[i]['id'])) {
- break;
- }
- if (printers[i]['displayName'] && printers[i]['displayName'] != '')
- var name = printers[i]['displayName'];
- else
- var name = printers[i]['name'];
-
- var option = addDestinationListOptionAtPosition(
- lastCloudPrintOptionPos++,
- name,
- printers[i]['id'],
- name == defaultOrLastUsedPrinterName,
- false,
- false);
- cloudprint.setCloudPrint(option,
- name,
- printers[i]['id']);
- }
- }
- } else {
- if (!cloudPrinterAlreadyAdded(SIGN_IN)) {
- addDestinationListOptionAtPosition(lastCloudPrintOptionPos++,
- localStrings.getString('signIn'),
- SIGN_IN,
- false,
- false,
- false);
- trackCloudPrinterAdded(SIGN_IN);
- chrome.send('signIn');
- }
- }
- var selectedPrinter = printerList.selectedIndex;
- if (selectedPrinter < 0)
- return null;
- return printerList.options[selectedPrinter];
- }
-
- return {
- addCloudPrinters: addCloudPrinters,
- colorIsDefault: colorIsDefault,
- fetchPrinters: fetchPrinters,
- getBaseURL: getBaseURL,
- getData: getData,
- getPrintTicketJSON: getPrintTicketJSON,
- isCloudPrint: isCloudPrint,
- printToCloud: printToCloud,
- setBaseURL: setBaseURL,
- setCloudPrint: setCloudPrint,
- setColor: setColor,
- setDefaultPrinter: setDefaultPrinter,
- supportsColor: supportsColor,
- updatePrinterCaps: updatePrinterCaps
- };
-});
« no previous file with comments | « chrome/browser/resources/print_preview/print_preview.js ('k') | chrome/browser/resources/print_preview/print_preview_utils.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698