Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1622)

Unified Diff: content/renderer/mojo/interface_provider_js_wrapper.h

Issue 2755813002: Begin to wean child processes off reliance on a persistent service_manager::Connection to the brows… (Closed)
Patch Set: . Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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_;
« no previous file with comments | « content/renderer/mojo/blink_interface_provider_impl.cc ('k') | content/renderer/mojo/interface_provider_js_wrapper.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698