| Index: content/child/child_thread_impl.cc
|
| diff --git a/content/child/child_thread_impl.cc b/content/child/child_thread_impl.cc
|
| index 7f2755b3e00f3859bfe499adb57561c2686db6ca..afed571379594625455bc8ac55d784317518b44a 100644
|
| --- a/content/child/child_thread_impl.cc
|
| +++ b/content/child/child_thread_impl.cc
|
| @@ -292,7 +292,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;
|
|
|
| @@ -318,8 +320,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;
|
| }
|
| @@ -356,33 +364,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_(
|
| @@ -406,7 +387,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();
|
| @@ -594,12 +575,15 @@ 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().get());
|
| + }
|
| }
|
|
|
| ChildThreadImpl::~ChildThreadImpl() {
|
|
|