| 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 4c059afc97c281cdbab259efe3b2b736ba9fe905..5c3ea35d2cb8200746da12e9ab3f01d59daf9822 100644
|
| --- a/chrome/renderer/print_web_view_helper.cc
|
| +++ b/chrome/renderer/print_web_view_helper.cc
|
| @@ -135,7 +135,9 @@ bool PrintWebViewHelper::OnMessageReceived(const IPC::Message& message) {
|
| return handled;
|
| }
|
|
|
| -void PrintWebViewHelper::OnPrintForPrintPreview() {
|
| +void PrintWebViewHelper::OnPrintForPrintPreview(
|
| + const std::string& job_settings) {
|
| +#if defined(OS_MACOSX)
|
| if (!render_view()->webview())
|
| return;
|
| WebFrame* main_frame = render_view()->webview()->mainFrame();
|
| @@ -151,7 +153,11 @@ void PrintWebViewHelper::OnPrintForPrintPreview() {
|
| return;
|
| }
|
|
|
| - PrintNode(&element, false, false);
|
| + InitPrintSettings(element.document().frame(), &element,
|
| + PrintWebViewHelper::DEFAULT);
|
| + UpdatePrintSettings(job_settings);
|
| + PrintForPrintPreview(element.document().frame(), &element);
|
| +#endif
|
| }
|
|
|
| void PrintWebViewHelper::OnPrint(bool is_preview) {
|
| @@ -193,6 +199,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)) {
|
| + 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,
|
| @@ -229,7 +252,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;
|
| @@ -485,9 +508,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;
|
| @@ -495,12 +519,32 @@ 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 std::string& 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;
|
| }
|
|
|