Index: content/browser/renderer_host/render_message_filter.cc |
diff --git a/content/browser/renderer_host/render_message_filter.cc b/content/browser/renderer_host/render_message_filter.cc |
index 518575d28d883e0774493f7345669dba1a0f89e0..89e04e207f4fc5e979f595edb24b13fb2ba5a81b 100644 |
--- a/content/browser/renderer_host/render_message_filter.cc |
+++ b/content/browser/renderer_host/render_message_filter.cc |
@@ -161,6 +161,8 @@ |
BrowserGpuMemoryBufferManager::current(); |
if (gpu_memory_buffer_manager) |
gpu_memory_buffer_manager->ProcessRemoved(render_process_id_); |
+ discardable_memory::DiscardableSharedMemoryManager::current()->ClientRemoved( |
+ render_process_id_); |
} |
bool RenderMessageFilter::OnMessageReceived(const IPC::Message& message) { |
@@ -198,7 +200,11 @@ |
OnAllocatedSharedBitmap) |
IPC_MESSAGE_HANDLER(ChildProcessHostMsg_DeletedSharedBitmap, |
OnDeletedSharedBitmap) |
- |
+ IPC_MESSAGE_HANDLER_DELAY_REPLY( |
+ ChildProcessHostMsg_SyncAllocateLockedDiscardableSharedMemory, |
+ OnAllocateLockedDiscardableSharedMemory) |
+ IPC_MESSAGE_HANDLER(ChildProcessHostMsg_DeletedDiscardableSharedMemory, |
+ OnDeletedDiscardableSharedMemory) |
#if defined(OS_LINUX) |
IPC_MESSAGE_HANDLER(ChildProcessHostMsg_SetThreadPriority, |
OnSetThreadPriority) |
@@ -363,6 +369,45 @@ |
bitmap_manager_client_.ChildDeletedSharedBitmap(id); |
} |
+void RenderMessageFilter::AllocateLockedDiscardableSharedMemoryOnFileThread( |
+ uint32_t size, |
+ discardable_memory::DiscardableSharedMemoryId id, |
+ IPC::Message* reply_msg) { |
+ base::SharedMemoryHandle handle; |
+ discardable_memory::DiscardableSharedMemoryManager::current() |
+ ->AllocateLockedDiscardableSharedMemoryForClient( |
+ PeerHandle(), render_process_id_, size, id, &handle); |
+ ChildProcessHostMsg_SyncAllocateLockedDiscardableSharedMemory:: |
+ WriteReplyParams(reply_msg, handle); |
+ Send(reply_msg); |
+} |
+ |
+void RenderMessageFilter::OnAllocateLockedDiscardableSharedMemory( |
+ uint32_t size, |
+ discardable_memory::DiscardableSharedMemoryId id, |
+ IPC::Message* reply_msg) { |
+ BrowserThread::PostTask( |
+ BrowserThread::FILE_USER_BLOCKING, FROM_HERE, |
+ base::Bind(&RenderMessageFilter:: |
+ AllocateLockedDiscardableSharedMemoryOnFileThread, |
+ this, size, id, reply_msg)); |
+} |
+ |
+void RenderMessageFilter::DeletedDiscardableSharedMemoryOnFileThread( |
+ discardable_memory::DiscardableSharedMemoryId id) { |
+ discardable_memory::DiscardableSharedMemoryManager::current() |
+ ->ClientDeletedDiscardableSharedMemory(id, render_process_id_); |
+} |
+ |
+void RenderMessageFilter::OnDeletedDiscardableSharedMemory( |
+ discardable_memory::DiscardableSharedMemoryId id) { |
+ BrowserThread::PostTask( |
+ BrowserThread::FILE_USER_BLOCKING, FROM_HERE, |
+ base::Bind( |
+ &RenderMessageFilter::DeletedDiscardableSharedMemoryOnFileThread, |
+ this, id)); |
+} |
+ |
#if defined(OS_LINUX) |
void RenderMessageFilter::SetThreadPriorityOnFileThread( |
base::PlatformThreadId ns_tid, |