Chromium Code Reviews| Index: chrome/renderer/print_web_view_helper.cc |
| =================================================================== |
| --- chrome/renderer/print_web_view_helper.cc (revision 70859) |
| +++ chrome/renderer/print_web_view_helper.cc (working copy) |
| @@ -14,7 +14,10 @@ |
| #include "grit/generated_resources.h" |
| #include "printing/units.h" |
| #include "third_party/WebKit/WebKit/chromium/public/WebConsoleMessage.h" |
| +#include "third_party/WebKit/WebKit/chromium/public/WebDocument.h" |
| +#include "third_party/WebKit/WebKit/chromium/public/WebElement.h" |
| #include "third_party/WebKit/WebKit/chromium/public/WebFrame.h" |
| +#include "third_party/WebKit/WebKit/chromium/public/WebNode.h" |
| #include "third_party/WebKit/WebKit/chromium/public/WebRect.h" |
| #include "third_party/WebKit/WebKit/chromium/public/WebScreenInfo.h" |
| #include "third_party/WebKit/WebKit/chromium/public/WebSize.h" |
| @@ -28,6 +31,7 @@ |
| using printing::ConvertUnitDouble; |
| using WebKit::WebConsoleMessage; |
| using WebKit::WebFrame; |
| +using WebKit::WebPoint; |
|
viettrungluu
2011/01/13 01:04:40
To be consistent with the file, maybe you should a
|
| using WebKit::WebRect; |
| using WebKit::WebSize; |
| using WebKit::WebScreenInfo; |
| @@ -38,6 +42,7 @@ |
| PrepareFrameAndViewForPrint::PrepareFrameAndViewForPrint( |
| const ViewMsg_Print_Params& print_params, |
| WebFrame* frame, |
| + WebKit::WebNode* node, |
| WebView* web_view) |
| : frame_(frame), web_view_(web_view), expected_pages_count_(0), |
| use_browser_overlays_(true) { |
| @@ -69,7 +74,9 @@ |
| web_view->resize(print_layout_size); |
| expected_pages_count_ = frame->printBegin( |
| - print_canvas_size_, static_cast<int>(print_params.dpi), |
| + print_canvas_size_, |
| + node, |
| + static_cast<int>(print_params.dpi), |
| &use_browser_overlays_); |
| } |
| @@ -90,6 +97,19 @@ |
| void PrintWebViewHelper::Print(WebFrame* frame, |
| bool script_initiated, |
| bool is_preview) { |
| + Print(frame, NULL, script_initiated, is_preview); |
| +} |
| + |
| +void PrintWebViewHelper::Print(WebKit::WebNode* node, |
| + bool script_initiated, |
| + bool is_preview) { |
| + Print(node->document().frame(), node, script_initiated, is_preview); |
| +} |
| + |
| +void PrintWebViewHelper::Print(WebKit::WebFrame* frame, |
| + WebKit::WebNode* node, |
| + bool script_initiated, |
| + bool is_preview) { |
| const int kMinSecondsToIgnoreJavascriptInitiatedPrint = 2; |
| const int kMaxSecondsToIgnoreJavascriptInitiatedPrint = 2 * 60; // 2 Minutes. |
| @@ -122,7 +142,7 @@ |
| is_preview_ = is_preview; |
| // Initialize print settings. |
| - if (!InitPrintSettings(frame)) |
| + if (!InitPrintSettings(frame, node)) |
| return; // Failed to init print page settings. |
| int expected_pages_count = 0; |
| @@ -132,7 +152,7 @@ |
| // a scope for itself (see comments on PrepareFrameAndViewForPrint). |
| { |
| PrepareFrameAndViewForPrint prep_frame_view( |
| - (*print_pages_params_).params, frame, frame->view()); |
| + (*print_pages_params_).params, frame, node, frame->view()); |
| expected_pages_count = prep_frame_view.GetExpectedPageCount(); |
| if (expected_pages_count) |
| use_browser_overlays = prep_frame_view.ShouldUseBrowserOverlays(); |
| @@ -153,7 +173,7 @@ |
| if (is_preview_) |
| RenderPagesForPreview(frame); |
| else |
| - RenderPagesForPrint(frame); |
| + RenderPagesForPrint(frame, node); |
| // Reset cancel counter on first successful print. |
| user_cancelled_scripted_print_count_ = 0; |
| @@ -222,12 +242,14 @@ |
| #if defined(OS_MACOSX) || defined(OS_WIN) |
| void PrintWebViewHelper::PrintPages(const ViewMsg_PrintPages_Params& params, |
| - WebFrame* frame) { |
| + WebFrame* frame, |
| + WebKit::WebNode* node) { |
| ViewMsg_Print_Params printParams = params.params; |
| - UpdatePrintableSizeInPrintParameters(frame, &printParams); |
| + UpdatePrintableSizeInPrintParameters(frame, node, &printParams); |
| PrepareFrameAndViewForPrint prep_frame_view(printParams, |
| frame, |
| + node, |
| frame->view()); |
| int page_count = prep_frame_view.GetExpectedPageCount(); |
| @@ -266,7 +288,7 @@ |
| void PrintWebViewHelper::didStopLoading() { |
| DCHECK(print_pages_params_.get() != NULL); |
| - PrintPages(*print_pages_params_.get(), print_web_view_->mainFrame()); |
| + PrintPages(*print_pages_params_.get(), print_web_view_->mainFrame(), NULL); |
| } |
| void PrintWebViewHelper::GetPageSizeAndMarginsInPoints( |
| @@ -351,14 +373,16 @@ |
| } |
| void PrintWebViewHelper::UpdatePrintableSizeInPrintParameters( |
| - WebFrame* frame, ViewMsg_Print_Params* params) { |
| + WebFrame* frame, |
| + WebKit::WebNode* node, |
| + ViewMsg_Print_Params* params) { |
| double content_width_in_points; |
| double content_height_in_points; |
| double margin_top_in_points; |
| double margin_right_in_points; |
| double margin_bottom_in_points; |
| double margin_left_in_points; |
| - PrepareFrameAndViewForPrint prepare(*params, frame, frame->view()); |
| + PrepareFrameAndViewForPrint prepare(*params, frame, node, frame->view()); |
| PrintWebViewHelper::GetPageSizeAndMarginsInPoints(frame, 0, *params, |
| &content_width_in_points, &content_height_in_points, |
| &margin_top_in_points, &margin_right_in_points, |
| @@ -384,9 +408,10 @@ |
| params->margin_left = static_cast<int>(margin_left_in_points); |
| } |
| -bool PrintWebViewHelper::InitPrintSettings(WebFrame* frame) { |
| +bool PrintWebViewHelper::InitPrintSettings(WebFrame* frame, |
| + WebKit::WebNode* node) { |
| ViewMsg_PrintPages_Params settings; |
| - if (GetDefaultPrintSettings(frame, &settings.params)) { |
| + if (GetDefaultPrintSettings(frame, node, &settings.params)) { |
| print_pages_params_.reset(new ViewMsg_PrintPages_Params(settings)); |
| print_pages_params_->pages.clear(); |
| return true; |
| @@ -395,7 +420,9 @@ |
| } |
| bool PrintWebViewHelper::GetDefaultPrintSettings( |
| - WebFrame* frame, ViewMsg_Print_Params* params) { |
| + WebFrame* frame, |
| + WebKit::WebNode* node, |
| + ViewMsg_Print_Params* params) { |
| IPC::SyncMessage* msg = |
| new ViewHostMsg_GetDefaultPrintSettings(routing_id(), params); |
| if (!Send(msg)) { |
| @@ -416,7 +443,7 @@ |
| NOTREACHED(); |
| return false; |
| } |
| - UpdatePrintableSizeInPrintParameters(frame, params); |
| + UpdatePrintableSizeInPrintParameters(frame, node, params); |
| return true; |
| } |
| @@ -453,13 +480,14 @@ |
| return (print_settings.params.dpi && print_settings.params.document_cookie); |
| } |
|
viettrungluu
2011/01/13 01:04:40
Could you change that to |WebFrame* frame| while y
|
| -void PrintWebViewHelper::RenderPagesForPrint(WebFrame *frame) { |
| +void PrintWebViewHelper::RenderPagesForPrint(WebFrame *frame, |
| + WebKit::WebNode* node) { |
| ViewMsg_PrintPages_Params print_settings = *print_pages_params_; |
| if (print_settings.params.selection_only) { |
| CopyAndPrint(frame); |
| } else { |
| // TODO: Always copy before printing. |
| - PrintPages(print_settings, frame); |
| + PrintPages(print_settings, frame, node); |
| } |
| } |