| Index: ipc/attachment_broker_privileged.cc
|
| diff --git a/ipc/attachment_broker_privileged.cc b/ipc/attachment_broker_privileged.cc
|
| index a6de9e6064265e2d057ae47c6e1988e193be4492..c53bdb5be8ac6fee8cf328702cc77bdc50055330 100644
|
| --- a/ipc/attachment_broker_privileged.cc
|
| +++ b/ipc/attachment_broker_privileged.cc
|
| @@ -15,6 +15,9 @@
|
| #endif
|
|
|
| #if defined(OS_MACOSX) && !defined(OS_IOS)
|
| +#include <mach/mach.h>
|
| +
|
| +#include "base/process/port_provider_mac.h"
|
| #include "ipc/attachment_broker_privileged_mac.h"
|
| #endif
|
|
|
| @@ -23,6 +26,19 @@ namespace IPC {
|
| namespace {
|
|
|
| #if defined(OS_MACOSX) && !defined(OS_IOS)
|
| +
|
| +// A fake port provider that does nothing. Intended for single process unit
|
| +// tests.
|
| +class FakePortProvider : public base::PortProvider {
|
| + mach_port_t TaskForPid(base::ProcessHandle process) const override {
|
| + DCHECK_EQ(process, getpid());
|
| + return mach_task_self();
|
| + }
|
| +};
|
| +
|
| +base::LazyInstance<FakePortProvider>::Leaky
|
| + g_fake_port_provider = LAZY_INSTANCE_INITIALIZER;
|
| +
|
| // Passed as a constructor parameter to AttachmentBrokerPrivilegedMac.
|
| base::PortProvider* g_port_provider = nullptr;
|
| #endif // defined(OS_MACOSX) && !defined(OS_IOS)
|
| @@ -85,6 +101,15 @@ void AttachmentBrokerPrivileged::CreateBrokerIfNeeded() {
|
| }
|
| #endif // defined(OS_MACOSX) && !defined(OS_IOS)
|
|
|
| +// static
|
| +void AttachmentBrokerPrivileged::CreateBrokerForSingleProcessTests() {
|
| +#if defined(OS_MACOSX) && !defined(OS_IOS)
|
| + CreateBrokerIfNeeded(&g_fake_port_provider.Get());
|
| +#else
|
| + CreateBrokerIfNeeded();
|
| +#endif // defined(OS_MACOSX) && !defined(OS_IOS)
|
| +}
|
| +
|
| void AttachmentBrokerPrivileged::RegisterCommunicationChannel(
|
| Endpoint* endpoint) {
|
| base::AutoLock auto_lock(*get_lock());
|
|
|