Index: content/child/child_thread_impl.cc |
diff --git a/content/child/child_thread_impl.cc b/content/child/child_thread_impl.cc |
index 06d4afca69368a80c092b03babe9617fb7cfd50a..dbf6c3be0c2d5c13d2029ae0554bf191ce8b443f 100644 |
--- a/content/child/child_thread_impl.cc |
+++ b/content/child/child_thread_impl.cc |
@@ -367,7 +367,14 @@ |
IPC::Logging::GetInstance(); |
#endif |
- IPC::AttachmentBrokerUnprivileged::CreateBrokerIfNeeded(); |
+#if USE_ATTACHMENT_BROKER |
+ // The only reason a global would already exist is if the thread is being run |
+ // in the browser process because of a command line switch. |
+ if (!IPC::AttachmentBroker::GetGlobal()) { |
+ attachment_broker_.reset( |
+ IPC::AttachmentBrokerUnprivileged::CreateBroker().release()); |
+ } |
+#endif |
channel_ = |
IPC::SyncChannel::Create(this, ChildProcess::current()->io_task_runner(), |
@@ -453,9 +460,8 @@ |
} |
ConnectChannel(options.use_mojo_channel); |
- IPC::AttachmentBroker* broker = IPC::AttachmentBroker::GetGlobal(); |
- if (broker && !broker->IsPrivilegedBroker()) |
- broker->RegisterBrokerCommunicationChannel(channel_.get()); |
+ if (attachment_broker_) |
+ attachment_broker_->DesignateBrokerCommunicationChannel(channel_.get()); |
int connection_timeout = kConnectionTimeoutS; |
std::string connection_override = |
@@ -490,10 +496,6 @@ |
#ifdef IPC_MESSAGE_LOG_ENABLED |
IPC::Logging::GetInstance()->SetIPCSender(NULL); |
#endif |
- |
- IPC::AttachmentBroker* broker = IPC::AttachmentBroker::GetGlobal(); |
- if (broker && !broker->IsPrivilegedBroker()) |
- broker->DeregisterBrokerCommunicationChannel(channel_.get()); |
channel_->RemoveFilter(histogram_message_filter_.get()); |
channel_->RemoveFilter(sync_message_filter_.get()); |