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

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

Issue 8585017: PrintPreview: Honor the print media page size and margin values. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix conflicts Created 9 years 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
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 #ifndef CHROME_RENDERER_PRINT_WEB_VIEW_HELPER_H_ 5 #ifndef CHROME_RENDERER_PRINT_WEB_VIEW_HELPER_H_
6 #define CHROME_RENDERER_PRINT_WEB_VIEW_HELPER_H_ 6 #define CHROME_RENDERER_PRINT_WEB_VIEW_HELPER_H_
7 #pragma once 7 #pragma once
8 8
9 #include <vector> 9 #include <vector>
10 10
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 virtual void PrintPage(WebKit::WebFrame* frame) OVERRIDE; 110 virtual void PrintPage(WebKit::WebFrame* frame) OVERRIDE;
111 111
112 // Message handlers --------------------------------------------------------- 112 // Message handlers ---------------------------------------------------------
113 113
114 // Print the document. 114 // Print the document.
115 void OnPrintPages(); 115 void OnPrintPages();
116 116
117 // Print the document with the print preview frame/node. 117 // Print the document with the print preview frame/node.
118 void OnPrintForSystemDialog(); 118 void OnPrintForSystemDialog();
119 119
120 // Update |page_size| and |content_area| information from
121 // |page_layout_in_points|.
122 void UpdatePageSizeAndContentAreaFromPageLayout(
vandebo (ex-Chrome) 2011/12/14 19:05:38 Should this be GetPageSize... instead of UpdatePag
kmadhusu 2011/12/19 09:52:19 Done.
123 const printing::PageSizeMargins& page_layout_in_points,
124 gfx::Size* page_size,
125 gfx::Rect* content_area);
126
127 // Update |ignore_css_margins_| based on settings.
128 void UpdateFrameMarginsCssInfo(const base::DictionaryValue& settings);
129
130 // Returns true if the current destination printer is PRINT_TO_PDF.
131 bool IsPrintToPdfRequested(const base::DictionaryValue& settings);
132
120 // Initiate print preview. 133 // Initiate print preview.
121 void OnInitiatePrintPreview(); 134 void OnInitiatePrintPreview();
122 135
123 // Start the process of generating a print preview using |settings|. 136 // Start the process of generating a print preview using |settings|.
124 void OnPrintPreview(const base::DictionaryValue& settings); 137 void OnPrintPreview(const base::DictionaryValue& settings);
125 138
126 // Initialize the print preview document. 139 // Initialize the print preview document.
127 bool CreatePreviewDocument(); 140 bool CreatePreviewDocument();
128 141
129 // Renders a print preview page. |page_number| is 0-based. 142 // Renders a print preview page. |page_number| is 0-based.
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 bool RenderPagesForPrint(WebKit::WebFrame* frame, 222 bool RenderPagesForPrint(WebKit::WebFrame* frame,
210 const WebKit::WebNode& node); 223 const WebKit::WebNode& node);
211 224
212 // Platform specific helper function for rendering page(s) to |metafile|. 225 // Platform specific helper function for rendering page(s) to |metafile|.
213 #if defined(OS_WIN) 226 #if defined(OS_WIN)
214 // Because of mixed support for alpha channels on printers, this method may 227 // Because of mixed support for alpha channels on printers, this method may
215 // need to create a new metafile. The result may be either the passed 228 // need to create a new metafile. The result may be either the passed
216 // |metafile| or a new one. In either case, the caller owns both |metafile| 229 // |metafile| or a new one. In either case, the caller owns both |metafile|
217 // and the result. 230 // and the result.
218 printing::Metafile* RenderPage(const PrintMsg_Print_Params& params, 231 printing::Metafile* RenderPage(const PrintMsg_Print_Params& params,
219 float* scale_factor, int page_number, 232 double* scale_factor, int page_number,
220 bool is_preview, WebKit::WebFrame* frame, 233 bool is_preview, WebKit::WebFrame* frame,
221 printing::Metafile* metafile); 234 printing::Metafile* metafile);
222 #elif defined(OS_MACOSX) 235 #elif defined(OS_MACOSX)
223 void RenderPage(const gfx::Size& page_size, const gfx::Rect& content_area, 236 void RenderPage(const gfx::Size& page_size, const gfx::Rect& content_area,
224 const float& scale_factor, int page_number, 237 const double& scale_factor, int page_number,
225 WebKit::WebFrame* frame, bool is_preview, 238 WebKit::WebFrame* frame, bool is_preview,
226 printing::Metafile* metafile); 239 printing::Metafile* metafile,
240 printing::PageSizeMargins page_layout_in_points);
227 #elif defined(OS_POSIX) 241 #elif defined(OS_POSIX)
228 bool RenderPages(const PrintMsg_PrintPages_Params& params, 242 bool RenderPages(const PrintMsg_PrintPages_Params& params,
229 WebKit::WebFrame* frame, const WebKit::WebNode& node, 243 WebKit::WebFrame* frame, const WebKit::WebNode& node,
230 int* page_count, PrepareFrameAndViewForPrint* prepare, 244 int* page_count, PrepareFrameAndViewForPrint* prepare,
231 printing::Metafile* metafile); 245 printing::Metafile* metafile);
232 #endif // defined(OS_WIN) 246 #endif // defined(OS_WIN)
233 247
234 // Helper methods ----------------------------------------------------------- 248 // Helper methods -----------------------------------------------------------
235 249
236 bool CopyAndPrint(WebKit::WebFrame* web_frame); 250 bool CopyAndPrint(WebKit::WebFrame* web_frame);
237 251
238 bool CopyMetafileDataToSharedMem(printing::Metafile* metafile, 252 bool CopyMetafileDataToSharedMem(printing::Metafile* metafile,
239 base::SharedMemoryHandle* shared_mem_handle); 253 base::SharedMemoryHandle* shared_mem_handle);
240 254
255 // Helper method to get page layout in points and fit to page if needed.
241 static void GetPageSizeAndMarginsInPoints( 256 static void GetPageSizeAndMarginsInPoints(
vandebo (ex-Chrome) 2011/12/14 19:05:38 Should this name change? ComputePageLayout?
kmadhusu 2011/12/19 09:52:19 Done.
242 WebKit::WebFrame* frame, 257 WebKit::WebFrame* frame,
243 int page_index, 258 int page_index,
244 const PrintMsg_Print_Params& default_params, 259 const PrintMsg_Print_Params& default_params,
260 bool ignore_css_margins,
261 bool fit_to_page,
262 double* scale_factor,
245 printing::PageSizeMargins* page_layout_in_points); 263 printing::PageSizeMargins* page_layout_in_points);
246 264
vandebo (ex-Chrome) 2011/12/14 19:05:38 Add a comment here saying that the page must be pr
kmadhusu 2011/12/19 09:52:19 Done.
247 static void UpdatePrintableSizeInPrintParameters( 265 static void UpdatePageSizeAndMarginsInFrameAndView(
vandebo (ex-Chrome) 2011/12/14 19:05:38 I think a still better name would be "UpdateFrameA
kmadhusu 2011/12/19 09:52:19 UpdatePageSizeAndMarginsInFrameAndView => UpdateF
248 WebKit::WebFrame* frame, 266 WebKit::WebFrame* frame,
249 const WebKit::WebNode& node, 267 const WebKit::WebNode& node,
250 PrepareFrameAndViewForPrint* prepare, 268 PrepareFrameAndViewForPrint* prepare,
251 PrintMsg_Print_Params* params); 269 const PrintMsg_Print_Params& params,
270 bool ignore_css_margins,
271 bool fit_to_page);
252 272
253 // Given the |device| and |canvas| to draw on, prints the appropriate headers 273 // Given the |device| and |canvas| to draw on, prints the appropriate headers
254 // and footers using strings from |header_footer_info| on to the canvas. 274 // and footers using strings from |header_footer_info| on to the canvas.
255 static void PrintHeaderAndFooter( 275 static void PrintHeaderAndFooter(
256 WebKit::WebCanvas* canvas, 276 WebKit::WebCanvas* canvas,
257 int page_number, 277 int page_number,
258 int total_pages, 278 int total_pages,
259 float webkit_scale_factor, 279 float webkit_scale_factor,
260 const printing::PageSizeMargins& page_layout_in_points, 280 const printing::PageSizeMargins& page_layout_in_points,
261 const base::DictionaryValue& header_footer_info); 281 const base::DictionaryValue& header_footer_info);
(...skipping 30 matching lines...) Expand all
292 // For a valid |page_number| with modifiable content, 312 // For a valid |page_number| with modifiable content,
293 // |metafile| is the rendered page. Otherwise |metafile| is NULL. 313 // |metafile| is the rendered page. Otherwise |metafile| is NULL.
294 // Returns true if print preview should continue, false on failure. 314 // Returns true if print preview should continue, false on failure.
295 bool PreviewPageRendered(int page_number, printing::Metafile* metafile); 315 bool PreviewPageRendered(int page_number, printing::Metafile* metafile);
296 316
297 WebKit::WebView* print_web_view_; 317 WebKit::WebView* print_web_view_;
298 318
299 scoped_ptr<PrintMsg_PrintPages_Params> print_pages_params_; 319 scoped_ptr<PrintMsg_PrintPages_Params> print_pages_params_;
300 bool is_preview_enabled_; 320 bool is_preview_enabled_;
301 bool is_print_ready_metafile_sent_; 321 bool is_print_ready_metafile_sent_;
322 bool ignore_css_margins_;
vandebo (ex-Chrome) 2011/12/14 19:05:38 Should these two be in print_preview_context_ ? T
kmadhusu 2011/12/19 09:52:19 I prefer to declare these variables here. During t
323
324 // True if we need to auto fit to page else false.
325 // NOTE: When we print to pdf, we don't fit to page.
326 bool fit_to_page_;
302 327
303 // Used for scripted initiated printing blocking. 328 // Used for scripted initiated printing blocking.
304 base::Time last_cancelled_script_print_; 329 base::Time last_cancelled_script_print_;
305 int user_cancelled_scripted_print_count_; 330 int user_cancelled_scripted_print_count_;
306 331
307 // Let the browser process know of a printing failure. Only set to false when 332 // Let the browser process know of a printing failure. Only set to false when
308 // the failure came from the browser in the first place. 333 // the failure came from the browser in the first place.
309 bool notify_browser_of_print_failure_; 334 bool notify_browser_of_print_failure_;
310 335
311 scoped_ptr<PrintMsg_PrintPages_Params> old_print_pages_params_; 336 scoped_ptr<PrintMsg_PrintPages_Params> old_print_pages_params_;
(...skipping 24 matching lines...) Expand all
336 // Initializes the print preview context. Need to be called to set 361 // Initializes the print preview context. Need to be called to set
337 // the |web_frame| / |web_node| to generate the print preview for. 362 // the |web_frame| / |web_node| to generate the print preview for.
338 void InitWithFrame(WebKit::WebFrame* web_frame); 363 void InitWithFrame(WebKit::WebFrame* web_frame);
339 void InitWithNode(const WebKit::WebNode& web_node); 364 void InitWithNode(const WebKit::WebNode& web_node);
340 365
341 // Does bookkeeping at the beginning of print preview. 366 // Does bookkeeping at the beginning of print preview.
342 void OnPrintPreview(); 367 void OnPrintPreview();
343 368
344 // Create the print preview document. |pages| is empty to print all pages. 369 // Create the print preview document. |pages| is empty to print all pages.
345 bool CreatePreviewDocument(PrintMsg_Print_Params* params, 370 bool CreatePreviewDocument(PrintMsg_Print_Params* params,
346 const std::vector<int>& pages); 371 const std::vector<int>& pages,
372 bool ignore_css_margins,
373 bool fit_to_page);
347 374
348 // Called after a page gets rendered. |page_time| is how long the 375 // Called after a page gets rendered. |page_time| is how long the
349 // rendering took. 376 // rendering took.
350 void RenderedPreviewPage(const base::TimeDelta& page_time); 377 void RenderedPreviewPage(const base::TimeDelta& page_time);
351 378
352 // Updates the print preview context when the required pages are rendered. 379 // Updates the print preview context when the required pages are rendered.
353 void AllPagesRendered(); 380 void AllPagesRendered();
354 381
355 // Finalizes the print ready preview document. 382 // Finalizes the print ready preview document.
356 void FinalizePrintReadyDocument(); 383 void FinalizePrintReadyDocument();
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
423 450
424 State state_; 451 State state_;
425 }; 452 };
426 453
427 PrintPreviewContext print_preview_context_; 454 PrintPreviewContext print_preview_context_;
428 455
429 DISALLOW_COPY_AND_ASSIGN(PrintWebViewHelper); 456 DISALLOW_COPY_AND_ASSIGN(PrintWebViewHelper);
430 }; 457 };
431 458
432 #endif // CHROME_RENDERER_PRINT_WEB_VIEW_HELPER_H_ 459 #endif // CHROME_RENDERER_PRINT_WEB_VIEW_HELPER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698