diff options
author | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-21 19:18:05 +0000 |
---|---|---|
committer | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-21 19:18:05 +0000 |
commit | b719142cac87c33ec2d6e99a238b5ecd48f87d68 (patch) | |
tree | cb073e88f553db6c3acab1c18c1f9e31793a80b7 /chrome | |
parent | b119a1e6bdd11040f93245e0b71d654a4883b40a (diff) | |
download | chromium_src-b719142cac87c33ec2d6e99a238b5ecd48f87d68.zip chromium_src-b719142cac87c33ec2d6e99a238b5ecd48f87d68.tar.gz chromium_src-b719142cac87c33ec2d6e99a238b5ecd48f87d68.tar.bz2 |
Printing: Implement PrintingContext::UseDefaultSettings for Linux/Cairo.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/3389005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@60087 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/browser/printing/print_job_worker.cc | 18 | ||||
-rw-r--r-- | chrome/browser/printing/print_job_worker.h | 5 | ||||
-rw-r--r-- | chrome/browser/renderer_host/resource_message_filter.cc | 10 | ||||
-rw-r--r-- | chrome/browser/renderer_host/resource_message_filter.h | 4 | ||||
-rw-r--r-- | chrome/common/render_messages_internal.h | 2 | ||||
-rw-r--r-- | chrome/renderer/mock_render_thread.cc | 2 | ||||
-rw-r--r-- | chrome/renderer/print_web_view_helper.cc | 2 | ||||
-rw-r--r-- | chrome/renderer/print_web_view_helper_linux.cc | 36 |
8 files changed, 21 insertions, 58 deletions
diff --git a/chrome/browser/printing/print_job_worker.cc b/chrome/browser/printing/print_job_worker.cc index 3a9ae03..dbc9544 100644 --- a/chrome/browser/printing/print_job_worker.cc +++ b/chrome/browser/printing/print_job_worker.cc @@ -85,9 +85,11 @@ void PrintJobWorker::GetSettings(bool ask_user_for_settings, parent_view, document_page_count, has_selection)); #else - PrintingContext::Result result = printing_context_.AskUserForSettings( - parent_view, document_page_count, has_selection); - GetSettingsDone(result); + printing_context_.AskUserForSettings( + parent_view, + document_page_count, + has_selection, + NewCallback(this, &PrintJobWorker::GetSettingsDone)); #endif } else { PrintingContext::Result result = printing_context_.UseDefaultSettings(); @@ -116,8 +118,14 @@ void PrintJobWorker::GetSettingsWithUI(gfx::NativeView parent_view, bool has_selection) { DCHECK(ChromeThread::CurrentlyOn(ChromeThread::UI)); - PrintingContext::Result result = printing_context_.AskUserForSettings( - parent_view, document_page_count, has_selection); + printing_context_.AskUserForSettings( + parent_view, + document_page_count, + has_selection, + NewCallback(this, &PrintJobWorker::GetSettingsWithUIDone)); +} + +void PrintJobWorker::GetSettingsWithUIDone(PrintingContext::Result result) { message_loop()->PostTask(FROM_HERE, NewRunnableMethod( this, &PrintJobWorker::GetSettingsDone, result)); } diff --git a/chrome/browser/printing/print_job_worker.h b/chrome/browser/printing/print_job_worker.h index 0849ccc..f79ca86 100644 --- a/chrome/browser/printing/print_job_worker.h +++ b/chrome/browser/printing/print_job_worker.h @@ -87,6 +87,11 @@ class PrintJobWorker : public base::Thread { void GetSettingsWithUI(gfx::NativeView parent_view, int document_page_count, bool has_selection); + + // The callback used by PrintingContext::GetSettingsWithUI() to notify this + // object that the print settings are set. This is needed in order to bounce + // back into the IO thread for GetSettingsDone(). + void GetSettingsWithUIDone(PrintingContext::Result result); #endif // Reports settings back to owner_. diff --git a/chrome/browser/renderer_host/resource_message_filter.cc b/chrome/browser/renderer_host/resource_message_filter.cc index 4cac19c..2ab1aca 100644 --- a/chrome/browser/renderer_host/resource_message_filter.cc +++ b/chrome/browser/renderer_host/resource_message_filter.cc @@ -159,7 +159,6 @@ class WriteClipboardTask : public Task { void RenderParamsFromPrintSettings(const printing::PrintSettings& settings, ViewMsg_Print_Params* params) { DCHECK(params); -#if defined(OS_WIN) || defined(OS_MACOSX) params->page_size = settings.page_setup_device_units().physical_size(); params->printable_size.SetSize( settings.page_setup_device_units().content_area().width(), @@ -176,9 +175,6 @@ void RenderParamsFromPrintSettings(const printing::PrintSettings& settings, // Always use an invalid cookie. params->document_cookie = 0; params->selection_only = settings.selection_only; -#else - NOTIMPLEMENTED(); -#endif } class ClearCacheCompletion : public net::CompletionCallback { @@ -497,10 +493,8 @@ bool ResourceMessageFilter::OnMessageReceived(const IPC::Message& msg) { IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_ResolveProxy, OnResolveProxy) IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_GetDefaultPrintSettings, OnGetDefaultPrintSettings) -#if defined(OS_WIN) || defined(OS_MACOSX) IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_ScriptedPrint, OnScriptedPrint) -#endif #if defined(OS_MACOSX) IPC_MESSAGE_HANDLER(ViewHostMsg_AllocTransportDIB, OnAllocTransportDIB) @@ -1183,8 +1177,6 @@ void ResourceMessageFilter::OnGetDefaultPrintSettingsReply( } } -#if defined(OS_WIN) || defined(OS_MACOSX) - void ResourceMessageFilter::OnScriptedPrint( const ViewHostMsg_ScriptedPrint_Params& params, IPC::Message* reply_msg) { @@ -1235,8 +1227,6 @@ void ResourceMessageFilter::OnScriptedPrintReply( } } -#endif // OS_WIN || OS_MACOSX - // static Clipboard* ResourceMessageFilter::GetClipboard() { // We have a static instance of the clipboard service for use by all message diff --git a/chrome/browser/renderer_host/resource_message_filter.h b/chrome/browser/renderer_host/resource_message_filter.h index 633d587..3dd76bb 100644 --- a/chrome/browser/renderer_host/resource_message_filter.h +++ b/chrome/browser/renderer_host/resource_message_filter.h @@ -303,7 +303,7 @@ class ResourceMessageFilter : public IPC::ChannelProxy::MessageFilter, void OnGetDefaultPrintSettingsReply( scoped_refptr<printing::PrinterQuery> printer_query, IPC::Message* reply_msg); -#if defined(OS_WIN) || defined(OS_MACOSX) + // A javascript code requested to print the current page. The renderer host // have to show to the user the print dialog and returns the selected print // settings. @@ -313,7 +313,7 @@ class ResourceMessageFilter : public IPC::ChannelProxy::MessageFilter, scoped_refptr<printing::PrinterQuery> printer_query, int routing_id, IPC::Message* reply_msg); -#endif + // Browser side transport DIB allocation void OnAllocTransportDIB(size_t size, bool cache_in_browser, diff --git a/chrome/common/render_messages_internal.h b/chrome/common/render_messages_internal.h index ed5a914..070123d 100644 --- a/chrome/common/render_messages_internal.h +++ b/chrome/common/render_messages_internal.h @@ -1682,7 +1682,6 @@ IPC_BEGIN_MESSAGES(ViewHost) IPC_SYNC_MESSAGE_ROUTED0_1(ViewHostMsg_GetDefaultPrintSettings, ViewMsg_Print_Params /* default_settings */) -#if defined(OS_WIN) || defined(OS_MACOSX) // It's the renderer that controls the printing process when it is generated // by javascript. This step is about showing UI to the user to select the // final print settings. The output parameter is the same as @@ -1691,7 +1690,6 @@ IPC_BEGIN_MESSAGES(ViewHost) ViewHostMsg_ScriptedPrint_Params, ViewMsg_PrintPages_Params /* settings chosen by the user*/) -#endif // defined(OS_WIN) || defined(OS_MACOSX) // WebKit and JavaScript error messages to log to the console // or debugger UI. diff --git a/chrome/renderer/mock_render_thread.cc b/chrome/renderer/mock_render_thread.cc index 484ba54..359b713 100644 --- a/chrome/renderer/mock_render_thread.cc +++ b/chrome/renderer/mock_render_thread.cc @@ -92,11 +92,11 @@ void MockRenderThread::OnMessageReceived(const IPC::Message& msg) { IPC_MESSAGE_HANDLER(ViewHostMsg_CreateWidget, OnMsgCreateWidget) IPC_MESSAGE_HANDLER(ViewHostMsg_OpenChannelToExtension, OnMsgOpenChannelToExtension) -#if defined(OS_WIN) || defined(OS_MACOSX) IPC_MESSAGE_HANDLER(ViewHostMsg_GetDefaultPrintSettings, OnGetDefaultPrintSettings) IPC_MESSAGE_HANDLER(ViewHostMsg_ScriptedPrint, OnScriptedPrint) +#if defined(OS_WIN) || defined(OS_MACOSX) IPC_MESSAGE_HANDLER(ViewHostMsg_DidGetPrintedPagesCount, OnDidGetPrintedPagesCount) IPC_MESSAGE_HANDLER(ViewHostMsg_DidPrintPage, OnDidPrintPage) diff --git a/chrome/renderer/print_web_view_helper.cc b/chrome/renderer/print_web_view_helper.cc index 3a37e9d..f56ff53 100644 --- a/chrome/renderer/print_web_view_helper.cc +++ b/chrome/renderer/print_web_view_helper.cc @@ -86,7 +86,6 @@ PrintWebViewHelper::PrintWebViewHelper(RenderView* render_view) PrintWebViewHelper::~PrintWebViewHelper() {} -#if defined(OS_MACOSX) || defined(OS_WIN) void PrintWebViewHelper::Print(WebFrame* frame, bool script_initiated) { const int kMinSecondsToIgnoreJavascriptInitiatedPrint = 2; const int kMaxSecondsToIgnoreJavascriptInitiatedPrint = 2 * 60; // 2 Minutes. @@ -224,7 +223,6 @@ void PrintWebViewHelper::Print(WebFrame* frame, bool script_initiated) { // printing resources, since we don't need them anymore. DidFinishPrinting(print_cancelled); } -#endif // OS_MACOSX || OS_WIN void PrintWebViewHelper::DidFinishPrinting(bool success) { if (!success) { diff --git a/chrome/renderer/print_web_view_helper_linux.cc b/chrome/renderer/print_web_view_helper_linux.cc index a616ee43..53e021a 100644 --- a/chrome/renderer/print_web_view_helper_linux.cc +++ b/chrome/renderer/print_web_view_helper_linux.cc @@ -46,42 +46,6 @@ static void FillDefaultPrintParams(ViewMsg_Print_Params* params) { params->desired_dpi = params->dpi; } -void PrintWebViewHelper::Print(WebFrame* frame, bool script_initiated) { - // If still not finished with earlier print request simply ignore. - if (IsPrinting()) - return; - - ViewMsg_Print_Params default_settings; - FillDefaultPrintParams(&default_settings); - double content_width, content_height; - - { - // PrepareFrameAndViewForPrint instance must be destructed before calling - // PrintPages where another instance is created. - PrepareFrameAndViewForPrint prepare(default_settings, - frame, - frame->view()); - GetPageSizeAndMarginsInPoints(frame, 0, default_settings, - &content_width, &content_height, - NULL, NULL, NULL, NULL); - } - - default_settings.dpi = printing::kPointsPerInch; - default_settings.min_shrink = 1.25; - default_settings.max_shrink = 2.0; - default_settings.desired_dpi = printing::kPointsPerInch; - default_settings.document_cookie = 0; - default_settings.selection_only = false; - - default_settings.printable_size = gfx::Size( - static_cast<int>(content_width), static_cast<int>(content_height)); - - ViewMsg_PrintPages_Params print_settings; - print_settings.params = default_settings; - - PrintPages(print_settings, frame); -} - void PrintWebViewHelper::PrintPages(const ViewMsg_PrintPages_Params& params, WebFrame* frame) { PrepareFrameAndViewForPrint prep_frame_view(params.params, |