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

Unified Diff: chrome/renderer/print_web_view_helper.cc

Issue 6533006: Print Preview: Hook up the print button to initiate printing without displaying a print dialog. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Fix build errors Created 9 years, 10 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/renderer/print_web_view_helper.h ('k') | content/browser/renderer_host/render_view_host.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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();
« no previous file with comments | « chrome/renderer/print_web_view_helper.h ('k') | content/browser/renderer_host/render_view_host.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698