Chromium Code Reviews| Index: chrome/browser/renderer_host/resource_message_filter.cc |
| diff --git a/chrome/browser/renderer_host/resource_message_filter.cc b/chrome/browser/renderer_host/resource_message_filter.cc |
| index 59127509fa978e6247fcf0fa338e598d2390c6c8..43c2ba5de606796fd0fc6a86f64ef5263812990a 100644 |
| --- a/chrome/browser/renderer_host/resource_message_filter.cc |
| +++ b/chrome/browser/renderer_host/resource_message_filter.cc |
| @@ -55,10 +55,10 @@ |
| #include "webkit/glue/webkit_glue.h" |
| #include "webkit/glue/webplugin.h" |
| -#if defined(OS_WIN) |
| +#if defined(OS_WIN) || defined(OS_MACOSX) |
| #include "chrome/browser/printing/print_job_manager.h" |
| #include "chrome/browser/printing/printer_query.h" |
| -#elif defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_FREEBSD) |
| +#elif defined(OS_LINUX) || defined(OS_FREEBSD) |
| // TODO(port) remove this. |
| #include "chrome/common/temp_scaffolding_stubs.h" |
| #endif |
| @@ -118,7 +118,7 @@ class WriteClipboardTask : public Task { |
| void RenderParamsFromPrintSettings(const printing::PrintSettings& settings, |
| ViewMsg_Print_Params* params) { |
| DCHECK(params); |
| -#if defined(OS_WIN) |
| +#if defined(OS_WIN) || defined(OS_MACOSX) |
| params->printable_size.SetSize( |
| settings.page_setup_pixels().content_area().width(), |
| settings.page_setup_pixels().content_area().height()); |
| @@ -358,11 +358,15 @@ bool ResourceMessageFilter::OnMessageReceived(const IPC::Message& msg) { |
| IPC_MESSAGE_HANDLER(ViewHostMsg_TempFileForPrintingWritten, |
| OnTempFileForPrintingWritten) |
| #endif |
|
pink (ping after 24hrs)
2009/10/13 21:04:51
#elif?
stuartmorgan
2009/10/13 22:07:43
Again, I was trying to be consistent with the rest
|
| +#if defined(OS_MACOSX) |
| + IPC_MESSAGE_HANDLER(ViewHostMsg_AllocatePDFTransport, |
| + OnAllocatePDFTransport) |
| +#endif |
| IPC_MESSAGE_HANDLER(ViewHostMsg_ResourceTypeStats, OnResourceTypeStats) |
| IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_ResolveProxy, OnResolveProxy) |
| IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_GetDefaultPrintSettings, |
| OnGetDefaultPrintSettings) |
| -#if defined(OS_WIN) |
| +#if defined(OS_WIN) || defined(OS_MACOSX) |
| IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_ScriptedPrint, |
| OnScriptedPrint) |
| #endif |
| @@ -738,6 +742,21 @@ void ResourceMessageFilter::OnDuplicateSection( |
| } |
| #endif |
| +#if defined(OS_MACOSX) |
| +void ResourceMessageFilter::OnAllocatePDFTransport( |
| + size_t buffer_size, |
| + base::SharedMemoryHandle* handle) { |
| + base::SharedMemory shared_buf; |
| + shared_buf.Create(L"", false, false, buffer_size); |
| + if (!shared_buf.Map(buffer_size)) { |
| + *handle = base::SharedMemory::NULLHandle(); |
| + NOTREACHED() << "Cannot map PDF transport buffer"; |
| + return; |
| + } |
| + shared_buf.GiveToProcess(base::GetCurrentProcessHandle(), handle); |
| +} |
| +#endif |
| + |
| void ResourceMessageFilter::OnResourceTypeStats( |
| const WebCache::ResourceTypeStats& stats) { |
| HISTOGRAM_COUNTS("WebCoreCache.ImagesSizeKB", |
| @@ -820,12 +839,17 @@ void ResourceMessageFilter::OnGetDefaultPrintSettingsReply( |
| } |
| } |
| -#if defined(OS_WIN) |
| +#if defined(OS_WIN) || defined(OS_MACOSX) |
| void ResourceMessageFilter::OnScriptedPrint( |
| const ViewHostMsg_ScriptedPrint_Params& params, |
| IPC::Message* reply_msg) { |
| +#if defined(OS_WIN) |
| HWND host_window = gfx::NativeViewFromId(params.host_window_id); |
| +#elif defined(OS_MACOSX) |
| + gfx::NativeWindow host_window = NULL; |
| + // TODO: Get an actually window ref here, to allow a sheet-based print dialog. |
|
Amanda Walker
2009/10/13 19:35:49
actually -> actual
stuartmorgan
2009/10/13 22:07:43
Done.
|
| +#endif |
| scoped_refptr<printing::PrinterQuery> printer_query; |
| print_job_manager_->PopPrinterQuery(params.cookie, &printer_query); |
| @@ -839,6 +863,7 @@ void ResourceMessageFilter::OnScriptedPrint( |
| printer_query, |
| params.routing_id, |
| reply_msg); |
| +#if defined(OS_WIN) |
| // Shows the Print... dialog box. This is asynchronous, only the IPC message |
| // sender will hang until the Print dialog is dismissed. |
| if (!host_window || !IsWindow(host_window)) { |
| @@ -848,6 +873,7 @@ void ResourceMessageFilter::OnScriptedPrint( |
| host_window = GetAncestor(host_window, GA_ROOTOWNER); |
| } |
| DCHECK(host_window); |
| +#endif |
| printer_query->GetSettings(printing::PrinterQuery::ASK_USER, |
| host_window, |
| @@ -879,7 +905,7 @@ void ResourceMessageFilter::OnScriptedPrintReply( |
| } |
| } |
| -#endif // OS_WIN |
| +#endif // OS_WIN || OS_MACOSX |
| // static |
| Clipboard* ResourceMessageFilter::GetClipboard() { |