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

Unified Diff: chrome/browser/renderer_host/resource_message_filter.cc

Issue 172115: Pass printing result to the browser.... (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: '' Created 11 years, 3 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
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",

Powered by Google App Engine
This is Rietveld 408576698