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..658d540c99bf53d08fe09258b8b10712878ce804 100644 |
--- a/chrome/renderer/print_web_view_helper.cc |
+++ b/chrome/renderer/print_web_view_helper.cc |
@@ -139,7 +139,13 @@ bool PrintWebViewHelper::OnMessageReceived(const IPC::Message& message) { |
return handled; |
} |
-void PrintWebViewHelper::OnPrintForPrintPreview() { |
+void PrintWebViewHelper::OnPrintForPrintPreview( |
+ const DictionaryValue& job_settings) { |
+#if defined(OS_MACOSX) |
+ // If still not finished with earlier print request simply ignore. |
+ if (print_web_view_) |
+ return; |
+ |
if (!render_view()->webview()) |
return; |
WebFrame* main_frame = render_view()->webview()->mainFrame(); |
@@ -155,7 +161,20 @@ void PrintWebViewHelper::OnPrintForPrintPreview() { |
return; |
} |
- PrintNode(&element, false, false); |
+ if (!InitPrintSettings(element.document().frame(), &element)) { |
+ NOTREACHED() << "Failed to initialize print page settings"; |
+ return; |
+ } |
+ |
+ if (!UpdatePrintSettings(job_settings)) { |
+ NOTREACHED() << "Failed to update print page settings"; |
+ DidFinishPrinting(true); // Release all printing resources. |
+ return; |
+ } |
+ |
+ // Render Pages for printing. |
+ RenderPagesForPrint(element.document().frame(), &element); |
+#endif |
} |
void PrintWebViewHelper::OnPrint(bool is_preview) { |
@@ -499,10 +518,23 @@ bool PrintWebViewHelper::InitPrintSettings(WebFrame* frame, |
return false; |
} |
-bool PrintWebViewHelper::GetDefaultPrintSettings( |
- WebFrame* frame, |
- WebNode* node, |
- ViewMsg_Print_Params* params) { |
+bool PrintWebViewHelper::UpdatePrintSettings( |
+ const DictionaryValue& job_settings) { |
+ ViewMsg_PrintPages_Params settings; |
+ if (!render_view()->Send(new ViewHostMsg_UpdatePrintSettings( |
+ render_view()->routing_id(), |
+ (*print_pages_params_).params.document_cookie, |
Lei Zhang
2011/03/04 20:01:56
nit: isn't this print_pages_params->params.documen
kmadhusu
2011/03/04 21:20:03
Done.
|
+ job_settings, &settings.params))) { |
+ NOTREACHED(); |
+ return false; |
+ } |
+ print_pages_params_.reset(new ViewMsg_PrintPages_Params(settings)); |
+ return true; |
+} |
+ |
+bool PrintWebViewHelper::GetDefaultPrintSettings(WebFrame* frame, |
+ WebNode* node, |
+ ViewMsg_Print_Params* params) { |
if (!render_view()->Send(new ViewHostMsg_GetDefaultPrintSettings( |
render_view()->routing_id(), params))) { |
NOTREACHED(); |