| Index: extensions/renderer/dispatcher.cc
|
| diff --git a/extensions/renderer/dispatcher.cc b/extensions/renderer/dispatcher.cc
|
| index ed9e4046966bebdd93f22ee976b9ac34a0293133..abf92a9f0863cbe9736365d9cefb4fc1612a6225 100644
|
| --- a/extensions/renderer/dispatcher.cc
|
| +++ b/extensions/renderer/dispatcher.cc
|
| @@ -70,6 +70,7 @@
|
| #include "extensions/renderer/print_native_handler.h"
|
| #include "extensions/renderer/process_info_native_handler.h"
|
| #include "extensions/renderer/render_frame_observer_natives.h"
|
| +#include "extensions/renderer/renderer_extension_registry.h"
|
| #include "extensions/renderer/request_sender.h"
|
| #include "extensions/renderer/runtime_custom_bindings.h"
|
| #include "extensions/renderer/safe_builtins.h"
|
| @@ -202,11 +203,10 @@ Dispatcher::Dispatcher(DispatcherDelegate* delegate)
|
| kInitialExtensionIdleHandlerDelayMs);
|
| }
|
|
|
| - script_context_set_.reset(
|
| - new ScriptContextSet(&extensions_, &active_extension_ids_));
|
| - user_script_set_manager_.reset(new UserScriptSetManager(&extensions_));
|
| + script_context_set_.reset(new ScriptContextSet(&active_extension_ids_));
|
| + user_script_set_manager_.reset(new UserScriptSetManager());
|
| script_injection_manager_.reset(
|
| - new ScriptInjectionManager(&extensions_, user_script_set_manager_.get()));
|
| + new ScriptInjectionManager(user_script_set_manager_.get()));
|
| user_script_set_manager_observer_.Add(user_script_set_manager_.get());
|
| request_sender_.reset(new RequestSender(this));
|
| PopulateSourceMap();
|
| @@ -223,7 +223,7 @@ bool Dispatcher::IsExtensionActive(const std::string& extension_id) const {
|
| bool is_active =
|
| active_extension_ids_.find(extension_id) != active_extension_ids_.end();
|
| if (is_active)
|
| - CHECK(extensions_.Contains(extension_id));
|
| + CHECK(RendererExtensionRegistry::Get()->Contains(extension_id));
|
| return is_active;
|
| }
|
|
|
| @@ -341,7 +341,8 @@ void Dispatcher::DidCreateDocumentElement(blink::WebLocalFrame* frame) {
|
| frame, frame->document().url(), true /* match_about_blank */);
|
|
|
| const Extension* extension =
|
| - extensions_.GetExtensionOrAppByURL(effective_document_url);
|
| + RendererExtensionRegistry::Get()->GetExtensionOrAppByURL(
|
| + effective_document_url);
|
|
|
| if (extension &&
|
| (extension->is_extension() || extension->is_platform_app())) {
|
| @@ -423,7 +424,8 @@ void Dispatcher::InvokeModuleSystemMethod(content::RenderFrame* render_frame,
|
|
|
| // Tell the browser process when an event has been dispatched with a lazy
|
| // background page active.
|
| - const Extension* extension = extensions_.GetByID(extension_id);
|
| + const Extension* extension =
|
| + RendererExtensionRegistry::Get()->GetByID(extension_id);
|
| if (extension && BackgroundInfo::HasLazyBackgroundPage(extension) &&
|
| module_name == kEventBindings &&
|
| function_name == kEventDispatchFunction) {
|
| @@ -710,10 +712,6 @@ void Dispatcher::RegisterNativeHandlers(ModuleSystem* module_system,
|
| "runtime", scoped_ptr<NativeHandler>(new RuntimeCustomBindings(context)));
|
| }
|
|
|
| -void Dispatcher::LoadExtensionForTest(const Extension* extension) {
|
| - CHECK(extensions_.Insert(extension));
|
| -}
|
| -
|
| bool Dispatcher::OnControlMessageReceived(const IPC::Message& message) {
|
| bool handled = true;
|
| IPC_BEGIN_MESSAGE_MAP(Dispatcher, message)
|
| @@ -765,7 +763,8 @@ void Dispatcher::WebKitInitialized() {
|
| // Initialize host permissions for any extensions that were activated before
|
| // WebKit was initialized.
|
| for (const std::string& extension_id : active_extension_ids_) {
|
| - const Extension* extension = extensions_.GetByID(extension_id);
|
| + const Extension* extension =
|
| + RendererExtensionRegistry::Get()->GetByID(extension_id);
|
| CHECK(extension);
|
| InitOriginPermissions(extension);
|
| }
|
| @@ -799,7 +798,8 @@ void Dispatcher::OnRenderProcessShutdown() {
|
| }
|
|
|
| void Dispatcher::OnActivateExtension(const std::string& extension_id) {
|
| - const Extension* extension = extensions_.GetByID(extension_id);
|
| + const Extension* extension =
|
| + RendererExtensionRegistry::Get()->GetByID(extension_id);
|
| if (!extension) {
|
| // Extension was activated but was never loaded. This probably means that
|
| // the renderer failed to load it (or the browser failed to tell us when it
|
| @@ -889,6 +889,8 @@ void Dispatcher::OnLoaded(
|
| continue;
|
| }
|
|
|
| + RendererExtensionRegistry* extension_registry =
|
| + RendererExtensionRegistry::Get();
|
| // TODO(kalman): This test is deliberately not a CHECK (though I wish it
|
| // could be) and uses extension->id() not params.id:
|
| // 1. For some reason params.id can be empty. I've only seen it with
|
| @@ -898,8 +900,8 @@ void Dispatcher::OnLoaded(
|
| // Dispatcher is attached to a RenderThread. Presumably there is a
|
| // mismatch there. In theory one would think it's possible for the
|
| // browser to figure this out itself - but again, cost/benefit.
|
| - if (!extensions_.Contains(extension->id()))
|
| - extensions_.Insert(extension);
|
| + if (!extension_registry->Contains(extension->id()))
|
| + extension_registry->Insert(extension);
|
| }
|
|
|
| // Update the available bindings for all contexts. These may have changed if
|
| @@ -962,7 +964,7 @@ void Dispatcher::OnTransferBlobs(const std::vector<std::string>& blob_uuids) {
|
| void Dispatcher::OnUnloaded(const std::string& id) {
|
| // See comment in OnLoaded for why it would be nice, but perhaps incorrect,
|
| // to CHECK here rather than guarding.
|
| - if (!extensions_.Remove(id))
|
| + if (!RendererExtensionRegistry::Get()->Remove(id))
|
| return;
|
|
|
| active_extension_ids_.erase(id);
|
| @@ -998,7 +1000,8 @@ void Dispatcher::OnUnloaded(const std::string& id) {
|
|
|
| void Dispatcher::OnUpdatePermissions(
|
| const ExtensionMsg_UpdatePermissions_Params& params) {
|
| - const Extension* extension = extensions_.GetByID(params.extension_id);
|
| + const Extension* extension =
|
| + RendererExtensionRegistry::Get()->GetByID(params.extension_id);
|
| if (!extension)
|
| return;
|
|
|
| @@ -1023,7 +1026,8 @@ void Dispatcher::OnUpdateTabSpecificPermissions(const GURL& visible_url,
|
| const URLPatternSet& new_hosts,
|
| bool update_origin_whitelist,
|
| int tab_id) {
|
| - const Extension* extension = extensions_.GetByID(extension_id);
|
| + const Extension* extension =
|
| + RendererExtensionRegistry::Get()->GetByID(extension_id);
|
| if (!extension)
|
| return;
|
|
|
| @@ -1049,7 +1053,7 @@ void Dispatcher::OnClearTabSpecificPermissions(
|
| bool update_origin_whitelist,
|
| int tab_id) {
|
| for (const std::string& id : extension_ids) {
|
| - const Extension* extension = extensions_.GetByID(id);
|
| + const Extension* extension = RendererExtensionRegistry::Get()->GetByID(id);
|
| if (extension) {
|
| URLPatternSet old_effective =
|
| extension->permissions_data()->GetEffectiveHostPermissions();
|
| @@ -1283,7 +1287,8 @@ void Dispatcher::RegisterNativeHandlers(ModuleSystem* module_system,
|
| }
|
|
|
| bool Dispatcher::IsRuntimeAvailableToContext(ScriptContext* context) {
|
| - for (const auto& extension : extensions_) {
|
| + for (const auto& extension :
|
| + *RendererExtensionRegistry::Get()->GetMainThreadExtensionSet()) {
|
| ExternallyConnectableInfo* info = static_cast<ExternallyConnectableInfo*>(
|
| extension->GetManifestData(manifest_keys::kExternallyConnectable));
|
| if (info && info->matches.MatchesURL(context->GetURL()))
|
| @@ -1294,7 +1299,8 @@ bool Dispatcher::IsRuntimeAvailableToContext(ScriptContext* context) {
|
|
|
| void Dispatcher::UpdateContentCapabilities(ScriptContext* context) {
|
| APIPermissionSet permissions;
|
| - for (const auto& extension : extensions_) {
|
| + for (const auto& extension :
|
| + *RendererExtensionRegistry::Get()->GetMainThreadExtensionSet()) {
|
| const ContentCapabilitiesInfo& info =
|
| ContentCapabilitiesInfo::Get(extension.get());
|
| if (info.url_patterns.MatchesURL(context->GetURL())) {
|
| @@ -1321,7 +1327,8 @@ bool Dispatcher::IsWithinPlatformApp() {
|
| for (std::set<std::string>::iterator iter = active_extension_ids_.begin();
|
| iter != active_extension_ids_.end();
|
| ++iter) {
|
| - const Extension* extension = extensions_.GetByID(*iter);
|
| + const Extension* extension =
|
| + RendererExtensionRegistry::Get()->GetByID(*iter);
|
| if (extension && extension->is_platform_app())
|
| return true;
|
| }
|
|
|