| Index: chrome/browser/renderer_host/resource_message_filter.cc
|
| ===================================================================
|
| --- chrome/browser/renderer_host/resource_message_filter.cc (revision 25608)
|
| +++ chrome/browser/renderer_host/resource_message_filter.cc (working copy)
|
| @@ -323,7 +323,13 @@
|
| OnGetPreferredExtensionForMimeType)
|
| IPC_MESSAGE_HANDLER(ViewHostMsg_GetCPBrowsingContext,
|
| OnGetCPBrowsingContext)
|
| +#if defined(OS_WIN)
|
| IPC_MESSAGE_HANDLER(ViewHostMsg_DuplicateSection, OnDuplicateSection)
|
| +#endif
|
| +#if defined(OS_LINUX)
|
| + IPC_MESSAGE_HANDLER(ViewHostMsg_AllocateShareMemory,
|
| + OnAllocateShareMemory)
|
| +#endif
|
| IPC_MESSAGE_HANDLER(ViewHostMsg_ResourceTypeStats, OnResourceTypeStats)
|
| IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_ResolveProxy, OnResolveProxy)
|
| IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_GetDefaultPrintSettings,
|
| @@ -675,6 +681,7 @@
|
| CPBrowsingContextManager::Instance()->Allocate(request_context_.get());
|
| }
|
|
|
| +#if defined(OS_WIN)
|
| void ResourceMessageFilter::OnDuplicateSection(
|
| base::SharedMemoryHandle renderer_handle,
|
| base::SharedMemoryHandle* browser_handle) {
|
| @@ -683,7 +690,31 @@
|
| base::SharedMemory shared_buf(renderer_handle, true, handle());
|
| shared_buf.GiveToProcess(base::GetCurrentProcessHandle(), browser_handle);
|
| }
|
| +#endif
|
|
|
| +#if defined(OS_LINUX)
|
| +void ResourceMessageFilter::OnAllocateShareMemory(
|
| + size_t buffer_size,
|
| + base::SharedMemoryHandle* browser_handle) {
|
| + // We don't want to allocate a super big chunk of memory.
|
| + // 32MB should be large enough for printing on Linux.
|
| + if (buffer_size > 32 * 1024 * 1024) {
|
| + *browser_handle = base::SharedMemory::NULLHandle();
|
| + NOTREACHED() << "Buffer too large: " << buffer_size;
|
| + return;
|
| + }
|
| + base::SharedMemory shared_buf;
|
| + shared_buf.Create(L"", false, false, buffer_size);
|
| + if (shared_buf.Map(buffer_size)) {
|
| + shared_buf.GiveToProcess(base::GetCurrentProcessHandle(), browser_handle);
|
| + } else {
|
| + *browser_handle = base::SharedMemory::NULLHandle();
|
| + NOTREACHED() << "Cannot map buffer";
|
| + return;
|
| + }
|
| +}
|
| +#endif
|
| +
|
| void ResourceMessageFilter::OnResourceTypeStats(
|
| const WebCache::ResourceTypeStats& stats) {
|
| HISTOGRAM_COUNTS("WebCoreCache.ImagesSizeKB",
|
|
|