Index: chrome/browser/ui/webui/print_preview/print_preview_data_source.cc |
diff --git a/chrome/browser/ui/webui/print_preview/print_preview_data_source.cc b/chrome/browser/ui/webui/print_preview/print_preview_data_source.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c74bc63f78afc67d4ca5ede15e3fda63f79e4158 |
--- /dev/null |
+++ b/chrome/browser/ui/webui/print_preview/print_preview_data_source.cc |
@@ -0,0 +1,227 @@ |
+// 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. |
+ |
+#include "chrome/browser/ui/webui/print_preview/print_preview_data_source.h" |
+ |
+#include <algorithm> |
+#include <vector> |
+ |
+#include "base/memory/ref_counted_memory.h" |
+#include "base/message_loop.h" |
+#include "base/string_number_conversions.h" |
+#include "base/string_piece.h" |
+#include "base/string_split.h" |
+#include "base/string_util.h" |
+#include "base/utf_string_conversions.h" |
+#include "base/values.h" |
+#include "chrome/browser/printing/print_preview_data_service.h" |
+#include "chrome/common/url_constants.h" |
+#include "grit/browser_resources.h" |
+#include "grit/chromium_strings.h" |
+#include "grit/generated_resources.h" |
+#include "grit/google_chrome_strings.h" |
+#include "ui/base/l10n/l10n_util.h" |
+ |
+namespace { |
+ |
+#if defined(OS_MACOSX) |
+// U+0028 U+21E7 U+2318 U+0050 U+0029 in UTF8 |
+const char kAdvancedPrintShortcut[] = "\x28\xE2\x8c\xA5\xE2\x8C\x98\x50\x29"; |
+#elif defined(OS_WIN) |
+const char kAdvancedPrintShortcut[] = "(Ctrl+Shift+P)"; |
+#else |
+const char kAdvancedPrintShortcut[] = "(Shift+Ctrl+P)"; |
+#endif |
+ |
+}; // namespace |
+ |
+PrintPreviewDataSource::PrintPreviewDataSource() |
+ : ChromeWebUIDataSource(chrome::kChromeUIPrintHost) { |
+ Init(); |
+} |
+ |
+void PrintPreviewDataSource::Init() { |
+#if defined(OS_CHROMEOS) |
+ AddLocalizedString("title", IDS_PRINT_PREVIEW_GOOGLE_CLOUD_PRINT_TITLE); |
+#else |
+ AddLocalizedString("title", IDS_PRINT_PREVIEW_TITLE); |
+#endif |
+ AddLocalizedString("loading", IDS_PRINT_PREVIEW_LOADING); |
+ AddLocalizedString("noPlugin", IDS_PRINT_PREVIEW_NO_PLUGIN); |
+ AddLocalizedString("launchNativeDialog", IDS_PRINT_PREVIEW_NATIVE_DIALOG); |
+ AddLocalizedString("previewFailed", IDS_PRINT_PREVIEW_FAILED); |
+ AddLocalizedString("invalidPrinterSettings", |
+ IDS_PRINT_PREVIEW_INVALID_PRINTER_SETTINGS); |
+ AddLocalizedString("printButton", IDS_PRINT_PREVIEW_PRINT_BUTTON); |
+ AddLocalizedString("saveButton", IDS_PRINT_PREVIEW_SAVE_BUTTON); |
+ AddLocalizedString("cancelButton", IDS_PRINT_PREVIEW_CANCEL_BUTTON); |
+ AddLocalizedString("printing", IDS_PRINT_PREVIEW_PRINTING); |
+ AddLocalizedString("printingToPDFInProgress", |
+ IDS_PRINT_PREVIEW_PRINTING_TO_PDF_IN_PROGRESS); |
+#if defined(OS_MACOSX) |
+ AddLocalizedString("openingPDFInPreview", |
+ IDS_PRINT_PREVIEW_OPENING_PDF_IN_PREVIEW); |
+#endif |
+ AddLocalizedString("destinationLabel", IDS_PRINT_PREVIEW_DESTINATION_LABEL); |
+ AddLocalizedString("copiesLabel", IDS_PRINT_PREVIEW_COPIES_LABEL); |
+ AddLocalizedString("examplePageRangeText", |
+ IDS_PRINT_PREVIEW_EXAMPLE_PAGE_RANGE_TEXT); |
+ AddLocalizedString("layoutLabel", IDS_PRINT_PREVIEW_LAYOUT_LABEL); |
+ AddLocalizedString("optionAllPages", IDS_PRINT_PREVIEW_OPTION_ALL_PAGES); |
+ AddLocalizedString("optionBw", IDS_PRINT_PREVIEW_OPTION_BW); |
+ AddLocalizedString("optionCollate", IDS_PRINT_PREVIEW_OPTION_COLLATE); |
+ AddLocalizedString("optionColor", IDS_PRINT_PREVIEW_OPTION_COLOR); |
+ AddLocalizedString("optionLandscape", IDS_PRINT_PREVIEW_OPTION_LANDSCAPE); |
+ AddLocalizedString("optionPortrait", IDS_PRINT_PREVIEW_OPTION_PORTRAIT); |
+ AddLocalizedString("optionTwoSided", IDS_PRINT_PREVIEW_OPTION_TWO_SIDED); |
+ AddLocalizedString("pagesLabel", IDS_PRINT_PREVIEW_PAGES_LABEL); |
+ AddLocalizedString("pageRangeTextBox", IDS_PRINT_PREVIEW_PAGE_RANGE_TEXT); |
+ AddLocalizedString("pageRangeRadio", IDS_PRINT_PREVIEW_PAGE_RANGE_RADIO); |
+ AddLocalizedString("printToPDF", IDS_PRINT_PREVIEW_PRINT_TO_PDF); |
+ AddLocalizedString("printPreviewSummaryFormatShort", |
+ IDS_PRINT_PREVIEW_SUMMARY_FORMAT_SHORT); |
+ AddLocalizedString("printPreviewSummaryFormatLong", |
+ IDS_PRINT_PREVIEW_SUMMARY_FORMAT_LONG); |
+ AddLocalizedString("printPreviewSheetsLabelSingular", |
+ IDS_PRINT_PREVIEW_SHEETS_LABEL_SINGULAR); |
+ AddLocalizedString("printPreviewSheetsLabelPlural", |
+ IDS_PRINT_PREVIEW_SHEETS_LABEL_PLURAL); |
+ AddLocalizedString("printPreviewPageLabelSingular", |
+ IDS_PRINT_PREVIEW_PAGE_LABEL_SINGULAR); |
+ AddLocalizedString("printPreviewPageLabelPlural", |
+ IDS_PRINT_PREVIEW_PAGE_LABEL_PLURAL); |
+ const string16 shortcut_text(UTF8ToUTF16(kAdvancedPrintShortcut)); |
+#if defined(OS_CHROMEOS) |
+ AddString("systemDialogOption", l10n_util::GetStringFUTF16( |
+ IDS_PRINT_PREVIEW_CLOUD_DIALOG_OPTION, |
+ l10n_util::GetStringUTF16(IDS_GOOGLE_CLOUD_PRINT), |
+ shortcut_text)); |
+#else |
+ AddString("systemDialogOption", l10n_util::GetStringFUTF16( |
+ IDS_PRINT_PREVIEW_SYSTEM_DIALOG_OPTION, |
+ shortcut_text)); |
+#endif |
+ AddString("cloudPrintDialogOption", |
+ l10n_util::GetStringFUTF16( |
+ IDS_PRINT_PREVIEW_CLOUD_DIALOG_OPTION_NO_SHORTCUT, |
+ l10n_util::GetStringUTF16(IDS_GOOGLE_CLOUD_PRINT))); |
+#if defined(OS_MACOSX) |
+ AddLocalizedString("openPdfInPreviewOption", |
+ IDS_PRINT_PREVIEW_OPEN_PDF_IN_PREVIEW_APP); |
+#endif |
+ AddString("printWithCloudPrintWait", l10n_util::GetStringFUTF16( |
+ IDS_PRINT_PREVIEW_PRINT_WITH_CLOUD_PRINT_WAIT, |
+ l10n_util::GetStringUTF16(IDS_GOOGLE_CLOUD_PRINT))); |
+ AddLocalizedString("pageRangeInstruction", |
+ IDS_PRINT_PREVIEW_PAGE_RANGE_INSTRUCTION); |
+ AddLocalizedString("copiesInstruction", IDS_PRINT_PREVIEW_COPIES_INSTRUCTION); |
+ AddLocalizedString("incrementTitle", IDS_PRINT_PREVIEW_INCREMENT_TITLE); |
+ AddLocalizedString("decrementTitle", IDS_PRINT_PREVIEW_DECREMENT_TITLE); |
+ AddLocalizedString("printPagesLabel", IDS_PRINT_PREVIEW_PRINT_PAGES_LABEL); |
+ AddLocalizedString("optionsLabel", IDS_PRINT_PREVIEW_OPTIONS_LABEL); |
+ AddLocalizedString("optionHeaderFooter", |
+ IDS_PRINT_PREVIEW_OPTION_HEADER_FOOTER); |
+ AddLocalizedString("optionFitToPage", |
+ IDS_PRINT_PREVIEW_OPTION_FIT_TO_PAGE); |
+ AddLocalizedString("optionBackgroundColorsAndImages", |
+ IDS_PRINT_PREVIEW_OPTION_BACKGROUND_COLORS_AND_IMAGES); |
+ AddLocalizedString("marginsLabel", IDS_PRINT_PREVIEW_MARGINS_LABEL); |
+ AddLocalizedString("defaultMargins", IDS_PRINT_PREVIEW_DEFAULT_MARGINS); |
+ AddLocalizedString("noMargins", IDS_PRINT_PREVIEW_NO_MARGINS); |
+ AddLocalizedString("customMargins", IDS_PRINT_PREVIEW_CUSTOM_MARGINS); |
+ AddLocalizedString("minimumMargins", IDS_PRINT_PREVIEW_MINIMUM_MARGINS); |
+ AddLocalizedString("top", IDS_PRINT_PREVIEW_TOP_MARGIN_LABEL); |
+ AddLocalizedString("bottom", IDS_PRINT_PREVIEW_BOTTOM_MARGIN_LABEL); |
+ AddLocalizedString("left", IDS_PRINT_PREVIEW_LEFT_MARGIN_LABEL); |
+ AddLocalizedString("right", IDS_PRINT_PREVIEW_RIGHT_MARGIN_LABEL); |
+ AddLocalizedString("destinationSearchTitle", |
+ IDS_PRINT_PREVIEW_DESTINATION_SEARCH_TITLE); |
+ AddLocalizedString("userInfo", IDS_PRINT_PREVIEW_USER_INFO); |
+ AddLocalizedString("cloudPrintPromotion", |
+ IDS_PRINT_PREVIEW_CLOUD_PRINT_PROMOTION); |
+ AddLocalizedString("searchBoxPlaceholder", |
+ IDS_PRINT_PREVIEW_SEARCH_BOX_PLACEHOLDER); |
+ AddLocalizedString("noDestinationsMessage", |
+ IDS_PRINT_PREVIEW_NO_DESTINATIONS_MESSAGE); |
+ AddLocalizedString("showAllButtonText", |
+ IDS_PRINT_PREVIEW_SHOW_ALL_BUTTON_TEXT); |
+ AddLocalizedString("destinationCount", IDS_PRINT_PREVIEW_DESTINATION_COUNT); |
+ AddLocalizedString("recentDestinationsTitle", |
+ IDS_PRINT_PREVIEW_RECENT_DESTINATIONS_TITLE); |
+ AddLocalizedString("localDestinationsTitle", |
+ IDS_PRINT_PREVIEW_LOCAL_DESTINATIONS_TITLE); |
+ AddLocalizedString("cloudDestinationsTitle", |
+ IDS_PRINT_PREVIEW_CLOUD_DESTINATIONS_TITLE); |
+ AddLocalizedString("manage", IDS_PRINT_PREVIEW_MANAGE); |
+ AddLocalizedString("setupCloudPrinters", |
+ IDS_PRINT_PREVIEW_SETUP_CLOUD_PRINTERS); |
+ AddLocalizedString("changeDestination", |
+ IDS_PRINT_PREVIEW_CHANGE_DESTINATION); |
+ AddLocalizedString("offlineForYear", IDS_PRINT_PREVIEW_OFFLINE_FOR_YEAR); |
+ AddLocalizedString("offlineForMonth", IDS_PRINT_PREVIEW_OFFLINE_FOR_MONTH); |
+ AddLocalizedString("offlineForWeek", IDS_PRINT_PREVIEW_OFFLINE_FOR_WEEK); |
+ AddLocalizedString("offline", IDS_PRINT_PREVIEW_OFFLINE); |
+ AddLocalizedString("fedexTos", IDS_PRINT_PREVIEW_FEDEX_TOS); |
+ AddLocalizedString("tosCheckboxLabel", IDS_PRINT_PREVIEW_TOS_CHECKBOX_LABEL); |
+ AddLocalizedString("noDestsPromoTitle", |
+ IDS_PRINT_PREVIEW_NO_DESTS_PROMO_TITLE); |
+ AddLocalizedString("noDestsPromoBody", IDS_PRINT_PREVIEW_NO_DESTS_PROMO_BODY); |
+ AddLocalizedString("noDestsPromoGcpDesc", |
+ IDS_PRINT_PREVIEW_NO_DESTS_GCP_DESC); |
+ AddLocalizedString("noDestsPromoAddPrinterButtonLabel", |
+ IDS_PRINT_PREVIEW_NO_DESTS_PROMO_ADD_PRINTER_BUTTON_LABEL); |
+ AddLocalizedString("noDestsPromoNotNowButtonLabel", |
+ IDS_PRINT_PREVIEW_NO_DESTS_PROMO_NOT_NOW_BUTTON_LABEL); |
+ |
+ set_json_path("strings.js"); |
+ add_resource_path("print_preview.js", IDR_PRINT_PREVIEW_JS); |
+ add_resource_path("images/printer.png", IDR_PRINT_PREVIEW_IMAGES_PRINTER); |
+ add_resource_path("images/printer_shared.png", |
+ IDR_PRINT_PREVIEW_IMAGES_PRINTER_SHARED); |
+ add_resource_path("images/third_party.png", |
+ IDR_PRINT_PREVIEW_IMAGES_THIRD_PARTY); |
+ add_resource_path("images/third_party_fedex.png", |
+ IDR_PRINT_PREVIEW_IMAGES_THIRD_PARTY_FEDEX); |
+ add_resource_path("images/google_doc.png", |
+ IDR_PRINT_PREVIEW_IMAGES_GOOGLE_DOC); |
+ add_resource_path("images/pdf.png", IDR_PRINT_PREVIEW_IMAGES_PDF); |
+ add_resource_path("images/mobile.png", IDR_PRINT_PREVIEW_IMAGES_MOBILE); |
+ add_resource_path("images/mobile_shared.png", |
+ IDR_PRINT_PREVIEW_IMAGES_MOBILE_SHARED); |
+ set_default_resource(IDR_PRINT_PREVIEW_HTML); |
+} |
+ |
+PrintPreviewDataSource::~PrintPreviewDataSource() { |
+} |
+ |
+void PrintPreviewDataSource::StartDataRequest(const std::string& path, |
+ bool is_incognito, |
+ int request_id) { |
+ // Parent class handles most requests except for the print preview data. |
+ if (!EndsWith(path, "/print.pdf", true)) { |
+ ChromeWebUIDataSource::StartDataRequest(path, is_incognito, request_id); |
+ return; |
+ } |
+ |
+ // Print Preview data. |
+ scoped_refptr<base::RefCountedBytes> data; |
+ std::vector<std::string> url_substr; |
+ base::SplitString(path, '/', &url_substr); |
+ int preview_ui_id = -1; |
+ int page_index = 0; |
+ if (url_substr.size() == 3 && |
+ base::StringToInt(url_substr[0], &preview_ui_id), |
+ base::StringToInt(url_substr[1], &page_index) && |
+ preview_ui_id >= 0) { |
+ PrintPreviewDataService::GetInstance()->GetDataEntry( |
+ preview_ui_id, page_index, &data); |
+ } |
+ if (data.get()) { |
+ SendResponse(request_id, data); |
+ return; |
+ } |
+ // Invalid request. |
+ scoped_refptr<base::RefCountedBytes> empty_bytes(new base::RefCountedBytes); |
+ SendResponse(request_id, empty_bytes); |
+} |