Index: content/renderer/mojo/blink_interface_provider_impl.cc |
diff --git a/content/renderer/mojo/blink_interface_provider_impl.cc b/content/renderer/mojo/blink_interface_provider_impl.cc |
index 59e4c50d7e9bc00413800c9f834d4f3d7a94e57b..de2981407589550290b569d66f3a6d6b2d6846ad 100644 |
--- a/content/renderer/mojo/blink_interface_provider_impl.cc |
+++ b/content/renderer/mojo/blink_interface_provider_impl.cc |
@@ -9,11 +9,21 @@ |
#include "base/bind.h" |
#include "base/single_thread_task_runner.h" |
#include "base/threading/thread_task_runner_handle.h" |
+#include "content/public/common/service_names.mojom.h" |
+#include "services/service_manager/public/cpp/connector.h" |
#include "services/service_manager/public/cpp/interface_provider.h" |
namespace content { |
BlinkInterfaceProviderImpl::BlinkInterfaceProviderImpl( |
+ base::WeakPtr<service_manager::Connector> connector) |
+ : connector_(connector), |
+ main_thread_task_runner_(base::ThreadTaskRunnerHandle::Get()), |
+ weak_ptr_factory_(this) { |
+ weak_ptr_ = weak_ptr_factory_.GetWeakPtr(); |
+} |
+ |
+BlinkInterfaceProviderImpl::BlinkInterfaceProviderImpl( |
base::WeakPtr<service_manager::InterfaceProvider> remote_interfaces) |
: remote_interfaces_(remote_interfaces), |
main_thread_task_runner_(base::ThreadTaskRunnerHandle::Get()), |
@@ -33,10 +43,14 @@ void BlinkInterfaceProviderImpl::getInterface( |
return; |
} |
- if (!remote_interfaces_) |
- return; |
- |
- remote_interfaces_->GetInterface(name, std::move(handle)); |
+ if (connector_) { |
+ connector_->BindInterface( |
+ service_manager::Identity(mojom::kBrowserServiceName, |
+ service_manager::mojom::kInheritUserID), |
+ name, std::move(handle)); |
+ } else { |
+ remote_interfaces_->GetInterface(name, std::move(handle)); |
+ } |
} |
} // namespace content |