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

Side by Side Diff: chrome/browser/ui/webui/print_preview/print_preview_data_source.cc

Issue 11818062: Adds option to enable CSS backgrounds for printing. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Merge with trunk. Created 7 years, 11 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "chrome/browser/ui/webui/print_preview/print_preview_data_source.h"
6
7 #include <algorithm>
8 #include <vector>
9
10 #include "base/memory/ref_counted_memory.h"
11 #include "base/message_loop.h"
12 #include "base/string_number_conversions.h"
13 #include "base/string_piece.h"
14 #include "base/string_split.h"
15 #include "base/string_util.h"
16 #include "base/utf_string_conversions.h"
17 #include "base/values.h"
18 #include "chrome/browser/printing/print_preview_data_service.h"
19 #include "chrome/common/url_constants.h"
20 #include "grit/browser_resources.h"
21 #include "grit/chromium_strings.h"
22 #include "grit/generated_resources.h"
23 #include "grit/google_chrome_strings.h"
24 #include "ui/base/l10n/l10n_util.h"
25
26 namespace {
27
28 #if defined(OS_MACOSX)
29 // U+0028 U+21E7 U+2318 U+0050 U+0029 in UTF8
30 const char kAdvancedPrintShortcut[] = "\x28\xE2\x8c\xA5\xE2\x8C\x98\x50\x29";
31 #elif defined(OS_WIN)
32 const char kAdvancedPrintShortcut[] = "(Ctrl+Shift+P)";
33 #else
34 const char kAdvancedPrintShortcut[] = "(Shift+Ctrl+P)";
35 #endif
36
37 }; // namespace
38
39 PrintPreviewDataSource::PrintPreviewDataSource()
40 : ChromeWebUIDataSource(chrome::kChromeUIPrintHost) {
41 Init();
42 }
43
44 void PrintPreviewDataSource::Init() {
45 #if defined(OS_CHROMEOS)
46 AddLocalizedString("title", IDS_PRINT_PREVIEW_GOOGLE_CLOUD_PRINT_TITLE);
47 #else
48 AddLocalizedString("title", IDS_PRINT_PREVIEW_TITLE);
49 #endif
50 AddLocalizedString("loading", IDS_PRINT_PREVIEW_LOADING);
51 AddLocalizedString("noPlugin", IDS_PRINT_PREVIEW_NO_PLUGIN);
52 AddLocalizedString("launchNativeDialog", IDS_PRINT_PREVIEW_NATIVE_DIALOG);
53 AddLocalizedString("previewFailed", IDS_PRINT_PREVIEW_FAILED);
54 AddLocalizedString("invalidPrinterSettings",
55 IDS_PRINT_PREVIEW_INVALID_PRINTER_SETTINGS);
56 AddLocalizedString("printButton", IDS_PRINT_PREVIEW_PRINT_BUTTON);
57 AddLocalizedString("saveButton", IDS_PRINT_PREVIEW_SAVE_BUTTON);
58 AddLocalizedString("cancelButton", IDS_PRINT_PREVIEW_CANCEL_BUTTON);
59 AddLocalizedString("printing", IDS_PRINT_PREVIEW_PRINTING);
60 AddLocalizedString("printingToPDFInProgress",
61 IDS_PRINT_PREVIEW_PRINTING_TO_PDF_IN_PROGRESS);
62 #if defined(OS_MACOSX)
63 AddLocalizedString("openingPDFInPreview",
64 IDS_PRINT_PREVIEW_OPENING_PDF_IN_PREVIEW);
65 #endif
66 AddLocalizedString("destinationLabel", IDS_PRINT_PREVIEW_DESTINATION_LABEL);
67 AddLocalizedString("copiesLabel", IDS_PRINT_PREVIEW_COPIES_LABEL);
68 AddLocalizedString("examplePageRangeText",
69 IDS_PRINT_PREVIEW_EXAMPLE_PAGE_RANGE_TEXT);
70 AddLocalizedString("layoutLabel", IDS_PRINT_PREVIEW_LAYOUT_LABEL);
71 AddLocalizedString("optionAllPages", IDS_PRINT_PREVIEW_OPTION_ALL_PAGES);
72 AddLocalizedString("optionBw", IDS_PRINT_PREVIEW_OPTION_BW);
73 AddLocalizedString("optionCollate", IDS_PRINT_PREVIEW_OPTION_COLLATE);
74 AddLocalizedString("optionColor", IDS_PRINT_PREVIEW_OPTION_COLOR);
75 AddLocalizedString("optionLandscape", IDS_PRINT_PREVIEW_OPTION_LANDSCAPE);
76 AddLocalizedString("optionPortrait", IDS_PRINT_PREVIEW_OPTION_PORTRAIT);
77 AddLocalizedString("optionTwoSided", IDS_PRINT_PREVIEW_OPTION_TWO_SIDED);
78 AddLocalizedString("pagesLabel", IDS_PRINT_PREVIEW_PAGES_LABEL);
79 AddLocalizedString("pageRangeTextBox", IDS_PRINT_PREVIEW_PAGE_RANGE_TEXT);
80 AddLocalizedString("pageRangeRadio", IDS_PRINT_PREVIEW_PAGE_RANGE_RADIO);
81 AddLocalizedString("printToPDF", IDS_PRINT_PREVIEW_PRINT_TO_PDF);
82 AddLocalizedString("printPreviewSummaryFormatShort",
83 IDS_PRINT_PREVIEW_SUMMARY_FORMAT_SHORT);
84 AddLocalizedString("printPreviewSummaryFormatLong",
85 IDS_PRINT_PREVIEW_SUMMARY_FORMAT_LONG);
86 AddLocalizedString("printPreviewSheetsLabelSingular",
87 IDS_PRINT_PREVIEW_SHEETS_LABEL_SINGULAR);
88 AddLocalizedString("printPreviewSheetsLabelPlural",
89 IDS_PRINT_PREVIEW_SHEETS_LABEL_PLURAL);
90 AddLocalizedString("printPreviewPageLabelSingular",
91 IDS_PRINT_PREVIEW_PAGE_LABEL_SINGULAR);
92 AddLocalizedString("printPreviewPageLabelPlural",
93 IDS_PRINT_PREVIEW_PAGE_LABEL_PLURAL);
94 const string16 shortcut_text(UTF8ToUTF16(kAdvancedPrintShortcut));
95 #if defined(OS_CHROMEOS)
96 AddString("systemDialogOption", l10n_util::GetStringFUTF16(
97 IDS_PRINT_PREVIEW_CLOUD_DIALOG_OPTION,
98 l10n_util::GetStringUTF16(IDS_GOOGLE_CLOUD_PRINT),
99 shortcut_text));
100 #else
101 AddString("systemDialogOption", l10n_util::GetStringFUTF16(
102 IDS_PRINT_PREVIEW_SYSTEM_DIALOG_OPTION,
103 shortcut_text));
104 #endif
105 AddString("cloudPrintDialogOption",
106 l10n_util::GetStringFUTF16(
107 IDS_PRINT_PREVIEW_CLOUD_DIALOG_OPTION_NO_SHORTCUT,
108 l10n_util::GetStringUTF16(IDS_GOOGLE_CLOUD_PRINT)));
109 #if defined(OS_MACOSX)
110 AddLocalizedString("openPdfInPreviewOption",
111 IDS_PRINT_PREVIEW_OPEN_PDF_IN_PREVIEW_APP);
112 #endif
113 AddString("printWithCloudPrintWait", l10n_util::GetStringFUTF16(
114 IDS_PRINT_PREVIEW_PRINT_WITH_CLOUD_PRINT_WAIT,
115 l10n_util::GetStringUTF16(IDS_GOOGLE_CLOUD_PRINT)));
116 AddLocalizedString("pageRangeInstruction",
117 IDS_PRINT_PREVIEW_PAGE_RANGE_INSTRUCTION);
118 AddLocalizedString("copiesInstruction", IDS_PRINT_PREVIEW_COPIES_INSTRUCTION);
119 AddLocalizedString("incrementTitle", IDS_PRINT_PREVIEW_INCREMENT_TITLE);
120 AddLocalizedString("decrementTitle", IDS_PRINT_PREVIEW_DECREMENT_TITLE);
121 AddLocalizedString("printPagesLabel", IDS_PRINT_PREVIEW_PRINT_PAGES_LABEL);
122 AddLocalizedString("optionsLabel", IDS_PRINT_PREVIEW_OPTIONS_LABEL);
123 AddLocalizedString("optionHeaderFooter",
124 IDS_PRINT_PREVIEW_OPTION_HEADER_FOOTER);
125 AddLocalizedString("optionFitToPage",
126 IDS_PRINT_PREVIEW_OPTION_FIT_TO_PAGE);
127 AddLocalizedString("optionBackgroundColorsAndImages",
128 IDS_PRINT_PREVIEW_OPTION_BACKGROUND_COLORS_AND_IMAGES);
129 AddLocalizedString("marginsLabel", IDS_PRINT_PREVIEW_MARGINS_LABEL);
130 AddLocalizedString("defaultMargins", IDS_PRINT_PREVIEW_DEFAULT_MARGINS);
131 AddLocalizedString("noMargins", IDS_PRINT_PREVIEW_NO_MARGINS);
132 AddLocalizedString("customMargins", IDS_PRINT_PREVIEW_CUSTOM_MARGINS);
133 AddLocalizedString("minimumMargins", IDS_PRINT_PREVIEW_MINIMUM_MARGINS);
134 AddLocalizedString("top", IDS_PRINT_PREVIEW_TOP_MARGIN_LABEL);
135 AddLocalizedString("bottom", IDS_PRINT_PREVIEW_BOTTOM_MARGIN_LABEL);
136 AddLocalizedString("left", IDS_PRINT_PREVIEW_LEFT_MARGIN_LABEL);
137 AddLocalizedString("right", IDS_PRINT_PREVIEW_RIGHT_MARGIN_LABEL);
138 AddLocalizedString("destinationSearchTitle",
139 IDS_PRINT_PREVIEW_DESTINATION_SEARCH_TITLE);
140 AddLocalizedString("userInfo", IDS_PRINT_PREVIEW_USER_INFO);
141 AddLocalizedString("cloudPrintPromotion",
142 IDS_PRINT_PREVIEW_CLOUD_PRINT_PROMOTION);
143 AddLocalizedString("searchBoxPlaceholder",
144 IDS_PRINT_PREVIEW_SEARCH_BOX_PLACEHOLDER);
145 AddLocalizedString("noDestinationsMessage",
146 IDS_PRINT_PREVIEW_NO_DESTINATIONS_MESSAGE);
147 AddLocalizedString("showAllButtonText",
148 IDS_PRINT_PREVIEW_SHOW_ALL_BUTTON_TEXT);
149 AddLocalizedString("destinationCount", IDS_PRINT_PREVIEW_DESTINATION_COUNT);
150 AddLocalizedString("recentDestinationsTitle",
151 IDS_PRINT_PREVIEW_RECENT_DESTINATIONS_TITLE);
152 AddLocalizedString("localDestinationsTitle",
153 IDS_PRINT_PREVIEW_LOCAL_DESTINATIONS_TITLE);
154 AddLocalizedString("cloudDestinationsTitle",
155 IDS_PRINT_PREVIEW_CLOUD_DESTINATIONS_TITLE);
156 AddLocalizedString("manage", IDS_PRINT_PREVIEW_MANAGE);
157 AddLocalizedString("setupCloudPrinters",
158 IDS_PRINT_PREVIEW_SETUP_CLOUD_PRINTERS);
159 AddLocalizedString("changeDestination",
160 IDS_PRINT_PREVIEW_CHANGE_DESTINATION);
161 AddLocalizedString("offlineForYear", IDS_PRINT_PREVIEW_OFFLINE_FOR_YEAR);
162 AddLocalizedString("offlineForMonth", IDS_PRINT_PREVIEW_OFFLINE_FOR_MONTH);
163 AddLocalizedString("offlineForWeek", IDS_PRINT_PREVIEW_OFFLINE_FOR_WEEK);
164 AddLocalizedString("offline", IDS_PRINT_PREVIEW_OFFLINE);
165 AddLocalizedString("fedexTos", IDS_PRINT_PREVIEW_FEDEX_TOS);
166 AddLocalizedString("tosCheckboxLabel", IDS_PRINT_PREVIEW_TOS_CHECKBOX_LABEL);
167 AddLocalizedString("noDestsPromoTitle",
168 IDS_PRINT_PREVIEW_NO_DESTS_PROMO_TITLE);
169 AddLocalizedString("noDestsPromoBody", IDS_PRINT_PREVIEW_NO_DESTS_PROMO_BODY);
170 AddLocalizedString("noDestsPromoGcpDesc",
171 IDS_PRINT_PREVIEW_NO_DESTS_GCP_DESC);
172 AddLocalizedString("noDestsPromoAddPrinterButtonLabel",
173 IDS_PRINT_PREVIEW_NO_DESTS_PROMO_ADD_PRINTER_BUTTON_LABEL);
174 AddLocalizedString("noDestsPromoNotNowButtonLabel",
175 IDS_PRINT_PREVIEW_NO_DESTS_PROMO_NOT_NOW_BUTTON_LABEL);
176
177 set_json_path("strings.js");
178 add_resource_path("print_preview.js", IDR_PRINT_PREVIEW_JS);
179 add_resource_path("images/printer.png", IDR_PRINT_PREVIEW_IMAGES_PRINTER);
180 add_resource_path("images/printer_shared.png",
181 IDR_PRINT_PREVIEW_IMAGES_PRINTER_SHARED);
182 add_resource_path("images/third_party.png",
183 IDR_PRINT_PREVIEW_IMAGES_THIRD_PARTY);
184 add_resource_path("images/third_party_fedex.png",
185 IDR_PRINT_PREVIEW_IMAGES_THIRD_PARTY_FEDEX);
186 add_resource_path("images/google_doc.png",
187 IDR_PRINT_PREVIEW_IMAGES_GOOGLE_DOC);
188 add_resource_path("images/pdf.png", IDR_PRINT_PREVIEW_IMAGES_PDF);
189 add_resource_path("images/mobile.png", IDR_PRINT_PREVIEW_IMAGES_MOBILE);
190 add_resource_path("images/mobile_shared.png",
191 IDR_PRINT_PREVIEW_IMAGES_MOBILE_SHARED);
192 set_default_resource(IDR_PRINT_PREVIEW_HTML);
193 }
194
195 PrintPreviewDataSource::~PrintPreviewDataSource() {
196 }
197
198 void PrintPreviewDataSource::StartDataRequest(const std::string& path,
199 bool is_incognito,
200 int request_id) {
201 // Parent class handles most requests except for the print preview data.
202 if (!EndsWith(path, "/print.pdf", true)) {
203 ChromeWebUIDataSource::StartDataRequest(path, is_incognito, request_id);
204 return;
205 }
206
207 // Print Preview data.
208 scoped_refptr<base::RefCountedBytes> data;
209 std::vector<std::string> url_substr;
210 base::SplitString(path, '/', &url_substr);
211 int preview_ui_id = -1;
212 int page_index = 0;
213 if (url_substr.size() == 3 &&
214 base::StringToInt(url_substr[0], &preview_ui_id),
215 base::StringToInt(url_substr[1], &page_index) &&
216 preview_ui_id >= 0) {
217 PrintPreviewDataService::GetInstance()->GetDataEntry(
218 preview_ui_id, page_index, &data);
219 }
220 if (data.get()) {
221 SendResponse(request_id, data);
222 return;
223 }
224 // Invalid request.
225 scoped_refptr<base::RefCountedBytes> empty_bytes(new base::RefCountedBytes);
226 SendResponse(request_id, empty_bytes);
227 }
OLDNEW
« no previous file with comments | « chrome/browser/resources/print_preview/settings/other_options_settings.js ('k') | chrome/common/print_messages.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698