Chromium Code Reviews| Index: chrome/renderer/print_web_view_helper.cc |
| diff --git a/chrome/renderer/print_web_view_helper.cc b/chrome/renderer/print_web_view_helper.cc |
| index 5ca14e6ec35946995cad714b7eae8e6bb7c5a55b..7a0fb3d355f5f75415bc0c34ab2951e55a8368ca 100644 |
| --- a/chrome/renderer/print_web_view_helper.cc |
| +++ b/chrome/renderer/print_web_view_helper.cc |
| @@ -139,7 +139,9 @@ bool PrintWebViewHelper::OnMessageReceived(const IPC::Message& message) { |
| return handled; |
| } |
| -void PrintWebViewHelper::OnPrintForPrintPreview() { |
| +void PrintWebViewHelper::OnPrintForPrintPreview( |
| + const DictionaryValue& job_settings) { |
| +#if defined(OS_MACOSX) |
| if (!render_view()->webview()) |
| return; |
| WebFrame* main_frame = render_view()->webview()->mainFrame(); |
| @@ -155,7 +157,11 @@ void PrintWebViewHelper::OnPrintForPrintPreview() { |
| return; |
| } |
| - PrintNode(&element, false, false); |
| + InitPrintSettings(element.document().frame(), &element, |
|
Lei Zhang
2011/03/03 00:22:44
What happens when InitPrintSettings() or UpdatePri
kmadhusu
2011/03/04 19:39:02
Fixed.
|
| + PrintWebViewHelper::DEFAULT); |
| + UpdatePrintSettings(job_settings); |
| + PrintForPrintPreview(element.document().frame(), &element); |
| +#endif |
| } |
| void PrintWebViewHelper::OnPrint(bool is_preview) { |
| @@ -197,6 +203,23 @@ void PrintWebViewHelper::OnPrintNodeUnderContextMenu() { |
| PrintNode(&context_menu_node, false, false); |
| } |
| +void PrintWebViewHelper::PrintForPrintPreview(WebKit::WebFrame* frame, |
| + WebNode* node) { |
| + // If still not finished with earlier print request simply ignore. |
| + if (print_web_view_) |
| + return; |
| + |
| + // Initialize print params with current print settings. |
| + if (!InitPrintSettings(frame, node, PrintWebViewHelper::CURRENT)) { |
|
Lei Zhang
2011/03/03 00:22:44
Didn't we just call InitPrintSettings() and Update
kmadhusu
2011/03/04 19:39:02
Removed this function. Calling RenderPagesForPrint
|
| + NOTREACHED(); |
| + DidFinishPrinting(true); // Release all printing resources. |
| + return; // Failed to init print page settings. |
| + } |
| + |
| + // Render Pages for printing. |
| + RenderPagesForPrint(frame, node); |
| +} |
| + |
| void PrintWebViewHelper::Print(WebKit::WebFrame* frame, |
| WebNode* node, |
| bool script_initiated, |
| @@ -233,7 +256,7 @@ void PrintWebViewHelper::Print(WebKit::WebFrame* frame, |
| is_preview_ = is_preview; |
| // Initialize print settings. |
| - if (!InitPrintSettings(frame, node)) |
| + if (!InitPrintSettings(frame, node, PrintWebViewHelper::DEFAULT)) |
| return; // Failed to init print page settings. |
| int expected_pages_count = 0; |
| @@ -489,9 +512,10 @@ void PrintWebViewHelper::UpdatePrintableSizeInPrintParameters( |
| } |
| bool PrintWebViewHelper::InitPrintSettings(WebFrame* frame, |
| - WebNode* node) { |
| + WebNode* node, |
| + GetSettingsParam setting_type) { |
| ViewMsg_PrintPages_Params settings; |
| - if (GetDefaultPrintSettings(frame, node, &settings.params)) { |
| + if (GetPrintSettings(frame, node, setting_type, &settings.params)) { |
| print_pages_params_.reset(new ViewMsg_PrintPages_Params(settings)); |
| print_pages_params_->pages.clear(); |
| return true; |
| @@ -499,12 +523,33 @@ bool PrintWebViewHelper::InitPrintSettings(WebFrame* frame, |
| return false; |
| } |
| -bool PrintWebViewHelper::GetDefaultPrintSettings( |
| - WebFrame* frame, |
| - WebNode* node, |
| - ViewMsg_Print_Params* params) { |
| - if (!render_view()->Send(new ViewHostMsg_GetDefaultPrintSettings( |
| - render_view()->routing_id(), params))) { |
| +bool PrintWebViewHelper::UpdatePrintSettings( |
| + const DictionaryValue& job_settings) { |
| + ViewMsg_PrintPages_Params settings; |
| + IPC::SyncMessage* msg = new ViewHostMsg_UpdatePrintSettings( |
| + render_view()->routing_id(), |
| + (*print_pages_params_).params.document_cookie, |
| + job_settings, &settings.params); |
| + if (!render_view()->Send(msg)) { |
| + NOTREACHED(); |
| + return false; |
| + } |
| + print_pages_params_.reset(new ViewMsg_PrintPages_Params(settings)); |
| + return true; |
| +} |
| + |
| +bool PrintWebViewHelper::GetPrintSettings(WebFrame* frame, WebNode* node, |
| + GetSettingsParam setting_type, ViewMsg_Print_Params* params) { |
| + IPC::SyncMessage* msg = NULL; |
| + if (setting_type == CURRENT) { |
| + msg = new ViewHostMsg_GetCurrentPrintSettings(render_view()->routing_id(), |
| + (*print_pages_params_).params.document_cookie, |
| + params); |
| + } else { |
| + msg = new ViewHostMsg_GetDefaultPrintSettings(render_view()->routing_id(), |
| + params); |
| + } |
| + if (!render_view()->Send(msg)) { |
| NOTREACHED(); |
| return false; |
| } |