Index: content/child/child_thread_impl.cc |
diff --git a/content/child/child_thread_impl.cc b/content/child/child_thread_impl.cc |
index 927427d2d59ebb1036ed206723f3800312d0f9f4..076dab38a5489b8405f4c2d18b2725fba38af014 100644 |
--- a/content/child/child_thread_impl.cc |
+++ b/content/child/child_thread_impl.cc |
@@ -290,7 +290,9 @@ ChildThread* ChildThread::Get() { |
} |
ChildThreadImpl::Options::Options() |
- : auto_start_service_manager_connection(true), connect_to_browser(false) {} |
+ : auto_start_service_manager_connection(true), |
+ connect_to_browser(false), |
+ init_discardable_memory(false) {} |
ChildThreadImpl::Options::Options(const Options& other) = default; |
@@ -316,8 +318,14 @@ ChildThreadImpl::Options::Builder::AutoStartServiceManagerConnection( |
} |
ChildThreadImpl::Options::Builder& |
-ChildThreadImpl::Options::Builder::ConnectToBrowser( |
- bool connect_to_browser) { |
+ChildThreadImpl::Options::Builder::InitDiscardableMemory( |
+ bool discardable_memory) { |
+ options_.init_discardable_memory = discardable_memory; |
+ return *this; |
+} |
+ |
+ChildThreadImpl::Options::Builder& |
+ChildThreadImpl::Options::Builder::ConnectToBrowser(bool connect_to_browser) { |
options_.connect_to_browser = connect_to_browser; |
return *this; |
} |
@@ -354,33 +362,6 @@ 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_( |
@@ -404,7 +385,7 @@ ChildThreadImpl::ChildThreadImpl(const Options& options) |
Init(options); |
} |
-scoped_refptr<base::SequencedTaskRunner> ChildThreadImpl::GetIOTaskRunner() { |
+scoped_refptr<base::SingleThreadTaskRunner> ChildThreadImpl::GetIOTaskRunner() { |
if (IsInBrowserProcess()) |
return browser_process_io_runner_; |
return ChildProcess::current()->io_task_runner(); |
@@ -591,12 +572,14 @@ void ChildThreadImpl::Init(const Options& options) { |
shared_bitmap_manager_.reset( |
new ChildSharedBitmapManager(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()); |
+ if (options.init_discardable_memory) { |
+ discardable_memory::mojom::DiscardableSharedMemoryManagerPtr manager; |
+ ChildThread::Get()->GetRemoteInterfaces()->GetInterface( |
+ mojo::GetProxy(&manager)); |
+ discardable_shared_memory_manager_ = base::MakeUnique< |
+ discardable_memory::ClientDiscardableSharedMemoryManager>( |
+ manager.PassInterface(), GetIOTaskRunner()); |
+ } |
} |
ChildThreadImpl::~ChildThreadImpl() { |