Index: content/child/child_thread_impl.cc |
diff --git a/content/child/child_thread_impl.cc b/content/child/child_thread_impl.cc |
index 308da5ede883910780b84b0e30aa878a1970cc5e..927427d2d59ebb1036ed206723f3800312d0f9f4 100644 |
--- a/content/child/child_thread_impl.cc |
+++ b/content/child/child_thread_impl.cc |
@@ -32,8 +32,8 @@ |
#include "base/timer/elapsed_timer.h" |
#include "base/tracked_objects.h" |
#include "build/build_config.h" |
+#include "components/discardable_memory/client/client_discardable_shared_memory_manager.h" |
#include "components/tracing/child/child_trace_message_filter.h" |
-#include "content/child/child_discardable_shared_memory_manager.h" |
#include "content/child/child_histogram_message_filter.h" |
#include "content/child/child_process.h" |
#include "content/child/child_resource_message_filter.h" |
@@ -354,6 +354,33 @@ bool ChildThreadImpl::ChildThreadMessageRouter::RouteMessage( |
return handled; |
} |
+class ChildThreadImpl::ClientDiscardableSharedMemoryManagerDelegate |
+ : public discardable_memory::ClientDiscardableSharedMemoryManager:: |
+ Delegate { |
+ public: |
+ explicit ClientDiscardableSharedMemoryManagerDelegate( |
+ scoped_refptr<ThreadSafeSender> sender) |
+ : sender_(sender) {} |
+ ~ClientDiscardableSharedMemoryManagerDelegate() override {} |
+ |
+ void AllocateLockedDiscardableSharedMemory( |
+ size_t size, |
+ discardable_memory::DiscardableSharedMemoryId id, |
+ base::SharedMemoryHandle* handle) override { |
+ sender_->Send( |
+ new ChildProcessHostMsg_SyncAllocateLockedDiscardableSharedMemory( |
+ size, id, handle)); |
+ } |
+ |
+ void DeletedDiscardableSharedMemory( |
+ discardable_memory::DiscardableSharedMemoryId id) override { |
+ sender_->Send(new ChildProcessHostMsg_DeletedDiscardableSharedMemory(id)); |
+ } |
+ |
+ private: |
+ scoped_refptr<ThreadSafeSender> sender_; |
+}; |
+ |
ChildThreadImpl::ChildThreadImpl() |
: route_provider_binding_(this), |
associated_interface_provider_bindings_( |
@@ -564,8 +591,12 @@ void ChildThreadImpl::Init(const Options& options) { |
shared_bitmap_manager_.reset( |
new ChildSharedBitmapManager(thread_safe_sender())); |
- discardable_shared_memory_manager_.reset( |
- new ChildDiscardableSharedMemoryManager(thread_safe_sender())); |
+ client_discardable_shared_memory_manager_delegate_ = |
+ base::MakeUnique<ClientDiscardableSharedMemoryManagerDelegate>( |
+ thread_safe_sender()); |
+ discardable_shared_memory_manager_ = base::MakeUnique< |
+ discardable_memory::ClientDiscardableSharedMemoryManager>( |
+ client_discardable_shared_memory_manager_delegate_.get()); |
} |
ChildThreadImpl::~ChildThreadImpl() { |