summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/print_web_view_helper.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/renderer/print_web_view_helper.h')
-rw-r--r--chrome/renderer/print_web_view_helper.h52
1 files changed, 42 insertions, 10 deletions
diff --git a/chrome/renderer/print_web_view_helper.h b/chrome/renderer/print_web_view_helper.h
index 24de40e..984a52c 100644
--- a/chrome/renderer/print_web_view_helper.h
+++ b/chrome/renderer/print_web_view_helper.h
@@ -117,6 +117,19 @@ class PrintWebViewHelper
// Print the document with the print preview frame/node.
void OnPrintForSystemDialog();
+ // Get |page_size| and |content_area| information from
+ // |page_layout_in_points|.
+ void GetPageSizeAndContentAreaFromPageLayout(
+ const printing::PageSizeMargins& page_layout_in_points,
+ gfx::Size* page_size,
+ gfx::Rect* content_area);
+
+ // Update |ignore_css_margins_| based on settings.
+ void UpdateFrameMarginsCssInfo(const base::DictionaryValue& settings);
+
+ // Returns true if the current destination printer is PRINT_TO_PDF.
+ bool IsPrintToPdfRequested(const base::DictionaryValue& settings);
+
// Initiate print preview.
void OnInitiatePrintPreview();
@@ -216,14 +229,18 @@ class PrintWebViewHelper
// |metafile| or a new one. In either case, the caller owns both |metafile|
// and the result.
printing::Metafile* RenderPage(const PrintMsg_Print_Params& params,
- float* scale_factor, int page_number,
- bool is_preview, WebKit::WebFrame* frame,
- printing::Metafile* metafile);
+ int page_number,
+ WebKit::WebFrame* frame,
+ bool is_preview,
+ printing::Metafile* metafile,
+ double* scale_factor,
+ gfx::Size* page_size_in_dpi,
+ gfx::Rect* content_area_in_dpi);
#elif defined(OS_MACOSX)
- void RenderPage(const gfx::Size& page_size, const gfx::Rect& content_area,
- const float& scale_factor, int page_number,
+ void RenderPage(const PrintMsg_Print_Params& params, int page_number,
WebKit::WebFrame* frame, bool is_preview,
- printing::Metafile* metafile);
+ printing::Metafile* metafile, gfx::Size* page_size,
+ gfx::Rect* content_rect);
#elif defined(OS_POSIX)
bool RenderPages(const PrintMsg_PrintPages_Params& params,
WebKit::WebFrame* frame, const WebKit::WebNode& node,
@@ -238,17 +255,25 @@ class PrintWebViewHelper
bool CopyMetafileDataToSharedMem(printing::Metafile* metafile,
base::SharedMemoryHandle* shared_mem_handle);
- static void GetPageSizeAndMarginsInPoints(
+ // Helper method to get page layout in points and fit to page if needed.
+ static void ComputePageLayoutInPointsForCss(
WebKit::WebFrame* frame,
int page_index,
const PrintMsg_Print_Params& default_params,
+ bool ignore_css_margins,
+ bool fit_to_page,
+ double* scale_factor,
printing::PageSizeMargins* page_layout_in_points);
- static void UpdatePrintableSizeInPrintParameters(
+ // Prepare the frame and view for print and then call this function to honor
+ // the CSS page layout information.
+ static void UpdateFrameAndViewFromCssPageLayout(
WebKit::WebFrame* frame,
const WebKit::WebNode& node,
PrepareFrameAndViewForPrint* prepare,
- PrintMsg_Print_Params* params);
+ const PrintMsg_Print_Params& params,
+ bool ignore_css_margins,
+ bool fit_to_page);
// Given the |device| and |canvas| to draw on, prints the appropriate headers
// and footers using strings from |header_footer_info| on to the canvas.
@@ -299,6 +324,11 @@ class PrintWebViewHelper
scoped_ptr<PrintMsg_PrintPages_Params> print_pages_params_;
bool is_preview_enabled_;
bool is_print_ready_metafile_sent_;
+ bool ignore_css_margins_;
+
+ // True if we need to auto fit to page else false.
+ // NOTE: When we print to pdf, we don't fit to page.
+ bool fit_to_page_;
// Used for scripted initiated printing blocking.
base::Time last_cancelled_script_print_;
@@ -343,7 +373,9 @@ class PrintWebViewHelper
// Create the print preview document. |pages| is empty to print all pages.
bool CreatePreviewDocument(PrintMsg_Print_Params* params,
- const std::vector<int>& pages);
+ const std::vector<int>& pages,
+ bool ignore_css_margins,
+ bool fit_to_page);
// Called after a page gets rendered. |page_time| is how long the
// rendering took.