Index: content/renderer/mojo/interface_provider_js_wrapper.h |
diff --git a/content/renderer/mojo/interface_provider_js_wrapper.h b/content/renderer/mojo/interface_provider_js_wrapper.h |
index aa0a47956da46eda4d866c6b59f7544b4d3370ea..ec18bfc187a066ff01e2a1f24e1c1044b25e425a 100644 |
--- a/content/renderer/mojo/interface_provider_js_wrapper.h |
+++ b/content/renderer/mojo/interface_provider_js_wrapper.h |
@@ -16,14 +16,14 @@ |
#include "v8/include/v8.h" |
namespace service_manager { |
+class Connector; |
class InterfaceProvider; |
} |
namespace content { |
-// A JS wrapper around service_manager::InterfaceProvider that allows connecting |
-// to |
-// remote services. |
+// A JS wrapper around service_manager::Connector/InterfaceProvider that allows |
+// script to bind interfaces exposed by the browser. |
class CONTENT_EXPORT InterfaceProviderJsWrapper |
: public gin::Wrappable<InterfaceProviderJsWrapper> { |
public: |
@@ -31,6 +31,10 @@ class CONTENT_EXPORT InterfaceProviderJsWrapper |
static gin::Handle<InterfaceProviderJsWrapper> Create( |
v8::Isolate* isolate, |
v8::Handle<v8::Context> context, |
+ service_manager::Connector* connector); |
+ static gin::Handle<InterfaceProviderJsWrapper> Create( |
+ v8::Isolate* isolate, |
+ v8::Handle<v8::Context> context, |
service_manager::InterfaceProvider* remote_interfaces); |
// gin::Wrappable<InterfaceProviderJsWrapper> overrides. |
@@ -50,10 +54,15 @@ class CONTENT_EXPORT InterfaceProviderJsWrapper |
private: |
using ScopedJsFactory = |
v8::Persistent<v8::Function, v8::CopyablePersistentTraits<v8::Function>>; |
+ using BindCallback = base::Callback<void(mojo::ScopedMessagePipeHandle)>; |
InterfaceProviderJsWrapper( |
v8::Isolate* isolate, |
v8::Handle<v8::Context> context, |
+ base::WeakPtr<service_manager::Connector> connector); |
+ InterfaceProviderJsWrapper( |
+ v8::Isolate* isolate, |
+ v8::Handle<v8::Context> context, |
base::WeakPtr<service_manager::InterfaceProvider> remote_interfaces); |
void CallJsFactory(const ScopedJsFactory& factory, |
@@ -64,6 +73,8 @@ class CONTENT_EXPORT InterfaceProviderJsWrapper |
v8::Isolate* isolate_; |
v8::Global<v8::Context> context_; |
+ // Either one of the following two fields will be non-null. |
+ base::WeakPtr<service_manager::Connector> connector_; |
base::WeakPtr<service_manager::InterfaceProvider> remote_interfaces_; |
base::WeakPtrFactory<InterfaceProviderJsWrapper> weak_factory_; |