Commit 946720eb authored by Devlin Cronin's avatar Devlin Cronin Committed by Commit Bot

[Extensions Bindings] Have the bindings system own the IPCMessageSender

Move ownership of the ICPMessageSender to the bindings system. This
internalizes a bit more of the logic into the ExtensionBindingsSystem,
and moves a bit more out of the overly-busy Dispatcher classes.

Bug: 653596
Change-Id: I321afadb64c8351ca95cb0953a0148c71ad7f005
Reviewed-on: https://chromium-review.googlesource.com/570932
Commit-Queue: Devlin <rdevlin.cronin@chromium.org>
Reviewed-by: default avatarIstiaque Ahmed <lazyboy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#487291}
parent 2d263e6d
...@@ -244,25 +244,23 @@ Dispatcher::Dispatcher(DispatcherDelegate* delegate) ...@@ -244,25 +244,23 @@ Dispatcher::Dispatcher(DispatcherDelegate* delegate)
content_watcher_(new ContentWatcher()), content_watcher_(new ContentWatcher()),
source_map_(&ResourceBundle::GetSharedInstance()), source_map_(&ResourceBundle::GetSharedInstance()),
v8_schema_registry_(new V8SchemaRegistry), v8_schema_registry_(new V8SchemaRegistry),
ipc_message_sender_(IPCMessageSender::CreateMainThreadIPCMessageSender()),
user_script_set_manager_observer_(this), user_script_set_manager_observer_(this),
activity_logging_enabled_(false) { activity_logging_enabled_(false) {
const base::CommandLine& command_line = const base::CommandLine& command_line =
*(base::CommandLine::ForCurrentProcess()); *(base::CommandLine::ForCurrentProcess());
std::unique_ptr<IPCMessageSender> ipc_message_sender =
IPCMessageSender::CreateMainThreadIPCMessageSender();
if (FeatureSwitch::native_crx_bindings()->IsEnabled()) { if (FeatureSwitch::native_crx_bindings()->IsEnabled()) {
// This Unretained is safe because the IPCMessageSender is guaranteed to // This Unretained is safe because the IPCMessageSender is guaranteed to
// outlive the bindings system. // outlive the bindings system.
auto system = base::MakeUnique<NativeExtensionBindingsSystem>( auto system = base::MakeUnique<NativeExtensionBindingsSystem>(
base::Bind(&IPCMessageSender::SendRequestIPC, std::move(ipc_message_sender), base::Bind(&SendEventListenersIPC));
base::Unretained(ipc_message_sender_.get())),
base::Bind(&SendEventListenersIPC));
delegate_->InitializeBindingsSystem(this, system->api_system()); delegate_->InitializeBindingsSystem(this, system->api_system());
bindings_system_ = std::move(system); bindings_system_ = std::move(system);
} else { } else {
bindings_system_ = base::MakeUnique<JsExtensionBindingsSystem>( bindings_system_ = base::MakeUnique<JsExtensionBindingsSystem>(
&source_map_, &source_map_, std::move(ipc_message_sender));
base::MakeUnique<RequestSender>(ipc_message_sender_.get()));
} }
set_idle_notifications_ = set_idle_notifications_ =
...@@ -648,7 +646,6 @@ void Dispatcher::OnExtensionResponse(int request_id, ...@@ -648,7 +646,6 @@ void Dispatcher::OnExtensionResponse(int request_id,
const base::ListValue& response, const base::ListValue& response,
const std::string& error) { const std::string& error) {
bindings_system_->HandleResponse(request_id, success, response, error); bindings_system_->HandleResponse(request_id, success, response, error);
ipc_message_sender_->SendOnRequestResponseReceivedIPC(request_id);
} }
void Dispatcher::DispatchEvent(const std::string& extension_id, void Dispatcher::DispatchEvent(const std::string& extension_id,
......
...@@ -56,7 +56,6 @@ namespace extensions { ...@@ -56,7 +56,6 @@ namespace extensions {
class ContentWatcher; class ContentWatcher;
class DispatcherDelegate; class DispatcherDelegate;
class ExtensionBindingsSystem; class ExtensionBindingsSystem;
class IPCMessageSender;
class ScriptContext; class ScriptContext;
class ScriptInjectionManager; class ScriptInjectionManager;
struct EventFilteringInfo; struct EventFilteringInfo;
...@@ -280,9 +279,6 @@ class Dispatcher : public content::RenderThreadObserver, ...@@ -280,9 +279,6 @@ class Dispatcher : public content::RenderThreadObserver,
// Cache for the v8 representation of extension API schemas. // Cache for the v8 representation of extension API schemas.
std::unique_ptr<V8SchemaRegistry> v8_schema_registry_; std::unique_ptr<V8SchemaRegistry> v8_schema_registry_;
// A helper to dispatch event and request IPCs.
std::unique_ptr<IPCMessageSender> ipc_message_sender_;
// The bindings system associated with the main thread. // The bindings system associated with the main thread.
std::unique_ptr<ExtensionBindingsSystem> bindings_system_; std::unique_ptr<ExtensionBindingsSystem> bindings_system_;
......
...@@ -12,6 +12,7 @@ class ListValue; ...@@ -12,6 +12,7 @@ class ListValue;
} }
namespace extensions { namespace extensions {
class IPCMessageSender;
class RequestSender; class RequestSender;
class ScriptContext; class ScriptContext;
struct EventFilteringInfo; struct EventFilteringInfo;
...@@ -54,6 +55,9 @@ class ExtensionBindingsSystem { ...@@ -54,6 +55,9 @@ class ExtensionBindingsSystem {
const base::ListValue& response, const base::ListValue& response,
const std::string& error) = 0; const std::string& error) = 0;
// Returns the associated IPC message sender.
virtual IPCMessageSender* GetIPCMessageSender() = 0;
// Returns the associated RequestSender, if any. // Returns the associated RequestSender, if any.
// TODO(devlin): Factor this out. // TODO(devlin): Factor this out.
virtual RequestSender* GetRequestSender() = 0; virtual RequestSender* GetRequestSender() = 0;
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
#include "extensions/renderer/js_extension_bindings_system.h" #include "extensions/renderer/js_extension_bindings_system.h"
#include "base/command_line.h" #include "base/command_line.h"
#include "base/memory/ptr_util.h"
#include "base/strings/string_split.h" #include "base/strings/string_split.h"
#include "content/public/child/v8_value_converter.h" #include "content/public/child/v8_value_converter.h"
#include "content/public/common/content_switches.h" #include "content/public/common/content_switches.h"
...@@ -18,7 +19,9 @@ ...@@ -18,7 +19,9 @@
#include "extensions/common/manifest_handlers/externally_connectable.h" #include "extensions/common/manifest_handlers/externally_connectable.h"
#include "extensions/renderer/binding_generating_native_handler.h" #include "extensions/renderer/binding_generating_native_handler.h"
#include "extensions/renderer/event_bindings.h" #include "extensions/renderer/event_bindings.h"
#include "extensions/renderer/ipc_message_sender.h"
#include "extensions/renderer/renderer_extension_registry.h" #include "extensions/renderer/renderer_extension_registry.h"
#include "extensions/renderer/request_sender.h"
#include "extensions/renderer/resource_bundle_source_map.h" #include "extensions/renderer/resource_bundle_source_map.h"
#include "extensions/renderer/script_context.h" #include "extensions/renderer/script_context.h"
#include "gin/converter.h" #include "gin/converter.h"
...@@ -134,8 +137,11 @@ void MaybeCreateEventBindings(ScriptContext* context) { ...@@ -134,8 +137,11 @@ void MaybeCreateEventBindings(ScriptContext* context) {
JsExtensionBindingsSystem::JsExtensionBindingsSystem( JsExtensionBindingsSystem::JsExtensionBindingsSystem(
ResourceBundleSourceMap* source_map, ResourceBundleSourceMap* source_map,
std::unique_ptr<RequestSender> request_sender) std::unique_ptr<IPCMessageSender> ipc_message_sender)
: source_map_(source_map), request_sender_(std::move(request_sender)) {} : source_map_(source_map),
ipc_message_sender_(std::move(ipc_message_sender)),
request_sender_(
base::MakeUnique<RequestSender>(ipc_message_sender_.get())) {}
JsExtensionBindingsSystem::~JsExtensionBindingsSystem() {} JsExtensionBindingsSystem::~JsExtensionBindingsSystem() {}
...@@ -224,12 +230,17 @@ void JsExtensionBindingsSystem::HandleResponse(int request_id, ...@@ -224,12 +230,17 @@ void JsExtensionBindingsSystem::HandleResponse(int request_id,
const base::ListValue& response, const base::ListValue& response,
const std::string& error) { const std::string& error) {
request_sender_->HandleResponse(request_id, success, response, error); request_sender_->HandleResponse(request_id, success, response, error);
ipc_message_sender_->SendOnRequestResponseReceivedIPC(request_id);
} }
RequestSender* JsExtensionBindingsSystem::GetRequestSender() { RequestSender* JsExtensionBindingsSystem::GetRequestSender() {
return request_sender_.get(); return request_sender_.get();
} }
IPCMessageSender* JsExtensionBindingsSystem::GetIPCMessageSender() {
return ipc_message_sender_.get();
}
void JsExtensionBindingsSystem::DispatchEventInContext( void JsExtensionBindingsSystem::DispatchEventInContext(
const std::string& event_name, const std::string& event_name,
const base::ListValue* event_args, const base::ListValue* event_args,
......
...@@ -12,14 +12,14 @@ ...@@ -12,14 +12,14 @@
#include "extensions/renderer/extension_bindings_system.h" #include "extensions/renderer/extension_bindings_system.h"
namespace extensions { namespace extensions {
class RequestSender; class IPCMessageSender;
class ResourceBundleSourceMap; class ResourceBundleSourceMap;
// The bindings system using the traditional JS-injection style bindings. // The bindings system using the traditional JS-injection style bindings.
class JsExtensionBindingsSystem : public ExtensionBindingsSystem { class JsExtensionBindingsSystem : public ExtensionBindingsSystem {
public: public:
JsExtensionBindingsSystem(ResourceBundleSourceMap* source_map, JsExtensionBindingsSystem(ResourceBundleSourceMap* source_map,
std::unique_ptr<RequestSender> request_sender); std::unique_ptr<IPCMessageSender> request_sender);
~JsExtensionBindingsSystem() override; ~JsExtensionBindingsSystem() override;
// ExtensionBindingsSystem: // ExtensionBindingsSystem:
...@@ -37,6 +37,7 @@ class JsExtensionBindingsSystem : public ExtensionBindingsSystem { ...@@ -37,6 +37,7 @@ class JsExtensionBindingsSystem : public ExtensionBindingsSystem {
const base::ListValue& response, const base::ListValue& response,
const std::string& error) override; const std::string& error) override;
RequestSender* GetRequestSender() override; RequestSender* GetRequestSender() override;
IPCMessageSender* GetIPCMessageSender() override;
private: private:
void RegisterBinding(const std::string& api_name, void RegisterBinding(const std::string& api_name,
...@@ -45,6 +46,8 @@ class JsExtensionBindingsSystem : public ExtensionBindingsSystem { ...@@ -45,6 +46,8 @@ class JsExtensionBindingsSystem : public ExtensionBindingsSystem {
ResourceBundleSourceMap* source_map_ = nullptr; ResourceBundleSourceMap* source_map_ = nullptr;
std::unique_ptr<IPCMessageSender> ipc_message_sender_;
std::unique_ptr<RequestSender> request_sender_; std::unique_ptr<RequestSender> request_sender_;
DISALLOW_COPY_AND_ASSIGN(JsExtensionBindingsSystem); DISALLOW_COPY_AND_ASSIGN(JsExtensionBindingsSystem);
......
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
#include "extensions/renderer/console.h" #include "extensions/renderer/console.h"
#include "extensions/renderer/content_setting.h" #include "extensions/renderer/content_setting.h"
#include "extensions/renderer/declarative_content_hooks_delegate.h" #include "extensions/renderer/declarative_content_hooks_delegate.h"
#include "extensions/renderer/ipc_message_sender.h"
#include "extensions/renderer/module_system.h" #include "extensions/renderer/module_system.h"
#include "extensions/renderer/script_context.h" #include "extensions/renderer/script_context.h"
#include "extensions/renderer/script_context_set.h" #include "extensions/renderer/script_context_set.h"
...@@ -349,9 +350,9 @@ v8::Local<v8::Object> CreateFullBinding( ...@@ -349,9 +350,9 @@ v8::Local<v8::Object> CreateFullBinding(
} // namespace } // namespace
NativeExtensionBindingsSystem::NativeExtensionBindingsSystem( NativeExtensionBindingsSystem::NativeExtensionBindingsSystem(
const SendRequestIPCMethod& send_request_ipc, std::unique_ptr<IPCMessageSender> ipc_message_sender,
const SendEventListenerIPCMethod& send_event_listener_ipc) const SendEventListenerIPCMethod& send_event_listener_ipc)
: send_request_ipc_(send_request_ipc), : ipc_message_sender_(std::move(ipc_message_sender)),
send_event_listener_ipc_(send_event_listener_ipc), send_event_listener_ipc_(send_event_listener_ipc),
api_system_( api_system_(
base::Bind(&CallJsFunction), base::Bind(&CallJsFunction),
...@@ -559,12 +560,17 @@ void NativeExtensionBindingsSystem::HandleResponse( ...@@ -559,12 +560,17 @@ void NativeExtensionBindingsSystem::HandleResponse(
api_system_.CompleteRequest( api_system_.CompleteRequest(
request_id, response, request_id, response,
!success && error.empty() ? "Unknown error." : error); !success && error.empty() ? "Unknown error." : error);
ipc_message_sender_->SendOnRequestResponseReceivedIPC(request_id);
} }
RequestSender* NativeExtensionBindingsSystem::GetRequestSender() { RequestSender* NativeExtensionBindingsSystem::GetRequestSender() {
return nullptr; return nullptr;
} }
IPCMessageSender* NativeExtensionBindingsSystem::GetIPCMessageSender() {
return ipc_message_sender_.get();
}
void NativeExtensionBindingsSystem::BindingAccessor( void NativeExtensionBindingsSystem::BindingAccessor(
v8::Local<v8::Name> name, v8::Local<v8::Name> name,
const v8::PropertyCallbackInfo<v8::Value>& info) { const v8::PropertyCallbackInfo<v8::Value>& info) {
...@@ -733,7 +739,8 @@ void NativeExtensionBindingsSystem::SendRequest( ...@@ -733,7 +739,8 @@ void NativeExtensionBindingsSystem::SendRequest(
params->worker_thread_id = -1; params->worker_thread_id = -1;
params->service_worker_version_id = kInvalidServiceWorkerVersionId; params->service_worker_version_id = kInvalidServiceWorkerVersionId;
send_request_ipc_.Run(script_context, std::move(params), request->thread); ipc_message_sender_->SendRequestIPC(script_context, std::move(params),
request->thread);
} }
void NativeExtensionBindingsSystem::OnEventListenerChanged( void NativeExtensionBindingsSystem::OnEventListenerChanged(
......
...@@ -16,9 +16,8 @@ ...@@ -16,9 +16,8 @@
#include "extensions/renderer/extension_bindings_system.h" #include "extensions/renderer/extension_bindings_system.h"
#include "v8/include/v8.h" #include "v8/include/v8.h"
struct ExtensionHostMsg_Request_Params;
namespace extensions { namespace extensions {
class IPCMessageSender;
class ScriptContext; class ScriptContext;
// The implementation of the Bindings System for extensions code with native // The implementation of the Bindings System for extensions code with native
...@@ -29,11 +28,6 @@ class ScriptContext; ...@@ -29,11 +28,6 @@ class ScriptContext;
// Designed to be used in a single thread, but for all contexts on that thread. // Designed to be used in a single thread, but for all contexts on that thread.
class NativeExtensionBindingsSystem : public ExtensionBindingsSystem { class NativeExtensionBindingsSystem : public ExtensionBindingsSystem {
public: public:
// TODO(devlin): Instead, pass in an IPCMessageSender.
using SendRequestIPCMethod =
base::Callback<void(ScriptContext*,
std::unique_ptr<ExtensionHostMsg_Request_Params>,
binding::RequestThread)>;
using SendEventListenerIPCMethod = using SendEventListenerIPCMethod =
base::Callback<void(binding::EventListenersChanged, base::Callback<void(binding::EventListenersChanged,
ScriptContext*, ScriptContext*,
...@@ -42,7 +36,7 @@ class NativeExtensionBindingsSystem : public ExtensionBindingsSystem { ...@@ -42,7 +36,7 @@ class NativeExtensionBindingsSystem : public ExtensionBindingsSystem {
bool was_manual)>; bool was_manual)>;
NativeExtensionBindingsSystem( NativeExtensionBindingsSystem(
const SendRequestIPCMethod& send_request_ipc, std::unique_ptr<IPCMessageSender> ipc_message_sender,
const SendEventListenerIPCMethod& send_event_listener_ipc); const SendEventListenerIPCMethod& send_event_listener_ipc);
~NativeExtensionBindingsSystem() override; ~NativeExtensionBindingsSystem() override;
...@@ -61,6 +55,7 @@ class NativeExtensionBindingsSystem : public ExtensionBindingsSystem { ...@@ -61,6 +55,7 @@ class NativeExtensionBindingsSystem : public ExtensionBindingsSystem {
const base::ListValue& response, const base::ListValue& response,
const std::string& error) override; const std::string& error) override;
RequestSender* GetRequestSender() override; RequestSender* GetRequestSender() override;
IPCMessageSender* GetIPCMessageSender() override;
APIBindingsSystem* api_system() { return &api_system_; } APIBindingsSystem* api_system() { return &api_system_; }
...@@ -101,8 +96,7 @@ class NativeExtensionBindingsSystem : public ExtensionBindingsSystem { ...@@ -101,8 +96,7 @@ class NativeExtensionBindingsSystem : public ExtensionBindingsSystem {
void GetJSBindingUtil(v8::Local<v8::Context> context, void GetJSBindingUtil(v8::Local<v8::Context> context,
v8::Local<v8::Value>* binding_util_out); v8::Local<v8::Value>* binding_util_out);
// Handler to send request IPCs. Abstracted out for testing purposes. std::unique_ptr<IPCMessageSender> ipc_message_sender_;
SendRequestIPCMethod send_request_ipc_;
// Handler to notify the browser of event registrations. Abstracted out for // Handler to notify the browser of event registrations. Abstracted out for
// testing purposes. // testing purposes.
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#include "extensions/renderer/bindings/api_binding_test.h" #include "extensions/renderer/bindings/api_binding_test.h"
#include "extensions/renderer/bindings/api_binding_test_util.h" #include "extensions/renderer/bindings/api_binding_test_util.h"
#include "extensions/renderer/bindings/api_invocation_errors.h" #include "extensions/renderer/bindings/api_invocation_errors.h"
#include "extensions/renderer/ipc_message_sender.h"
#include "extensions/renderer/module_system.h" #include "extensions/renderer/module_system.h"
#include "extensions/renderer/safe_builtins.h" #include "extensions/renderer/safe_builtins.h"
#include "extensions/renderer/script_context.h" #include "extensions/renderer/script_context.h"
...@@ -88,6 +89,29 @@ bool PropertyExists(v8::Local<v8::Context> context, ...@@ -88,6 +89,29 @@ bool PropertyExists(v8::Local<v8::Context> context,
return !value->IsUndefined(); return !value->IsUndefined();
}; };
class TestIPCMessageSender : public IPCMessageSender {
public:
TestIPCMessageSender() {}
~TestIPCMessageSender() override {}
// IPCMessageSender:
void SendRequestIPC(ScriptContext* context,
std::unique_ptr<ExtensionHostMsg_Request_Params> params,
binding::RequestThread thread) override {
last_params_ = std::move(params);
}
void SendOnRequestResponseReceivedIPC(int request_id) override {}
const ExtensionHostMsg_Request_Params* last_params() const {
return last_params_.get();
}
private:
std::unique_ptr<ExtensionHostMsg_Request_Params> last_params_;
DISALLOW_COPY_AND_ASSIGN(TestIPCMessageSender);
};
} // namespace } // namespace
class NativeExtensionBindingsSystemUnittest : public APIBindingTest { class NativeExtensionBindingsSystemUnittest : public APIBindingTest {
...@@ -105,9 +129,10 @@ class NativeExtensionBindingsSystemUnittest : public APIBindingTest { ...@@ -105,9 +129,10 @@ class NativeExtensionBindingsSystemUnittest : public APIBindingTest {
void SetUp() override { void SetUp() override {
render_thread_ = base::MakeUnique<content::MockRenderThread>(); render_thread_ = base::MakeUnique<content::MockRenderThread>();
script_context_set_ = base::MakeUnique<ScriptContextSet>(&extension_ids_); script_context_set_ = base::MakeUnique<ScriptContextSet>(&extension_ids_);
auto ipc_message_sender = base::MakeUnique<TestIPCMessageSender>();
ipc_message_sender_ = ipc_message_sender.get();
bindings_system_ = base::MakeUnique<NativeExtensionBindingsSystem>( bindings_system_ = base::MakeUnique<NativeExtensionBindingsSystem>(
base::Bind(&NativeExtensionBindingsSystemUnittest::MockSendRequestIPC, std::move(ipc_message_sender),
base::Unretained(this)),
base::Bind(&NativeExtensionBindingsSystemUnittest::MockSendListenerIPC, base::Bind(&NativeExtensionBindingsSystemUnittest::MockSendListenerIPC,
base::Unretained(this))); base::Unretained(this)));
APIBindingTest::SetUp(); APIBindingTest::SetUp();
...@@ -131,13 +156,6 @@ class NativeExtensionBindingsSystemUnittest : public APIBindingTest { ...@@ -131,13 +156,6 @@ class NativeExtensionBindingsSystemUnittest : public APIBindingTest {
APIBindingTest::TearDown(); APIBindingTest::TearDown();
} }
void MockSendRequestIPC(
ScriptContext* context,
std::unique_ptr<ExtensionHostMsg_Request_Params> params,
binding::RequestThread thread) {
last_params_ = std::move(params);
}
void MockSendListenerIPC(binding::EventListenersChanged changed, void MockSendListenerIPC(binding::EventListenersChanged changed,
ScriptContext* context, ScriptContext* context,
const std::string& event_name, const std::string& event_name,
...@@ -187,8 +205,10 @@ class NativeExtensionBindingsSystemUnittest : public APIBindingTest { ...@@ -187,8 +205,10 @@ class NativeExtensionBindingsSystemUnittest : public APIBindingTest {
NativeExtensionBindingsSystem* bindings_system() { NativeExtensionBindingsSystem* bindings_system() {
return bindings_system_.get(); return bindings_system_.get();
} }
bool has_last_params() const { return !!last_params_; } bool has_last_params() const { return !!ipc_message_sender_->last_params(); }
const ExtensionHostMsg_Request_Params& last_params() { return *last_params_; } const ExtensionHostMsg_Request_Params& last_params() {
return *ipc_message_sender_->last_params();
}
StringSourceMap* source_map() { return &source_map_; } StringSourceMap* source_map() { return &source_map_; }
MockEventChangeHandler* event_change_handler() { MockEventChangeHandler* event_change_handler() {
return event_change_handler_.get(); return event_change_handler_.get();
...@@ -200,6 +220,8 @@ class NativeExtensionBindingsSystemUnittest : public APIBindingTest { ...@@ -200,6 +220,8 @@ class NativeExtensionBindingsSystemUnittest : public APIBindingTest {
std::unique_ptr<ScriptContextSet> script_context_set_; std::unique_ptr<ScriptContextSet> script_context_set_;
std::vector<ScriptContext*> raw_script_contexts_; std::vector<ScriptContext*> raw_script_contexts_;
std::unique_ptr<NativeExtensionBindingsSystem> bindings_system_; std::unique_ptr<NativeExtensionBindingsSystem> bindings_system_;
// The TestIPCMessageSender; owned by the bindings system.
TestIPCMessageSender* ipc_message_sender_ = nullptr;
std::unique_ptr<ExtensionHostMsg_Request_Params> last_params_; std::unique_ptr<ExtensionHostMsg_Request_Params> last_params_;
std::unique_ptr<MockEventChangeHandler> event_change_handler_; std::unique_ptr<MockEventChangeHandler> event_change_handler_;
......
...@@ -5,19 +5,16 @@ ...@@ -5,19 +5,16 @@
#include "extensions/renderer/service_worker_data.h" #include "extensions/renderer/service_worker_data.h"
#include "extensions/renderer/extension_bindings_system.h" #include "extensions/renderer/extension_bindings_system.h"
#include "extensions/renderer/ipc_message_sender.h"
namespace extensions { namespace extensions {
ServiceWorkerData::ServiceWorkerData( ServiceWorkerData::ServiceWorkerData(
int64_t service_worker_version_id, int64_t service_worker_version_id,
ScriptContext* context, ScriptContext* context,
std::unique_ptr<ExtensionBindingsSystem> bindings_system, std::unique_ptr<ExtensionBindingsSystem> bindings_system)
std::unique_ptr<IPCMessageSender> ipc_message_sender)
: service_worker_version_id_(service_worker_version_id), : service_worker_version_id_(service_worker_version_id),
context_(context), context_(context),
v8_schema_registry_(new V8SchemaRegistry), v8_schema_registry_(new V8SchemaRegistry),
ipc_message_sender_(std::move(ipc_message_sender)),
bindings_system_(std::move(bindings_system)) {} bindings_system_(std::move(bindings_system)) {}
ServiceWorkerData::~ServiceWorkerData() {} ServiceWorkerData::~ServiceWorkerData() {}
......
...@@ -12,7 +12,6 @@ ...@@ -12,7 +12,6 @@
namespace extensions { namespace extensions {
class ExtensionBindingsSystem; class ExtensionBindingsSystem;
class IPCMessageSender;
class ScriptContext; class ScriptContext;
// Per ServiceWorker data in worker thread. // Per ServiceWorker data in worker thread.
...@@ -21,8 +20,7 @@ class ServiceWorkerData { ...@@ -21,8 +20,7 @@ class ServiceWorkerData {
public: public:
ServiceWorkerData(int64_t service_worker_version_id, ServiceWorkerData(int64_t service_worker_version_id,
ScriptContext* context, ScriptContext* context,
std::unique_ptr<ExtensionBindingsSystem> bindings_system, std::unique_ptr<ExtensionBindingsSystem> bindings_system);
std::unique_ptr<IPCMessageSender> ipc_message_sender);
~ServiceWorkerData(); ~ServiceWorkerData();
V8SchemaRegistry* v8_schema_registry() { return v8_schema_registry_.get(); } V8SchemaRegistry* v8_schema_registry() { return v8_schema_registry_.get(); }
...@@ -31,14 +29,12 @@ class ServiceWorkerData { ...@@ -31,14 +29,12 @@ class ServiceWorkerData {
return service_worker_version_id_; return service_worker_version_id_;
} }
ScriptContext* context() const { return context_; } ScriptContext* context() const { return context_; }
IPCMessageSender* ipc_message_sender() { return ipc_message_sender_.get(); }
private: private:
const int64_t service_worker_version_id_; const int64_t service_worker_version_id_;
ScriptContext* const context_; ScriptContext* const context_;
std::unique_ptr<V8SchemaRegistry> v8_schema_registry_; std::unique_ptr<V8SchemaRegistry> v8_schema_registry_;
std::unique_ptr<IPCMessageSender> ipc_message_sender_;
std::unique_ptr<ExtensionBindingsSystem> bindings_system_; std::unique_ptr<ExtensionBindingsSystem> bindings_system_;
DISALLOW_COPY_AND_ASSIGN(ServiceWorkerData); DISALLOW_COPY_AND_ASSIGN(ServiceWorkerData);
......
...@@ -135,7 +135,6 @@ void WorkerThreadDispatcher::OnResponseWorker(int worker_thread_id, ...@@ -135,7 +135,6 @@ void WorkerThreadDispatcher::OnResponseWorker(int worker_thread_id,
ServiceWorkerData* data = g_data_tls.Pointer()->Get(); ServiceWorkerData* data = g_data_tls.Pointer()->Get();
data->bindings_system()->HandleResponse(request_id, succeeded, response, data->bindings_system()->HandleResponse(request_id, succeeded, response,
error); error);
data->ipc_message_sender()->SendOnRequestResponseReceivedIPC(request_id);
} }
void WorkerThreadDispatcher::OnDispatchEvent( void WorkerThreadDispatcher::OnDispatchEvent(
...@@ -165,17 +164,13 @@ void WorkerThreadDispatcher::AddWorkerData( ...@@ -165,17 +164,13 @@ void WorkerThreadDispatcher::AddWorkerData(
// The Unretained below is safe since the IPC message sender outlives the // The Unretained below is safe since the IPC message sender outlives the
// bindings system. // bindings system.
bindings_system = base::MakeUnique<NativeExtensionBindingsSystem>( bindings_system = base::MakeUnique<NativeExtensionBindingsSystem>(
base::Bind(&IPCMessageSender::SendRequestIPC, std::move(ipc_message_sender), base::Bind(&SendEventListenersIPC));
base::Unretained(ipc_message_sender.get())),
base::Bind(&SendEventListenersIPC));
} else { } else {
bindings_system = base::MakeUnique<JsExtensionBindingsSystem>( bindings_system = base::MakeUnique<JsExtensionBindingsSystem>(
source_map, source_map, std::move(ipc_message_sender));
base::MakeUnique<RequestSender>(ipc_message_sender.get()));
} }
ServiceWorkerData* new_data = new ServiceWorkerData( ServiceWorkerData* new_data = new ServiceWorkerData(
service_worker_version_id, context, std::move(bindings_system), service_worker_version_id, context, std::move(bindings_system));
std::move(ipc_message_sender));
g_data_tls.Pointer()->Set(new_data); g_data_tls.Pointer()->Set(new_data);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment