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

Side by Side Diff: chrome/renderer/print_web_view_helper.cc

Issue 11299058: Merge 165517 - Code cleanup. No functional changes. (Closed) Base URL: svn://svn.chromium.org/chrome/branches/1312/src/
Patch Set: Created 8 years, 1 month 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
« no previous file with comments | « chrome/renderer/print_web_view_helper.h ('k') | chrome/renderer/print_web_view_helper_linux.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 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 #include "chrome/renderer/print_web_view_helper.h" 5 #include "chrome/renderer/print_web_view_helper.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/auto_reset.h" 9 #include "base/auto_reset.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 53
54 #if defined(OS_WIN) || defined(OS_MACOSX) 54 #if defined(OS_WIN) || defined(OS_MACOSX)
55 #define USE_RENDER_TEXT 55 #define USE_RENDER_TEXT
56 #endif 56 #endif
57 57
58 #if defined(USE_RENDER_TEXT) 58 #if defined(USE_RENDER_TEXT)
59 #include "ui/gfx/canvas.h" 59 #include "ui/gfx/canvas.h"
60 #include "ui/gfx/render_text.h" 60 #include "ui/gfx/render_text.h"
61 #endif 61 #endif
62 62
63 using printing::ConvertPixelsToPoint;
64 using printing::ConvertPixelsToPointDouble;
65 using printing::ConvertPointsToPixelDouble;
66 using printing::ConvertUnit;
67 using printing::ConvertUnitDouble;
68 using printing::GetHeaderFooterSegmentWidth;
69 using printing::PageSizeMargins;
70 using WebKit::WebConsoleMessage;
71 using WebKit::WebDocument;
72 using WebKit::WebElement;
73 using WebKit::WebFrame;
74 using WebKit::WebNode;
75 using WebKit::WebPlugin;
76 using WebKit::WebPluginDocument;
77 using WebKit::WebPrintParams;
78 using WebKit::WebSize;
79 using WebKit::WebString;
80 using WebKit::WebURLRequest;
81 using WebKit::WebView;
82
83 namespace { 63 namespace {
84 64
85 #if defined(USE_RENDER_TEXT) 65 #if defined(USE_RENDER_TEXT)
86 typedef gfx::RenderText* HeaderFooterPaint; 66 typedef gfx::RenderText* HeaderFooterPaint;
87 #else 67 #else
88 typedef SkPaint HeaderFooterPaint; 68 typedef SkPaint HeaderFooterPaint;
89 #endif 69 #endif
90 70
91 const double kMinDpi = 1.0; 71 const double kMinDpi = 1.0;
92 72
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 oldParams.params.display_header_footer == 114 oldParams.params.display_header_footer ==
135 newParams.params.display_header_footer && 115 newParams.params.display_header_footer &&
136 oldParams.params.date == newParams.params.date && 116 oldParams.params.date == newParams.params.date &&
137 oldParams.params.title == newParams.params.title && 117 oldParams.params.title == newParams.params.title &&
138 oldParams.params.url == newParams.params.url && 118 oldParams.params.url == newParams.params.url &&
139 std::equal(oldParams.pages.begin(), oldParams.pages.end(), 119 std::equal(oldParams.pages.begin(), oldParams.pages.end(),
140 newParams.pages.begin()); 120 newParams.pages.begin());
141 } 121 }
142 122
143 PrintMsg_Print_Params GetCssPrintParams( 123 PrintMsg_Print_Params GetCssPrintParams(
144 WebFrame* frame, 124 WebKit::WebFrame* frame,
145 int page_index, 125 int page_index,
146 const PrintMsg_Print_Params& page_params) { 126 const PrintMsg_Print_Params& page_params) {
147 PrintMsg_Print_Params page_css_params = page_params; 127 PrintMsg_Print_Params page_css_params = page_params;
148 int dpi = GetDPI(&page_params); 128 int dpi = GetDPI(&page_params);
149 WebSize page_size_in_pixels( 129
150 ConvertUnit(page_params.page_size.width(), 130 using printing::ConvertUnit;
151 dpi, printing::kPixelsPerInch), 131 using printing::kPixelsPerInch;
152 ConvertUnit(page_params.page_size.height(), 132 WebKit::WebSize page_size_in_pixels(
153 dpi, printing::kPixelsPerInch)); 133 ConvertUnit(page_params.page_size.width(), dpi, kPixelsPerInch),
154 int margin_top_in_pixels = ConvertUnit( 134 ConvertUnit(page_params.page_size.height(), dpi, kPixelsPerInch));
155 page_params.margin_top, 135 int margin_top_in_pixels =
156 dpi, printing::kPixelsPerInch); 136 ConvertUnit(page_params.margin_top, dpi, kPixelsPerInch);
157 int margin_right_in_pixels = ConvertUnit( 137 int margin_right_in_pixels = ConvertUnit(
158 page_params.page_size.width() - 138 page_params.page_size.width() -
159 page_params.content_size.width() - page_params.margin_left, 139 page_params.content_size.width() - page_params.margin_left,
160 dpi, printing::kPixelsPerInch); 140 dpi, kPixelsPerInch);
161 int margin_bottom_in_pixels = ConvertUnit( 141 int margin_bottom_in_pixels = ConvertUnit(
162 page_params.page_size.height() - 142 page_params.page_size.height() -
163 page_params.content_size.height() - page_params.margin_top, 143 page_params.content_size.height() - page_params.margin_top,
164 dpi, printing::kPixelsPerInch); 144 dpi, kPixelsPerInch);
165 int margin_left_in_pixels = ConvertUnit( 145 int margin_left_in_pixels = ConvertUnit(
166 page_params.margin_left, 146 page_params.margin_left,
167 dpi, printing::kPixelsPerInch); 147 dpi, kPixelsPerInch);
168 148
169 WebSize original_page_size_in_pixels = page_size_in_pixels; 149 WebKit::WebSize original_page_size_in_pixels = page_size_in_pixels;
170 150
171 if (frame) { 151 if (frame) {
172 frame->pageSizeAndMarginsInPixels(page_index, 152 frame->pageSizeAndMarginsInPixels(page_index,
173 page_size_in_pixels, 153 page_size_in_pixels,
174 margin_top_in_pixels, 154 margin_top_in_pixels,
175 margin_right_in_pixels, 155 margin_right_in_pixels,
176 margin_bottom_in_pixels, 156 margin_bottom_in_pixels,
177 margin_left_in_pixels); 157 margin_left_in_pixels);
178 } 158 }
179 159
180 int new_content_width = page_size_in_pixels.width - 160 int new_content_width = page_size_in_pixels.width -
181 margin_left_in_pixels - margin_right_in_pixels; 161 margin_left_in_pixels - margin_right_in_pixels;
182 int new_content_height = page_size_in_pixels.height - 162 int new_content_height = page_size_in_pixels.height -
183 margin_top_in_pixels - margin_bottom_in_pixels; 163 margin_top_in_pixels - margin_bottom_in_pixels;
184 164
185 // Invalid page size and/or margins. We just use the default setting. 165 // Invalid page size and/or margins. We just use the default setting.
186 if (new_content_width < 1 || new_content_height < 1) { 166 if (new_content_width < 1 || new_content_height < 1) {
187 CHECK(frame != NULL); 167 CHECK(frame != NULL);
188 page_css_params = GetCssPrintParams(NULL, page_index, page_params); 168 page_css_params = GetCssPrintParams(NULL, page_index, page_params);
189 return page_css_params; 169 return page_css_params;
190 } 170 }
191 171
192 page_css_params.content_size = gfx::Size( 172 page_css_params.content_size = gfx::Size(
193 static_cast<int>(ConvertUnit(new_content_width, 173 ConvertUnit(new_content_width, kPixelsPerInch, dpi),
194 printing::kPixelsPerInch, dpi)), 174 ConvertUnit(new_content_height, kPixelsPerInch, dpi));
195 static_cast<int>(ConvertUnit(new_content_height,
196 printing::kPixelsPerInch, dpi)));
197 175
198 if (original_page_size_in_pixels != page_size_in_pixels) { 176 if (original_page_size_in_pixels != page_size_in_pixels) {
199 page_css_params.page_size = gfx::Size( 177 page_css_params.page_size = gfx::Size(
200 static_cast<int>(ConvertUnit(page_size_in_pixels.width, 178 ConvertUnit(page_size_in_pixels.width, kPixelsPerInch, dpi),
201 printing::kPixelsPerInch, dpi)), 179 ConvertUnit(page_size_in_pixels.height, kPixelsPerInch, dpi));
202 static_cast<int>(ConvertUnit(page_size_in_pixels.height,
203 printing::kPixelsPerInch, dpi)));
204 } else { 180 } else {
205 // Printing frame doesn't have any page size css. Pixels to dpi conversion 181 // Printing frame doesn't have any page size css. Pixels to dpi conversion
206 // causes rounding off errors. Therefore use the default page size values 182 // causes rounding off errors. Therefore use the default page size values
207 // directly. 183 // directly.
208 page_css_params.page_size = page_params.page_size; 184 page_css_params.page_size = page_params.page_size;
209 } 185 }
210 186
211 page_css_params.margin_top = 187 page_css_params.margin_top =
212 static_cast<int>(ConvertUnit(margin_top_in_pixels, 188 ConvertUnit(margin_top_in_pixels, kPixelsPerInch, dpi);
213 printing::kPixelsPerInch, dpi));
214
215 page_css_params.margin_left = 189 page_css_params.margin_left =
216 static_cast<int>(ConvertUnit(margin_left_in_pixels, 190 ConvertUnit(margin_left_in_pixels, kPixelsPerInch, dpi);
217 printing::kPixelsPerInch, dpi));
218 return page_css_params; 191 return page_css_params;
219 } 192 }
220 193
221 double FitPrintParamsToPage(const PrintMsg_Print_Params& page_params, 194 double FitPrintParamsToPage(const PrintMsg_Print_Params& page_params,
222 PrintMsg_Print_Params* params_to_fit) { 195 PrintMsg_Print_Params* params_to_fit) {
223 double content_width = 196 double content_width =
224 static_cast<double>(params_to_fit->content_size.width()); 197 static_cast<double>(params_to_fit->content_size.width());
225 double content_height = 198 double content_height =
226 static_cast<double>(params_to_fit->content_size.height()); 199 static_cast<double>(params_to_fit->content_size.height());
227 int default_page_size_height = page_params.page_size.height(); 200 int default_page_size_height = page_params.page_size.height();
(...skipping 22 matching lines...) Expand all
250 (default_page_size_width - css_page_size_width * scale_factor) / 2 + 223 (default_page_size_width - css_page_size_width * scale_factor) / 2 +
251 (params_to_fit->margin_left * scale_factor)); 224 (params_to_fit->margin_left * scale_factor));
252 params_to_fit->content_size = gfx::Size( 225 params_to_fit->content_size = gfx::Size(
253 static_cast<int>(content_width), static_cast<int>(content_height)); 226 static_cast<int>(content_width), static_cast<int>(content_height));
254 params_to_fit->page_size = page_params.page_size; 227 params_to_fit->page_size = page_params.page_size;
255 return scale_factor; 228 return scale_factor;
256 } 229 }
257 230
258 void CalculatePageLayoutFromPrintParams( 231 void CalculatePageLayoutFromPrintParams(
259 const PrintMsg_Print_Params& params, 232 const PrintMsg_Print_Params& params,
260 PageSizeMargins* page_layout_in_points) { 233 printing::PageSizeMargins* page_layout_in_points) {
261 int dpi = GetDPI(&params); 234 int dpi = GetDPI(&params);
262 int content_width = params.content_size.width(); 235 int content_width = params.content_size.width();
263 int content_height = params.content_size.height(); 236 int content_height = params.content_size.height();
264 237
265 int margin_bottom = params.page_size.height() - 238 int margin_bottom = params.page_size.height() -
266 content_height - params.margin_top; 239 content_height - params.margin_top;
267 int margin_right = params.page_size.width() - 240 int margin_right = params.page_size.width() -
268 content_width - params.margin_left; 241 content_width - params.margin_left;
269 242
270 page_layout_in_points->content_width = ConvertUnit( 243 using printing::ConvertUnit;
271 content_width, dpi, printing::kPointsPerInch); 244 using printing::kPointsPerInch;
272 page_layout_in_points->content_height = ConvertUnit( 245 page_layout_in_points->content_width =
273 content_height, dpi, printing::kPointsPerInch); 246 ConvertUnit(content_width, dpi, kPointsPerInch);
274 page_layout_in_points->margin_top = ConvertUnit( 247 page_layout_in_points->content_height =
275 params.margin_top, dpi, printing::kPointsPerInch); 248 ConvertUnit(content_height, dpi, kPointsPerInch);
276 page_layout_in_points->margin_right = ConvertUnit( 249 page_layout_in_points->margin_top =
277 margin_right, dpi, printing::kPointsPerInch); 250 ConvertUnit(params.margin_top, dpi, kPointsPerInch);
278 page_layout_in_points->margin_bottom = ConvertUnit( 251 page_layout_in_points->margin_right =
279 margin_bottom, dpi, printing::kPointsPerInch); 252 ConvertUnit(margin_right, dpi, kPointsPerInch);
280 page_layout_in_points->margin_left = ConvertUnit( 253 page_layout_in_points->margin_bottom =
281 params.margin_left, dpi, printing::kPointsPerInch); 254 ConvertUnit(margin_bottom, dpi, kPointsPerInch);
255 page_layout_in_points->margin_left =
256 ConvertUnit(params.margin_left, dpi, kPointsPerInch);
282 } 257 }
283 258
284 void EnsureOrientationMatches(const PrintMsg_Print_Params& css_params, 259 void EnsureOrientationMatches(const PrintMsg_Print_Params& css_params,
285 PrintMsg_Print_Params* page_params) { 260 PrintMsg_Print_Params* page_params) {
286 if ((page_params->page_size.width() > page_params->page_size.height()) == 261 if ((page_params->page_size.width() > page_params->page_size.height()) ==
287 (css_params.page_size.width() > css_params.page_size.height())) { 262 (css_params.page_size.width() > css_params.page_size.height())) {
288 return; 263 return;
289 } 264 }
290 265
291 // Swap the |width| and |height| values. 266 // Swap the |width| and |height| values.
292 page_params->page_size.SetSize(page_params->page_size.height(), 267 page_params->page_size.SetSize(page_params->page_size.height(),
293 page_params->page_size.width()); 268 page_params->page_size.width());
294 page_params->content_size.SetSize(page_params->content_size.height(), 269 page_params->content_size.SetSize(page_params->content_size.height(),
295 page_params->content_size.width()); 270 page_params->content_size.width());
296 page_params->printable_area.set_size( 271 page_params->printable_area.set_size(
297 gfx::Size(page_params->printable_area.height(), 272 gfx::Size(page_params->printable_area.height(),
298 page_params->printable_area.width())); 273 page_params->printable_area.width()));
299 } 274 }
300 275
301 void ComputeWebKitPrintParamsInDesiredDpi( 276 void ComputeWebKitPrintParamsInDesiredDpi(
302 const PrintMsg_Print_Params& print_params, 277 const PrintMsg_Print_Params& print_params,
303 WebPrintParams* webkit_print_params) { 278 WebKit::WebPrintParams* webkit_print_params) {
304 int dpi = GetDPI(&print_params); 279 int dpi = GetDPI(&print_params);
305 webkit_print_params->printerDPI = dpi; 280 webkit_print_params->printerDPI = dpi;
306 webkit_print_params->printScalingOption = print_params.print_scaling_option; 281 webkit_print_params->printScalingOption = print_params.print_scaling_option;
307 282
283 using printing::ConvertUnit;
308 webkit_print_params->printContentArea.width = 284 webkit_print_params->printContentArea.width =
309 ConvertUnit(print_params.content_size.width(), dpi, 285 ConvertUnit(print_params.content_size.width(), dpi,
310 print_params.desired_dpi); 286 print_params.desired_dpi);
311 webkit_print_params->printContentArea.height = 287 webkit_print_params->printContentArea.height =
312 ConvertUnit(print_params.content_size.height(), dpi, 288 ConvertUnit(print_params.content_size.height(), dpi,
313 print_params.desired_dpi); 289 print_params.desired_dpi);
314 290
315 webkit_print_params->printableArea.x = 291 webkit_print_params->printableArea.x =
316 ConvertUnit(print_params.printable_area.x(), dpi, 292 ConvertUnit(print_params.printable_area.x(), dpi,
317 print_params.desired_dpi); 293 print_params.desired_dpi);
318 webkit_print_params->printableArea.y = 294 webkit_print_params->printableArea.y =
319 ConvertUnit(print_params.printable_area.y(), dpi, 295 ConvertUnit(print_params.printable_area.y(), dpi,
320 print_params.desired_dpi); 296 print_params.desired_dpi);
321 webkit_print_params->printableArea.width = 297 webkit_print_params->printableArea.width =
322 ConvertUnit(print_params.printable_area.width(), dpi, 298 ConvertUnit(print_params.printable_area.width(), dpi,
323 print_params.desired_dpi); 299 print_params.desired_dpi);
324 webkit_print_params->printableArea.height = 300 webkit_print_params->printableArea.height =
325 ConvertUnit(print_params.printable_area.height(), 301 ConvertUnit(print_params.printable_area.height(),
326 dpi, print_params.desired_dpi); 302 dpi, print_params.desired_dpi);
327 303
328 webkit_print_params->paperSize.width = 304 webkit_print_params->paperSize.width =
329 ConvertUnit(print_params.page_size.width(), dpi, 305 ConvertUnit(print_params.page_size.width(), dpi,
330 print_params.desired_dpi); 306 print_params.desired_dpi);
331 webkit_print_params->paperSize.height = 307 webkit_print_params->paperSize.height =
332 ConvertUnit(print_params.page_size.height(), dpi, 308 ConvertUnit(print_params.page_size.height(), dpi,
333 print_params.desired_dpi); 309 print_params.desired_dpi);
334 } 310 }
335 311
336 bool PrintingNodeOrPdfFrame(const WebFrame* frame, const WebNode& node) { 312 bool PrintingNodeOrPdfFrame(const WebKit::WebFrame* frame,
313 const WebKit::WebNode& node) {
337 if (!node.isNull()) 314 if (!node.isNull())
338 return true; 315 return true;
339 if (!frame->document().isPluginDocument()) 316 if (!frame->document().isPluginDocument())
340 return false; 317 return false;
341 WebPlugin* plugin = frame->document().to<WebPluginDocument>().plugin(); 318 WebKit::WebPlugin* plugin =
319 frame->document().to<WebKit::WebPluginDocument>().plugin();
342 return plugin && plugin->supportsPaginatedPrint(); 320 return plugin && plugin->supportsPaginatedPrint();
343 } 321 }
344 322
345 bool PrintingFrameHasPageSizeStyle(WebFrame* frame, int total_page_count) { 323 bool PrintingFrameHasPageSizeStyle(WebKit::WebFrame* frame,
324 int total_page_count) {
346 if (!frame) 325 if (!frame)
347 return false; 326 return false;
348 bool frame_has_custom_page_size_style = false; 327 bool frame_has_custom_page_size_style = false;
349 for (int i = 0; i < total_page_count; ++i) { 328 for (int i = 0; i < total_page_count; ++i) {
350 if (frame->hasCustomPageSizeStyle(i)) { 329 if (frame->hasCustomPageSizeStyle(i)) {
351 frame_has_custom_page_size_style = true; 330 frame_has_custom_page_size_style = true;
352 break; 331 break;
353 } 332 }
354 } 333 }
355 return frame_has_custom_page_size_style; 334 return frame_has_custom_page_size_style;
356 } 335 }
357 336
358 printing::MarginType GetMarginsForPdf(WebFrame* frame, const WebNode& node) { 337 printing::MarginType GetMarginsForPdf(WebKit::WebFrame* frame,
338 const WebKit::WebNode& node) {
359 if (frame->isPrintScalingDisabledForPlugin(node)) 339 if (frame->isPrintScalingDisabledForPlugin(node))
360 return printing::NO_MARGINS; 340 return printing::NO_MARGINS;
361 else 341 else
362 return printing::PRINTABLE_AREA_MARGINS; 342 return printing::PRINTABLE_AREA_MARGINS;
363 } 343 }
364 344
365 bool FitToPageEnabled(const DictionaryValue& job_settings) { 345 bool FitToPageEnabled(const DictionaryValue& job_settings) {
366 bool fit_to_paper_size = false; 346 bool fit_to_paper_size = false;
367 if (!job_settings.GetBoolean(printing::kSettingFitToPageEnabled, 347 if (!job_settings.GetBoolean(printing::kSettingFitToPageEnabled,
368 &fit_to_paper_size)) { 348 &fit_to_paper_size)) {
369 NOTREACHED(); 349 NOTREACHED();
370 } 350 }
371 return fit_to_paper_size; 351 return fit_to_paper_size;
372 } 352 }
373 353
374 // Get the (x, y) coordinate from where printing of the current text should 354 // Get the (x, y) coordinate from where printing of the current text should
375 // start depending on the horizontal alignment (LEFT, RIGHT, CENTER) and 355 // start depending on the horizontal alignment (LEFT, RIGHT, CENTER) and
376 // vertical alignment (TOP, BOTTOM). 356 // vertical alignment (TOP, BOTTOM).
377 SkPoint GetHeaderFooterPosition( 357 SkPoint GetHeaderFooterPosition(
378 float webkit_scale_factor, 358 float webkit_scale_factor,
379 const PageSizeMargins& page_layout, 359 const printing::PageSizeMargins& page_layout,
380 printing::HorizontalHeaderFooterPosition horizontal_position, 360 printing::HorizontalHeaderFooterPosition horizontal_position,
381 printing::VerticalHeaderFooterPosition vertical_position, 361 printing::VerticalHeaderFooterPosition vertical_position,
382 double offset_to_baseline, 362 double offset_to_baseline,
383 double text_width_in_points) { 363 double text_width_in_points) {
384 SkScalar x = 0; 364 SkScalar x = 0;
385 switch (horizontal_position) { 365 switch (horizontal_position) {
386 case printing::LEFT: { 366 case printing::LEFT: {
387 x = printing::kSettingHeaderFooterInterstice - page_layout.margin_left; 367 x = printing::kSettingHeaderFooterInterstice - page_layout.margin_left;
388 break; 368 break;
389 } 369 }
390 case printing::RIGHT: { 370 case printing::RIGHT: {
391 x = page_layout.content_width + page_layout.margin_right - 371 x = page_layout.content_width + page_layout.margin_right -
392 printing::kSettingHeaderFooterInterstice - text_width_in_points; 372 printing::kSettingHeaderFooterInterstice - text_width_in_points;
393 break; 373 break;
394 } 374 }
395 case printing::CENTER: { 375 case printing::CENTER: {
396 SkScalar available_width = GetHeaderFooterSegmentWidth( 376 SkScalar available_width = printing::GetHeaderFooterSegmentWidth(
397 page_layout.margin_left + page_layout.margin_right + 377 page_layout.margin_left + page_layout.margin_right +
398 page_layout.content_width); 378 page_layout.content_width);
399 x = available_width - page_layout.margin_left + 379 x = available_width - page_layout.margin_left +
400 (available_width - text_width_in_points) / 2; 380 (available_width - text_width_in_points) / 2;
401 break; 381 break;
402 } 382 }
403 default: { 383 default: {
404 NOTREACHED(); 384 NOTREACHED();
405 } 385 }
406 } 386 }
(...skipping 17 matching lines...) Expand all
424 return point; 404 return point;
425 } 405 }
426 406
427 // Given a text, the positions, and the paint object, this method gets the 407 // Given a text, the positions, and the paint object, this method gets the
428 // coordinates and prints the text at those coordinates on the canvas. 408 // coordinates and prints the text at those coordinates on the canvas.
429 void PrintHeaderFooterText( 409 void PrintHeaderFooterText(
430 const string16& text, 410 const string16& text,
431 WebKit::WebCanvas* canvas, 411 WebKit::WebCanvas* canvas,
432 HeaderFooterPaint paint, 412 HeaderFooterPaint paint,
433 float webkit_scale_factor, 413 float webkit_scale_factor,
434 const PageSizeMargins& page_layout, 414 const printing::PageSizeMargins& page_layout,
435 printing::HorizontalHeaderFooterPosition horizontal_position, 415 printing::HorizontalHeaderFooterPosition horizontal_position,
436 printing::VerticalHeaderFooterPosition vertical_position, 416 printing::VerticalHeaderFooterPosition vertical_position,
437 double offset_to_baseline) { 417 double offset_to_baseline) {
438 #if defined(USE_RENDER_TEXT) 418 #if defined(USE_RENDER_TEXT)
439 paint->SetText(text); 419 paint->SetText(text);
440 paint->SetFontSize(printing::kSettingHeaderFooterFontSize); 420 paint->SetFontSize(printing::kSettingHeaderFooterFontSize);
441 double text_width_in_points = paint->GetStringSize().width(); 421 double text_width_in_points = paint->GetStringSize().width();
442 SkPoint point = GetHeaderFooterPosition(webkit_scale_factor, page_layout, 422 SkPoint point = GetHeaderFooterPosition(webkit_scale_factor, page_layout,
443 horizontal_position, 423 horizontal_position,
444 vertical_position, offset_to_baseline, 424 vertical_position, offset_to_baseline,
(...skipping 28 matching lines...) Expand all
473 vertical_position, offset_to_baseline, 453 vertical_position, offset_to_baseline,
474 text_width_in_points); 454 text_width_in_points);
475 paint.setTextSize(SkDoubleToScalar( 455 paint.setTextSize(SkDoubleToScalar(
476 paint.getTextSize() / webkit_scale_factor)); 456 paint.getTextSize() / webkit_scale_factor));
477 canvas->drawText(text.c_str(), text_byte_length, point.x(), point.y(), 457 canvas->drawText(text.c_str(), text_byte_length, point.x(), point.y(),
478 paint); 458 paint);
479 #endif 459 #endif
480 } 460 }
481 461
482 PrintMsg_Print_Params CalculatePrintParamsForCss( 462 PrintMsg_Print_Params CalculatePrintParamsForCss(
483 WebFrame* frame, 463 WebKit::WebFrame* frame,
484 int page_index, 464 int page_index,
485 const PrintMsg_Print_Params& page_params, 465 const PrintMsg_Print_Params& page_params,
486 bool ignore_css_margins, 466 bool ignore_css_margins,
487 bool fit_to_page, 467 bool fit_to_page,
488 double* scale_factor) { 468 double* scale_factor) {
489 PrintMsg_Print_Params css_params = GetCssPrintParams(frame, page_index, 469 PrintMsg_Print_Params css_params = GetCssPrintParams(frame, page_index,
490 page_params); 470 page_params);
491 471
492 PrintMsg_Print_Params params = page_params; 472 PrintMsg_Print_Params params = page_params;
493 EnsureOrientationMatches(css_params, &params); 473 EnsureOrientationMatches(css_params, &params);
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
533 } 513 }
534 514
535 } // namespace 515 } // namespace
536 516
537 // static - Not anonymous so that platform implementations can use it. 517 // static - Not anonymous so that platform implementations can use it.
538 void PrintWebViewHelper::PrintHeaderAndFooter( 518 void PrintWebViewHelper::PrintHeaderAndFooter(
539 WebKit::WebCanvas* canvas, 519 WebKit::WebCanvas* canvas,
540 int page_number, 520 int page_number,
541 int total_pages, 521 int total_pages,
542 float webkit_scale_factor, 522 float webkit_scale_factor,
543 const PageSizeMargins& page_layout, 523 const printing::PageSizeMargins& page_layout,
544 const DictionaryValue& header_footer_info) { 524 const DictionaryValue& header_footer_info,
525 const PrintMsg_Print_Params& params) {
545 skia::VectorPlatformDeviceSkia* device = 526 skia::VectorPlatformDeviceSkia* device =
546 static_cast<skia::VectorPlatformDeviceSkia*>(canvas->getTopDevice()); 527 static_cast<skia::VectorPlatformDeviceSkia*>(canvas->getTopDevice());
547 device->setDrawingArea(SkPDFDevice::kMargin_DrawingArea); 528 device->setDrawingArea(SkPDFDevice::kMargin_DrawingArea);
548 529
549 #if defined(USE_RENDER_TEXT) 530 #if defined(USE_RENDER_TEXT)
550 scoped_ptr<gfx::RenderText> render_text(gfx::RenderText::CreateInstance()); 531 scoped_ptr<gfx::RenderText> render_text(gfx::RenderText::CreateInstance());
551 // TODO(asvitkine): The below line is to workaround http://crbug.com/133548. 532 // TODO(asvitkine): The below line is to workaround http://crbug.com/133548.
552 // Remove it when the underlying Skia bug has been fixed. 533 // Remove it when the underlying Skia bug has been fixed.
553 render_text->set_clip_to_display_rect(false); 534 render_text->set_clip_to_display_rect(false);
554 gfx::FontList font_list( 535 gfx::FontList font_list(
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
601 page_layout, printing::CENTER, printing::TOP, 582 page_layout, printing::CENTER, printing::TOP,
602 header_vertical_bounds.top()); 583 header_vertical_bounds.top());
603 } 584 }
604 585
605 // Prints the footers onto the |canvas| if there is enough space to print 586 // Prints the footers onto the |canvas| if there is enough space to print
606 // them. 587 // them.
607 string16 page_of_total_pages = base::IntToString16(page_number) + 588 string16 page_of_total_pages = base::IntToString16(page_number) +
608 UTF8ToUTF16("/") + 589 UTF8ToUTF16("/") +
609 base::IntToString16(total_pages); 590 base::IntToString16(total_pages);
610 string16 url; 591 string16 url;
611 if (!header_footer_info.GetString(printing::kSettingHeaderFooterURL, 592 if (!header_footer_info.GetString(printing::kSettingHeaderFooterURL, &url)) {
612 &url)) {
613 NOTREACHED(); 593 NOTREACHED();
614 } 594 }
615 string16 footer_text = page_of_total_pages + url; 595 string16 footer_text = page_of_total_pages + url;
616 596
617 // Used for height calculations. Note that the width may be undefined. 597 // Used for height calculations. Note that the width may be undefined.
618 SkRect footer_vertical_bounds; 598 SkRect footer_vertical_bounds;
619 #if defined(USE_RENDER_TEXT) 599 #if defined(USE_RENDER_TEXT)
620 paint->SetFontList(font_list); 600 paint->SetFontList(font_list);
621 paint->SetText(footer_text); 601 paint->SetText(footer_text);
622 { 602 {
(...skipping 15 matching lines...) Expand all
638 PrintHeaderFooterText(url, canvas, paint, webkit_scale_factor, page_layout, 618 PrintHeaderFooterText(url, canvas, paint, webkit_scale_factor, page_layout,
639 printing::LEFT, printing::BOTTOM, 619 printing::LEFT, printing::BOTTOM,
640 footer_vertical_bounds.bottom()); 620 footer_vertical_bounds.bottom());
641 } 621 }
642 622
643 device->setDrawingArea(SkPDFDevice::kContent_DrawingArea); 623 device->setDrawingArea(SkPDFDevice::kContent_DrawingArea);
644 } 624 }
645 625
646 PrepareFrameAndViewForPrint::PrepareFrameAndViewForPrint( 626 PrepareFrameAndViewForPrint::PrepareFrameAndViewForPrint(
647 const PrintMsg_Print_Params& print_params, 627 const PrintMsg_Print_Params& print_params,
648 WebFrame* frame, 628 WebKit::WebFrame* frame,
649 const WebNode& node) 629 const WebKit::WebNode& node)
650 : frame_(frame), 630 : frame_(frame),
651 node_to_print_(node), 631 node_to_print_(node),
652 web_view_(frame->view()), 632 web_view_(frame->view()),
653 expected_pages_count_(0), 633 expected_pages_count_(0),
654 use_browser_overlays_(true), 634 use_browser_overlays_(true),
655 finished_(false) { 635 finished_(false) {
656 WebPrintParams webkit_print_params; 636 WebKit::WebPrintParams webkit_print_params;
657 ComputeWebKitPrintParamsInDesiredDpi(print_params, &webkit_print_params); 637 ComputeWebKitPrintParamsInDesiredDpi(print_params, &webkit_print_params);
658 638
659 if (WebFrame* web_frame = web_view_->mainFrame()) 639 if (WebKit::WebFrame* web_frame = web_view_->mainFrame())
660 prev_scroll_offset_ = web_frame->scrollOffset(); 640 prev_scroll_offset_ = web_frame->scrollOffset();
661 prev_view_size_ = web_view_->size(); 641 prev_view_size_ = web_view_->size();
662 642
663 StartPrinting(webkit_print_params); 643 StartPrinting(webkit_print_params);
664 } 644 }
665 645
666 PrepareFrameAndViewForPrint::~PrepareFrameAndViewForPrint() { 646 PrepareFrameAndViewForPrint::~PrepareFrameAndViewForPrint() {
667 FinishPrinting(); 647 FinishPrinting();
668 } 648 }
669 649
670 void PrepareFrameAndViewForPrint::UpdatePrintParams( 650 void PrepareFrameAndViewForPrint::UpdatePrintParams(
671 const PrintMsg_Print_Params& print_params) { 651 const PrintMsg_Print_Params& print_params) {
672 DCHECK(!finished_); 652 DCHECK(!finished_);
673 WebPrintParams webkit_print_params; 653 WebKit::WebPrintParams webkit_print_params;
674 ComputeWebKitPrintParamsInDesiredDpi(print_params, &webkit_print_params); 654 ComputeWebKitPrintParamsInDesiredDpi(print_params, &webkit_print_params);
675 655
676 if (webkit_print_params.printContentArea == 656 if (webkit_print_params.printContentArea ==
677 web_print_params_.printContentArea && 657 web_print_params_.printContentArea &&
678 webkit_print_params.printableArea == web_print_params_.printableArea && 658 webkit_print_params.printableArea == web_print_params_.printableArea &&
679 webkit_print_params.paperSize == web_print_params_.paperSize && 659 webkit_print_params.paperSize == web_print_params_.paperSize &&
680 webkit_print_params.printScalingOption == 660 webkit_print_params.printScalingOption ==
681 web_print_params_.printScalingOption) { 661 web_print_params_.printScalingOption) {
682 return; 662 return;
683 } 663 }
684 664
685 frame_->printEnd(); 665 frame_->printEnd();
686 StartPrinting(webkit_print_params); 666 StartPrinting(webkit_print_params);
687 } 667 }
688 668
669 gfx::Size PrepareFrameAndViewForPrint::GetPrintCanvasSize() const {
670 return gfx::Size(web_print_params_.printContentArea.width,
671 web_print_params_.printContentArea.height);
672 }
673
689 void PrepareFrameAndViewForPrint::StartPrinting( 674 void PrepareFrameAndViewForPrint::StartPrinting(
690 const WebPrintParams& webkit_print_params) { 675 const WebKit::WebPrintParams& webkit_print_params) {
691 web_print_params_ = webkit_print_params; 676 web_print_params_ = webkit_print_params;
692 677
693 // Layout page according to printer page size. Since WebKit shrinks the 678 // Layout page according to printer page size. Since WebKit shrinks the
694 // size of the page automatically (from 125% to 200%) we trick it to 679 // size of the page automatically (from 125% to 200%) we trick it to
695 // think the page is 125% larger so the size of the page is correct for 680 // think the page is 125% larger so the size of the page is correct for
696 // minimum (default) scaling. 681 // minimum (default) scaling.
697 // This is important for sites that try to fill the page. 682 // This is important for sites that try to fill the page.
698 gfx::Size print_layout_size(web_print_params_.printContentArea.width, 683 gfx::Size print_layout_size(web_print_params_.printContentArea.width,
699 web_print_params_.printContentArea.height); 684 web_print_params_.printContentArea.height);
700 print_layout_size.set_height(static_cast<int>( 685 print_layout_size.set_height(static_cast<int>(
701 static_cast<double>(print_layout_size.height()) * 1.25)); 686 static_cast<double>(print_layout_size.height()) * 1.25));
702 687
703 web_view_->resize(print_layout_size); 688 web_view_->resize(print_layout_size);
704 689
705 expected_pages_count_ = frame_->printBegin(web_print_params_, 690 expected_pages_count_ = frame_->printBegin(web_print_params_,
706 node_to_print_, 691 node_to_print_,
707 &use_browser_overlays_); 692 &use_browser_overlays_);
708 } 693 }
709 694
710 void PrepareFrameAndViewForPrint::FinishPrinting() { 695 void PrepareFrameAndViewForPrint::FinishPrinting() {
711 if (!finished_) { 696 if (!finished_) {
712 finished_ = true; 697 finished_ = true;
713 frame_->printEnd(); 698 frame_->printEnd();
714 web_view_->resize(prev_view_size_); 699 web_view_->resize(prev_view_size_);
715 if (WebFrame* web_frame = web_view_->mainFrame()) 700 if (WebKit::WebFrame* web_frame = web_view_->mainFrame())
716 web_frame->setScrollOffset(prev_scroll_offset_); 701 web_frame->setScrollOffset(prev_scroll_offset_);
717 } 702 }
718 } 703 }
719 704
720 PrintWebViewHelper::PrintWebViewHelper(content::RenderView* render_view) 705 PrintWebViewHelper::PrintWebViewHelper(content::RenderView* render_view)
721 : content::RenderViewObserver(render_view), 706 : content::RenderViewObserver(render_view),
722 content::RenderViewObserverTracker<PrintWebViewHelper>(render_view), 707 content::RenderViewObserverTracker<PrintWebViewHelper>(render_view),
723 print_web_view_(NULL), 708 print_web_view_(NULL),
724 is_preview_enabled_(IsPrintPreviewEnabled()), 709 is_preview_enabled_(IsPrintPreviewEnabled()),
725 is_scripted_print_throttling_disabled_(IsPrintThrottlingDisabled()), 710 is_scripted_print_throttling_disabled_(IsPrintThrottlingDisabled()),
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
761 } 746 }
762 747
763 if (!IsScriptInitiatedPrintAllowed(frame, user_initiated)) 748 if (!IsScriptInitiatedPrintAllowed(frame, user_initiated))
764 return; 749 return;
765 IncrementScriptedPrintCount(); 750 IncrementScriptedPrintCount();
766 751
767 if (is_preview_enabled_) { 752 if (is_preview_enabled_) {
768 print_preview_context_.InitWithFrame(frame); 753 print_preview_context_.InitWithFrame(frame);
769 RequestPrintPreview(PRINT_PREVIEW_SCRIPTED); 754 RequestPrintPreview(PRINT_PREVIEW_SCRIPTED);
770 } else { 755 } else {
771 Print(frame, WebNode()); 756 Print(frame, WebKit::WebNode());
772 } 757 }
773 } 758 }
774 759
775 bool PrintWebViewHelper::OnMessageReceived(const IPC::Message& message) { 760 bool PrintWebViewHelper::OnMessageReceived(const IPC::Message& message) {
776 bool handled = true; 761 bool handled = true;
777 IPC_BEGIN_MESSAGE_MAP(PrintWebViewHelper, message) 762 IPC_BEGIN_MESSAGE_MAP(PrintWebViewHelper, message)
778 IPC_MESSAGE_HANDLER(PrintMsg_PrintPages, OnPrintPages) 763 IPC_MESSAGE_HANDLER(PrintMsg_PrintPages, OnPrintPages)
779 IPC_MESSAGE_HANDLER(PrintMsg_PrintForSystemDialog, OnPrintForSystemDialog) 764 IPC_MESSAGE_HANDLER(PrintMsg_PrintForSystemDialog, OnPrintForSystemDialog)
780 IPC_MESSAGE_HANDLER(PrintMsg_InitiatePrintPreview, OnInitiatePrintPreview) 765 IPC_MESSAGE_HANDLER(PrintMsg_InitiatePrintPreview, OnInitiatePrintPreview)
781 IPC_MESSAGE_HANDLER(PrintMsg_PrintNodeUnderContextMenu, 766 IPC_MESSAGE_HANDLER(PrintMsg_PrintNodeUnderContextMenu,
(...skipping 12 matching lines...) Expand all
794 779
795 void PrintWebViewHelper::OnPrintForPrintPreview( 780 void PrintWebViewHelper::OnPrintForPrintPreview(
796 const DictionaryValue& job_settings) { 781 const DictionaryValue& job_settings) {
797 DCHECK(is_preview_enabled_); 782 DCHECK(is_preview_enabled_);
798 // If still not finished with earlier print request simply ignore. 783 // If still not finished with earlier print request simply ignore.
799 if (print_web_view_) 784 if (print_web_view_)
800 return; 785 return;
801 786
802 if (!render_view()->GetWebView()) 787 if (!render_view()->GetWebView())
803 return; 788 return;
804 WebFrame* main_frame = render_view()->GetWebView()->mainFrame(); 789 WebKit::WebFrame* main_frame = render_view()->GetWebView()->mainFrame();
805 if (!main_frame) 790 if (!main_frame)
806 return; 791 return;
807 792
808 WebDocument document = main_frame->document(); 793 WebKit::WebDocument document = main_frame->document();
809 // <object> with id="pdf-viewer" is created in 794 // <object> with id="pdf-viewer" is created in
810 // chrome/browser/resources/print_preview/print_preview.js 795 // chrome/browser/resources/print_preview/print_preview.js
811 WebElement pdf_element = document.getElementById("pdf-viewer"); 796 WebKit::WebElement pdf_element = document.getElementById("pdf-viewer");
812 if (pdf_element.isNull()) { 797 if (pdf_element.isNull()) {
813 NOTREACHED(); 798 NOTREACHED();
814 return; 799 return;
815 } 800 }
816 801
817 // Set |print_for_preview_| flag and autoreset it to back to original 802 // Set |print_for_preview_| flag and autoreset it to back to original
818 // on return. 803 // on return.
819 AutoReset<bool> set_printing_flag(&print_for_preview_, true); 804 AutoReset<bool> set_printing_flag(&print_for_preview_, true);
820 805
821 WebFrame* pdf_frame = pdf_element.document().frame(); 806 WebKit::WebFrame* pdf_frame = pdf_element.document().frame();
822 if (!UpdatePrintSettings(pdf_frame, pdf_element, job_settings)) { 807 if (!UpdatePrintSettings(pdf_frame, pdf_element, job_settings)) {
823 LOG(ERROR) << "UpdatePrintSettings failed"; 808 LOG(ERROR) << "UpdatePrintSettings failed";
824 DidFinishPrinting(FAIL_PRINT); 809 DidFinishPrinting(FAIL_PRINT);
825 return; 810 return;
826 } 811 }
827 812
828 // Print page onto entire page not just printable area. Preview PDF already 813 // Print page onto entire page not just printable area. Preview PDF already
829 // has content in correct position taking into account page size and printable 814 // has content in correct position taking into account page size and printable
830 // area. 815 // area.
831 // TODO(vitalybuka) : Make this consistent on all platform. This change 816 // TODO(vitalybuka) : Make this consistent on all platform. This change
(...skipping 20 matching lines...) Expand all
852 837
853 // If the user has selected text in the currently focused frame we print 838 // If the user has selected text in the currently focused frame we print
854 // only that frame (this makes print selection work for multiple frames). 839 // only that frame (this makes print selection work for multiple frames).
855 *frame = render_view()->GetWebView()->focusedFrame()->hasSelection() ? 840 *frame = render_view()->GetWebView()->focusedFrame()->hasSelection() ?
856 render_view()->GetWebView()->focusedFrame() : 841 render_view()->GetWebView()->focusedFrame() :
857 render_view()->GetWebView()->mainFrame(); 842 render_view()->GetWebView()->mainFrame();
858 return true; 843 return true;
859 } 844 }
860 845
861 void PrintWebViewHelper::OnPrintPages() { 846 void PrintWebViewHelper::OnPrintPages() {
862 WebFrame* frame; 847 WebKit::WebFrame* frame;
863 if (GetPrintFrame(&frame)) 848 if (GetPrintFrame(&frame))
864 Print(frame, WebNode()); 849 Print(frame, WebKit::WebNode());
865 } 850 }
866 851
867 void PrintWebViewHelper::OnPrintForSystemDialog() { 852 void PrintWebViewHelper::OnPrintForSystemDialog() {
868 WebFrame* frame = print_preview_context_.frame(); 853 WebKit::WebFrame* frame = print_preview_context_.frame();
869 if (!frame) { 854 if (!frame) {
870 NOTREACHED(); 855 NOTREACHED();
871 return; 856 return;
872 } 857 }
873 858
874 Print(frame, print_preview_context_.node()); 859 Print(frame, print_preview_context_.node());
875 } 860 }
876 861
877 void PrintWebViewHelper::GetPageSizeAndContentAreaFromPageLayout( 862 void PrintWebViewHelper::GetPageSizeAndContentAreaFromPageLayout(
878 const printing::PageSizeMargins& page_layout_in_points, 863 const printing::PageSizeMargins& page_layout_in_points,
(...skipping 10 matching lines...) Expand all
889 page_layout_in_points.margin_top, 874 page_layout_in_points.margin_top,
890 page_layout_in_points.content_width, 875 page_layout_in_points.content_width,
891 page_layout_in_points.content_height); 876 page_layout_in_points.content_height);
892 } 877 }
893 878
894 void PrintWebViewHelper::UpdateFrameMarginsCssInfo( 879 void PrintWebViewHelper::UpdateFrameMarginsCssInfo(
895 const DictionaryValue& settings) { 880 const DictionaryValue& settings) {
896 int margins_type = 0; 881 int margins_type = 0;
897 if (!settings.GetInteger(printing::kSettingMarginsType, &margins_type)) 882 if (!settings.GetInteger(printing::kSettingMarginsType, &margins_type))
898 margins_type = printing::DEFAULT_MARGINS; 883 margins_type = printing::DEFAULT_MARGINS;
899 ignore_css_margins_ = margins_type != printing::DEFAULT_MARGINS; 884 ignore_css_margins_ = (margins_type != printing::DEFAULT_MARGINS);
900 } 885 }
901 886
902 bool PrintWebViewHelper::IsPrintToPdfRequested( 887 bool PrintWebViewHelper::IsPrintToPdfRequested(
903 const DictionaryValue& job_settings) { 888 const DictionaryValue& job_settings) {
904 bool print_to_pdf = false; 889 bool print_to_pdf = false;
905 if (!job_settings.GetBoolean(printing::kSettingPrintToPDF, &print_to_pdf)) 890 if (!job_settings.GetBoolean(printing::kSettingPrintToPDF, &print_to_pdf))
906 NOTREACHED(); 891 NOTREACHED();
907 return print_to_pdf; 892 return print_to_pdf;
908 } 893 }
909 894
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
990 if (CreatePreviewDocument()) { 975 if (CreatePreviewDocument()) {
991 DidFinishPrinting(OK); 976 DidFinishPrinting(OK);
992 } else { 977 } else {
993 if (notify_browser_of_print_failure_) 978 if (notify_browser_of_print_failure_)
994 LOG(ERROR) << "CreatePreviewDocument failed"; 979 LOG(ERROR) << "CreatePreviewDocument failed";
995 DidFinishPrinting(FAIL_PREVIEW); 980 DidFinishPrinting(FAIL_PREVIEW);
996 } 981 }
997 } 982 }
998 983
999 bool PrintWebViewHelper::CreatePreviewDocument() { 984 bool PrintWebViewHelper::CreatePreviewDocument() {
1000 PrintMsg_Print_Params print_params = print_pages_params_->params; 985 const PrintMsg_Print_Params& print_params = print_pages_params_->params;
1001 const std::vector<int>& pages = print_pages_params_->pages; 986 const std::vector<int>& pages = print_pages_params_->pages;
1002 if (!print_preview_context_.CreatePreviewDocument(&print_params, pages, 987 if (!print_preview_context_.CreatePreviewDocument(print_params, pages,
1003 ignore_css_margins_)) { 988 ignore_css_margins_)) {
1004 return false; 989 return false;
1005 } 990 }
1006 991
1007 PageSizeMargins default_page_layout; 992 printing::PageSizeMargins default_page_layout;
1008 ComputePageLayoutInPointsForCss(print_preview_context_.frame(), 0, 993 ComputePageLayoutInPointsForCss(print_preview_context_.frame(), 0,
1009 print_params, ignore_css_margins_, NULL, 994 print_params, ignore_css_margins_, NULL,
1010 &default_page_layout); 995 &default_page_layout);
1011 996
1012 if (!old_print_pages_params_.get() || 997 if (!old_print_pages_params_.get() ||
1013 !PageLayoutIsEqual(*old_print_pages_params_, *print_pages_params_)) { 998 !PageLayoutIsEqual(*old_print_pages_params_, *print_pages_params_)) {
1014 bool has_page_size_style = PrintingFrameHasPageSizeStyle( 999 bool has_page_size_style = PrintingFrameHasPageSizeStyle(
1015 print_preview_context_.frame(), 1000 print_preview_context_.frame(),
1016 print_preview_context_.total_page_count()); 1001 print_preview_context_.total_page_count());
1017 int dpi = GetDPI(&print_params); 1002 int dpi = GetDPI(&print_params);
1003
1004 using printing::ConvertUnit;
1005 using printing::kPointsPerInch;
1018 gfx::Rect printable_area_in_points( 1006 gfx::Rect printable_area_in_points(
1019 ConvertUnit(print_pages_params_->params.printable_area.x(), 1007 ConvertUnit(print_params.printable_area.x(), dpi, kPointsPerInch),
1020 dpi, printing::kPointsPerInch), 1008 ConvertUnit(print_params.printable_area.y(), dpi, kPointsPerInch),
1021 ConvertUnit(print_pages_params_->params.printable_area.y(), 1009 ConvertUnit(print_params.printable_area.width(), dpi, kPointsPerInch),
1022 dpi, printing::kPointsPerInch), 1010 ConvertUnit(print_params.printable_area.height(), dpi, kPointsPerInch));
1023 ConvertUnit(print_pages_params_->params.printable_area.width(),
1024 dpi, printing::kPointsPerInch),
1025 ConvertUnit(print_pages_params_->params.printable_area.height(),
1026 dpi, printing::kPointsPerInch));
1027 1011
1028 // Margins: Send default page layout to browser process. 1012 // Margins: Send default page layout to browser process.
1029 Send(new PrintHostMsg_DidGetDefaultPageLayout(routing_id(), 1013 Send(new PrintHostMsg_DidGetDefaultPageLayout(routing_id(),
1030 default_page_layout, 1014 default_page_layout,
1031 printable_area_in_points, 1015 printable_area_in_points,
1032 has_page_size_style)); 1016 has_page_size_style));
1033 } 1017 }
1034 1018
1035 PrintHostMsg_DidGetPreviewPageCount_Params params; 1019 PrintHostMsg_DidGetPreviewPageCount_Params params;
1036 params.page_count = print_preview_context_.total_page_count(); 1020 params.page_count = print_preview_context_.total_page_count();
1037 params.is_modifiable = print_preview_context_.IsModifiable(); 1021 params.is_modifiable = print_preview_context_.IsModifiable();
1038 params.document_cookie = print_pages_params_->params.document_cookie; 1022 params.document_cookie = print_params.document_cookie;
1039 params.preview_request_id = print_pages_params_->params.preview_request_id; 1023 params.preview_request_id = print_params.preview_request_id;
1040 params.clear_preview_data = print_preview_context_.generate_draft_pages(); 1024 params.clear_preview_data = print_preview_context_.generate_draft_pages();
1041 Send(new PrintHostMsg_DidGetPreviewPageCount(routing_id(), params)); 1025 Send(new PrintHostMsg_DidGetPreviewPageCount(routing_id(), params));
1042 if (CheckForCancel()) 1026 if (CheckForCancel())
1043 return false; 1027 return false;
1044 1028
1045 while (!print_preview_context_.IsFinalPageRendered()) { 1029 while (!print_preview_context_.IsFinalPageRendered()) {
1046 int page_number = print_preview_context_.GetNextPageNumber(); 1030 int page_number = print_preview_context_.GetNextPageNumber();
1047 DCHECK_GE(page_number, 0); 1031 DCHECK_GE(page_number, 0);
1048 if (!RenderPreviewPage(page_number)) 1032 if (!RenderPreviewPage(page_number, print_params))
1049 return false; 1033 return false;
1050 1034
1051 if (CheckForCancel()) 1035 if (CheckForCancel())
1052 return false; 1036 return false;
1053 1037
1054 // We must call PrepareFrameAndViewForPrint::FinishPrinting() (by way of 1038 // We must call PrepareFrameAndViewForPrint::FinishPrinting() (by way of
1055 // print_preview_context_.AllPagesRendered()) before calling 1039 // print_preview_context_.AllPagesRendered()) before calling
1056 // FinalizePrintReadyDocument() when printing a PDF because the plugin 1040 // FinalizePrintReadyDocument() when printing a PDF because the plugin
1057 // code does not generate output until we call FinishPrinting(). We do not 1041 // code does not generate output until we call FinishPrinting(). We do not
1058 // generate draft pages for PDFs, so IsFinalPageRendered() and 1042 // generate draft pages for PDFs, so IsFinalPageRendered() and
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
1109 if (!success) 1093 if (!success)
1110 LOG(ERROR) << "Failure in OnPrintingDone"; 1094 LOG(ERROR) << "Failure in OnPrintingDone";
1111 DidFinishPrinting(success ? OK : FAIL_PRINT); 1095 DidFinishPrinting(success ? OK : FAIL_PRINT);
1112 } 1096 }
1113 1097
1114 void PrintWebViewHelper::SetScriptedPrintBlocked(bool blocked) { 1098 void PrintWebViewHelper::SetScriptedPrintBlocked(bool blocked) {
1115 is_scripted_printing_blocked_ = blocked; 1099 is_scripted_printing_blocked_ = blocked;
1116 } 1100 }
1117 1101
1118 void PrintWebViewHelper::OnPrintNodeUnderContextMenu() { 1102 void PrintWebViewHelper::OnPrintNodeUnderContextMenu() {
1119 const WebNode& context_menu_node = render_view()->GetContextMenuNode(); 1103 PrintNode(render_view()->GetContextMenuNode());
1120 PrintNode(context_menu_node);
1121 } 1104 }
1122 1105
1123 void PrintWebViewHelper::OnInitiatePrintPreview() { 1106 void PrintWebViewHelper::OnInitiatePrintPreview() {
1124 DCHECK(is_preview_enabled_); 1107 DCHECK(is_preview_enabled_);
1125 WebFrame* frame; 1108 WebKit::WebFrame* frame;
1126 if (GetPrintFrame(&frame)) { 1109 if (GetPrintFrame(&frame)) {
1127 print_preview_context_.InitWithFrame(frame); 1110 print_preview_context_.InitWithFrame(frame);
1128 RequestPrintPreview(PRINT_PREVIEW_USER_INITIATED_ENTIRE_FRAME); 1111 RequestPrintPreview(PRINT_PREVIEW_USER_INITIATED_ENTIRE_FRAME);
1129 } else { 1112 } else {
1130 // This should not happen. Let's add a CHECK here to see how often this 1113 // This should not happen. Let's add a CHECK here to see how often this
1131 // gets hit. 1114 // gets hit.
1132 // TODO(thestig) Remove this later when we have sufficient usage of this 1115 // TODO(thestig) Remove this later when we have sufficient usage of this
1133 // code on the M19 stable channel. 1116 // code on the M19 stable channel.
1134 CHECK(false); 1117 CHECK(false);
1135 } 1118 }
1136 } 1119 }
1137 1120
1138 void PrintWebViewHelper::PrintNode(const WebNode& node) { 1121 void PrintWebViewHelper::PrintNode(const WebKit::WebNode& node) {
1139 if (node.isNull() || !node.document().frame()) { 1122 if (node.isNull() || !node.document().frame()) {
1140 // This can occur when the context menu refers to an invalid WebNode. 1123 // This can occur when the context menu refers to an invalid WebNode.
1141 // See http://crbug.com/100890#c17 for a repro case. 1124 // See http://crbug.com/100890#c17 for a repro case.
1142 return; 1125 return;
1143 } 1126 }
1144 1127
1145 if (print_node_in_progress_) { 1128 if (print_node_in_progress_) {
1146 // This can happen as a result of processing sync messages when printing 1129 // This can happen as a result of processing sync messages when printing
1147 // from ppapi plugins. It's a rare case, so its OK to just fail here. 1130 // from ppapi plugins. It's a rare case, so its OK to just fail here.
1148 // See http://crbug.com/159165. 1131 // See http://crbug.com/159165.
1149 return; 1132 return;
1150 } 1133 }
1151 1134
1152 print_node_in_progress_ = true; 1135 print_node_in_progress_ = true;
1153 1136
1154 // Make a copy of the node, in case RenderView::OnContextMenuClosed resets 1137 // Make a copy of the node, in case RenderView::OnContextMenuClosed resets
1155 // its |context_menu_node_|. 1138 // its |context_menu_node_|.
1156 if (is_preview_enabled_) { 1139 if (is_preview_enabled_) {
1157 print_preview_context_.InitWithNode(node); 1140 print_preview_context_.InitWithNode(node);
1158 RequestPrintPreview(PRINT_PREVIEW_USER_INITIATED_CONTEXT_NODE); 1141 RequestPrintPreview(PRINT_PREVIEW_USER_INITIATED_CONTEXT_NODE);
1159 } else { 1142 } else {
1160 WebNode duplicate_node(node); 1143 WebKit::WebNode duplicate_node(node);
1161 Print(duplicate_node.document().frame(), duplicate_node); 1144 Print(duplicate_node.document().frame(), duplicate_node);
1162 } 1145 }
1163 1146
1164 print_node_in_progress_ = false; 1147 print_node_in_progress_ = false;
1165 } 1148 }
1166 1149
1167 void PrintWebViewHelper::Print(WebKit::WebFrame* frame, 1150 void PrintWebViewHelper::Print(WebKit::WebFrame* frame,
1168 const WebKit::WebNode& node) { 1151 const WebKit::WebNode& node) {
1169 // If still not finished with earlier print request simply ignore. 1152 // If still not finished with earlier print request simply ignore.
1170 if (print_web_view_) 1153 if (print_web_view_)
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
1255 } 1238 }
1256 1239
1257 bool PrintWebViewHelper::CopyAndPrint(WebKit::WebFrame* web_frame) { 1240 bool PrintWebViewHelper::CopyAndPrint(WebKit::WebFrame* web_frame) {
1258 // Create a new WebView with the same settings as the current display one. 1241 // Create a new WebView with the same settings as the current display one.
1259 // Except that we disable javascript (don't want any active content running 1242 // Except that we disable javascript (don't want any active content running
1260 // on the page). 1243 // on the page).
1261 webkit_glue::WebPreferences prefs = render_view()->GetWebkitPreferences(); 1244 webkit_glue::WebPreferences prefs = render_view()->GetWebkitPreferences();
1262 prefs.javascript_enabled = false; 1245 prefs.javascript_enabled = false;
1263 prefs.java_enabled = false; 1246 prefs.java_enabled = false;
1264 1247
1265 print_web_view_ = WebView::create(this); 1248 print_web_view_ = WebKit::WebView::create(this);
1266 prefs.Apply(print_web_view_); 1249 prefs.Apply(print_web_view_);
1267 print_web_view_->initializeMainFrame(this); 1250 print_web_view_->initializeMainFrame(this);
1268 1251
1269 print_pages_params_->pages.clear(); // Print all pages of selection. 1252 print_pages_params_->pages.clear(); // Print all pages of selection.
1270 1253
1271 std::string html = web_frame->selectionAsMarkup().utf8(); 1254 std::string html = web_frame->selectionAsMarkup().utf8();
1272 std::string url_str = "data:text/html;charset=utf-8,"; 1255 std::string url_str = "data:text/html;charset=utf-8,";
1273 url_str.append(html); 1256 url_str.append(html);
1274 GURL url(url_str); 1257 GURL url(url_str);
1275 1258
1276 // When loading is done this will call didStopLoading() and that will do the 1259 // When loading is done this will call didStopLoading() and that will do the
1277 // actual printing. 1260 // actual printing.
1278 print_web_view_->mainFrame()->loadRequest(WebURLRequest(url)); 1261 print_web_view_->mainFrame()->loadRequest(WebKit::WebURLRequest(url));
1279 1262
1280 return true; 1263 return true;
1281 } 1264 }
1282 1265
1283 #if defined(OS_MACOSX) || defined(OS_WIN) 1266 #if defined(OS_MACOSX) || defined(OS_WIN)
1284 bool PrintWebViewHelper::PrintPages(WebFrame* frame, const WebNode& node) { 1267 bool PrintWebViewHelper::PrintPages(WebKit::WebFrame* frame,
1268 const WebKit::WebNode& node) {
1285 const PrintMsg_PrintPages_Params& params = *print_pages_params_; 1269 const PrintMsg_PrintPages_Params& params = *print_pages_params_;
1286 const PrintMsg_Print_Params& print_params = params.params; 1270 const PrintMsg_Print_Params& print_params = params.params;
1287 PrepareFrameAndViewForPrint prep_frame_view(print_params, frame, node); 1271 PrepareFrameAndViewForPrint prep_frame_view(print_params, frame, node);
1288 UpdateFrameAndViewFromCssPageLayout(frame, node, &prep_frame_view, 1272 UpdateFrameAndViewFromCssPageLayout(frame, node, &prep_frame_view,
1289 print_params, ignore_css_margins_); 1273 print_params, ignore_css_margins_);
1290 1274
1291 int page_count = prep_frame_view.GetExpectedPageCount(); 1275 int page_count = prep_frame_view.GetExpectedPageCount();
1292 if (!page_count) 1276 if (!page_count)
1293 return false; 1277 return false;
1294 Send(new PrintHostMsg_DidGetPrintedPagesCount(routing_id(), 1278 Send(new PrintHostMsg_DidGetPrintedPagesCount(routing_id(),
(...skipping 14 matching lines...) Expand all
1309 break; 1293 break;
1310 page_params.page_number = params.pages[i]; 1294 page_params.page_number = params.pages[i];
1311 PrintPageInternal(page_params, canvas_size, frame); 1295 PrintPageInternal(page_params, canvas_size, frame);
1312 } 1296 }
1313 } 1297 }
1314 return true; 1298 return true;
1315 } 1299 }
1316 #endif // OS_MACOSX || OS_WIN 1300 #endif // OS_MACOSX || OS_WIN
1317 1301
1318 void PrintWebViewHelper::didStopLoading() { 1302 void PrintWebViewHelper::didStopLoading() {
1319 PrintPages(print_web_view_->mainFrame(), WebNode()); 1303 PrintPages(print_web_view_->mainFrame(), WebKit::WebNode());
1320 } 1304 }
1321 1305
1322 // static - Not anonymous so that platform implementations can use it. 1306 // static - Not anonymous so that platform implementations can use it.
1323 void PrintWebViewHelper::ComputePageLayoutInPointsForCss( 1307 void PrintWebViewHelper::ComputePageLayoutInPointsForCss(
1324 WebFrame* frame, 1308 WebKit::WebFrame* frame,
1325 int page_index, 1309 int page_index,
1326 const PrintMsg_Print_Params& page_params, 1310 const PrintMsg_Print_Params& page_params,
1327 bool ignore_css_margins, 1311 bool ignore_css_margins,
1328 double* scale_factor, 1312 double* scale_factor,
1329 PageSizeMargins* page_layout_in_points) { 1313 printing::PageSizeMargins* page_layout_in_points) {
1330 PrintMsg_Print_Params params = CalculatePrintParamsForCss( 1314 PrintMsg_Print_Params params = CalculatePrintParamsForCss(
1331 frame, page_index, page_params, ignore_css_margins, 1315 frame, page_index, page_params, ignore_css_margins,
1332 page_params.print_scaling_option == 1316 page_params.print_scaling_option ==
1333 WebKit::WebPrintScalingOptionFitToPrintableArea, 1317 WebKit::WebPrintScalingOptionFitToPrintableArea,
1334 scale_factor); 1318 scale_factor);
1335 CalculatePageLayoutFromPrintParams(params, page_layout_in_points); 1319 CalculatePageLayoutFromPrintParams(params, page_layout_in_points);
1336 } 1320 }
1337 1321
1338 // static - Not anonymous so that platform implementations can use it. 1322 // static - Not anonymous so that platform implementations can use it.
1339 void PrintWebViewHelper::UpdateFrameAndViewFromCssPageLayout( 1323 void PrintWebViewHelper::UpdateFrameAndViewFromCssPageLayout(
1340 WebFrame* frame, 1324 WebKit::WebFrame* frame,
1341 const WebNode& node, 1325 const WebKit::WebNode& node,
1342 PrepareFrameAndViewForPrint* prepare, 1326 PrepareFrameAndViewForPrint* prepare,
1343 const PrintMsg_Print_Params& params, 1327 const PrintMsg_Print_Params& params,
1344 bool ignore_css_margins) { 1328 bool ignore_css_margins) {
1345 if (PrintingNodeOrPdfFrame(frame, node)) 1329 if (PrintingNodeOrPdfFrame(frame, node))
1346 return; 1330 return;
1347 bool fit_to_page = ignore_css_margins && 1331 bool fit_to_page = ignore_css_margins &&
1348 params.print_scaling_option == 1332 params.print_scaling_option ==
1349 WebKit::WebPrintScalingOptionFitToPrintableArea; 1333 WebKit::WebPrintScalingOptionFitToPrintableArea;
1350 PrintMsg_Print_Params print_params = CalculatePrintParamsForCss( 1334 PrintMsg_Print_Params print_params = CalculatePrintParamsForCss(
1351 frame, 0, params, ignore_css_margins, fit_to_page, NULL); 1335 frame, 0, params, ignore_css_margins, fit_to_page, NULL);
(...skipping 27 matching lines...) Expand all
1379 if (fit_to_paper_size) { 1363 if (fit_to_paper_size) {
1380 settings.params.print_scaling_option = 1364 settings.params.print_scaling_option =
1381 WebKit::WebPrintScalingOptionFitToPrintableArea; 1365 WebKit::WebPrintScalingOptionFitToPrintableArea;
1382 } 1366 }
1383 1367
1384 print_pages_params_.reset(new PrintMsg_PrintPages_Params(settings)); 1368 print_pages_params_.reset(new PrintMsg_PrintPages_Params(settings));
1385 return result; 1369 return result;
1386 } 1370 }
1387 1371
1388 bool PrintWebViewHelper::InitPrintSettingsAndPrepareFrame( 1372 bool PrintWebViewHelper::InitPrintSettingsAndPrepareFrame(
1389 WebKit::WebFrame* frame, const WebKit::WebNode& node, 1373 WebKit::WebFrame* frame,
1374 const WebKit::WebNode& node,
1390 scoped_ptr<PrepareFrameAndViewForPrint>* prepare) { 1375 scoped_ptr<PrepareFrameAndViewForPrint>* prepare) {
1391 DCHECK(frame); 1376 DCHECK(frame);
1392 1377
1393 bool fit_to_paper_size = !(PrintingNodeOrPdfFrame(frame, node)); 1378 bool fit_to_paper_size = !(PrintingNodeOrPdfFrame(frame, node));
1394 if (!InitPrintSettings(fit_to_paper_size)) { 1379 if (!InitPrintSettings(fit_to_paper_size)) {
1395 notify_browser_of_print_failure_ = false; 1380 notify_browser_of_print_failure_ = false;
1396 render_view()->RunModalAlertDialog( 1381 render_view()->RunModalAlertDialog(
1397 frame, 1382 frame,
1398 l10n_util::GetStringUTF16(IDS_PRINT_PREVIEW_INVALID_PRINTER_SETTINGS)); 1383 l10n_util::GetStringUTF16(IDS_PRINT_PREVIEW_INVALID_PRINTER_SETTINGS));
1399 return false; 1384 return false;
1400 } 1385 }
1401 1386
1402 DCHECK(!prepare->get()); 1387 DCHECK(!prepare->get());
1403 prepare->reset(new PrepareFrameAndViewForPrint(print_pages_params_->params, 1388 prepare->reset(new PrepareFrameAndViewForPrint(print_pages_params_->params,
1404 frame, node)); 1389 frame, node));
1405 UpdateFrameAndViewFromCssPageLayout(frame, node, prepare->get(), 1390 UpdateFrameAndViewFromCssPageLayout(frame, node, prepare->get(),
1406 print_pages_params_->params, 1391 print_pages_params_->params,
1407 ignore_css_margins_); 1392 ignore_css_margins_);
1408 Send(new PrintHostMsg_DidGetDocumentCookie( 1393 Send(new PrintHostMsg_DidGetDocumentCookie(
1409 routing_id(), print_pages_params_->params.document_cookie)); 1394 routing_id(), print_pages_params_->params.document_cookie));
1410 return true; 1395 return true;
1411 } 1396 }
1412 1397
1413 bool PrintWebViewHelper::UpdatePrintSettings( 1398 bool PrintWebViewHelper::UpdatePrintSettings(
1414 WebKit::WebFrame* frame, const WebKit::WebNode& node, 1399 WebKit::WebFrame* frame,
1400 const WebKit::WebNode& node,
1415 const DictionaryValue& passed_job_settings) { 1401 const DictionaryValue& passed_job_settings) {
1416 DCHECK(is_preview_enabled_); 1402 DCHECK(is_preview_enabled_);
1417 const DictionaryValue* job_settings = &passed_job_settings; 1403 const DictionaryValue* job_settings = &passed_job_settings;
1418 DictionaryValue modified_job_settings; 1404 DictionaryValue modified_job_settings;
1419 if (job_settings->empty()) { 1405 if (job_settings->empty()) {
1420 if (!print_for_preview_) 1406 if (!print_for_preview_)
1421 print_preview_context_.set_error(PREVIEW_ERROR_BAD_SETTING); 1407 print_preview_context_.set_error(PREVIEW_ERROR_BAD_SETTING);
1422 return false; 1408 return false;
1423 } 1409 }
1424 1410
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
1594 kMaxSecondsToIgnoreJavascriptInitiatedPrint); 1580 kMaxSecondsToIgnoreJavascriptInitiatedPrint);
1595 } 1581 }
1596 if (diff.InSeconds() < min_wait_seconds) { 1582 if (diff.InSeconds() < min_wait_seconds) {
1597 too_frequent = true; 1583 too_frequent = true;
1598 } 1584 }
1599 } 1585 }
1600 1586
1601 if (!too_frequent) 1587 if (!too_frequent)
1602 return false; 1588 return false;
1603 1589
1604 WebString message(WebString::fromUTF8( 1590 WebKit::WebString message(
1605 "Ignoring too frequent calls to print().")); 1591 WebKit::WebString::fromUTF8("Ignoring too frequent calls to print()."));
1606 frame->addMessageToConsole(WebConsoleMessage(WebConsoleMessage::LevelWarning, 1592 frame->addMessageToConsole(
1607 message)); 1593 WebKit::WebConsoleMessage(
1594 WebKit::WebConsoleMessage::LevelWarning, message));
1608 return true; 1595 return true;
1609 } 1596 }
1610 1597
1611 void PrintWebViewHelper::ResetScriptedPrintCount() { 1598 void PrintWebViewHelper::ResetScriptedPrintCount() {
1612 // Reset cancel counter on successful print. 1599 // Reset cancel counter on successful print.
1613 user_cancelled_scripted_print_count_ = 0; 1600 user_cancelled_scripted_print_count_ = 0;
1614 } 1601 }
1615 1602
1616 void PrintWebViewHelper::IncrementScriptedPrintCount() { 1603 void PrintWebViewHelper::IncrementScriptedPrintCount() {
1617 ++user_cancelled_scripted_print_count_; 1604 ++user_cancelled_scripted_print_count_;
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
1728 frame_ = web_node.document().frame(); 1715 frame_ = web_node.document().frame();
1729 node_ = web_node; 1716 node_ = web_node;
1730 } 1717 }
1731 1718
1732 void PrintWebViewHelper::PrintPreviewContext::OnPrintPreview() { 1719 void PrintWebViewHelper::PrintPreviewContext::OnPrintPreview() {
1733 DCHECK_EQ(INITIALIZED, state_); 1720 DCHECK_EQ(INITIALIZED, state_);
1734 ClearContext(); 1721 ClearContext();
1735 } 1722 }
1736 1723
1737 bool PrintWebViewHelper::PrintPreviewContext::CreatePreviewDocument( 1724 bool PrintWebViewHelper::PrintPreviewContext::CreatePreviewDocument(
1738 PrintMsg_Print_Params* print_params, 1725 const PrintMsg_Print_Params& print_params,
1739 const std::vector<int>& pages, 1726 const std::vector<int>& pages,
1740 bool ignore_css_margins) { 1727 bool ignore_css_margins) {
1741 DCHECK_EQ(INITIALIZED, state_); 1728 DCHECK_EQ(INITIALIZED, state_);
1742 state_ = RENDERING; 1729 state_ = RENDERING;
1743 1730
1744 metafile_.reset(new printing::PreviewMetafile); 1731 metafile_.reset(new printing::PreviewMetafile);
1745 if (!metafile_->Init()) { 1732 if (!metafile_->Init()) {
1746 set_error(PREVIEW_ERROR_METAFILE_INIT_FAILED); 1733 set_error(PREVIEW_ERROR_METAFILE_INIT_FAILED);
1747 LOG(ERROR) << "PreviewMetafile Init failed"; 1734 LOG(ERROR) << "PreviewMetafile Init failed";
1748 return false; 1735 return false;
1749 } 1736 }
1750 1737
1751 // Need to make sure old object gets destroyed first. 1738 // Need to make sure old object gets destroyed first.
1752 prep_frame_view_.reset(new PrepareFrameAndViewForPrint(*print_params, frame(), 1739 prep_frame_view_.reset(new PrepareFrameAndViewForPrint(print_params, frame(),
1753 node())); 1740 node()));
1754 UpdateFrameAndViewFromCssPageLayout(frame_, node_, prep_frame_view_.get(), 1741 UpdateFrameAndViewFromCssPageLayout(frame_, node_, prep_frame_view_.get(),
1755 *print_params, ignore_css_margins); 1742 print_params, ignore_css_margins);
1756
1757 print_params_.reset(new PrintMsg_Print_Params(*print_params));
1758 1743
1759 total_page_count_ = prep_frame_view_->GetExpectedPageCount(); 1744 total_page_count_ = prep_frame_view_->GetExpectedPageCount();
1760 if (total_page_count_ == 0) { 1745 if (total_page_count_ == 0) {
1761 LOG(ERROR) << "CreatePreviewDocument got 0 page count"; 1746 LOG(ERROR) << "CreatePreviewDocument got 0 page count";
1762 set_error(PREVIEW_ERROR_ZERO_PAGES); 1747 set_error(PREVIEW_ERROR_ZERO_PAGES);
1763 return false; 1748 return false;
1764 } 1749 }
1765 1750
1766 int selected_page_count = pages.size(); 1751 int selected_page_count = pages.size();
1767 current_page_index_ = 0; 1752 current_page_index_ = 0;
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
1898 1883
1899 bool PrintWebViewHelper::PrintPreviewContext::generate_draft_pages() const { 1884 bool PrintWebViewHelper::PrintPreviewContext::generate_draft_pages() const {
1900 return generate_draft_pages_; 1885 return generate_draft_pages_;
1901 } 1886 }
1902 1887
1903 printing::PreviewMetafile* PrintWebViewHelper::PrintPreviewContext::metafile() { 1888 printing::PreviewMetafile* PrintWebViewHelper::PrintPreviewContext::metafile() {
1904 DCHECK(IsRendering()); 1889 DCHECK(IsRendering());
1905 return metafile_.get(); 1890 return metafile_.get();
1906 } 1891 }
1907 1892
1908 const PrintMsg_Print_Params&
1909 PrintWebViewHelper::PrintPreviewContext::print_params() const {
1910 DCHECK(state_ != UNINITIALIZED);
1911 return *print_params_;
1912 }
1913
1914 int PrintWebViewHelper::PrintPreviewContext::last_error() const { 1893 int PrintWebViewHelper::PrintPreviewContext::last_error() const {
1915 return error_; 1894 return error_;
1916 } 1895 }
1917 1896
1918 gfx::Size PrintWebViewHelper::PrintPreviewContext::GetPrintCanvasSize() const { 1897 gfx::Size PrintWebViewHelper::PrintPreviewContext::GetPrintCanvasSize() const {
1919 DCHECK(IsRendering()); 1898 DCHECK(IsRendering());
1920 return prep_frame_view_->GetPrintCanvasSize(); 1899 return prep_frame_view_->GetPrintCanvasSize();
1921 } 1900 }
1922 1901
1923 void PrintWebViewHelper::PrintPreviewContext::ClearContext() { 1902 void PrintWebViewHelper::PrintPreviewContext::ClearContext() {
1924 prep_frame_view_.reset(); 1903 prep_frame_view_.reset();
1925 metafile_.reset(); 1904 metafile_.reset();
1926 pages_to_render_.clear(); 1905 pages_to_render_.clear();
1927 error_ = PREVIEW_ERROR_NONE; 1906 error_ = PREVIEW_ERROR_NONE;
1928 } 1907 }
OLDNEW
« no previous file with comments | « chrome/renderer/print_web_view_helper.h ('k') | chrome/renderer/print_web_view_helper_linux.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698