diff options
27 files changed, 232 insertions, 201 deletions
diff --git a/chrome/chrome_renderer.gypi b/chrome/chrome_renderer.gypi index 314d855..116e33f 100644 --- a/chrome/chrome_renderer.gypi +++ b/chrome/chrome_renderer.gypi @@ -65,11 +65,11 @@ 'renderer/extensions/extension_base.h', 'renderer/extensions/extension_bindings_context.cc', 'renderer/extensions/extension_bindings_context.h', - 'renderer/extensions/extension_dispatcher.cc', - 'renderer/extensions/extension_dispatcher.h', 'renderer/extensions/extension_groups.h', - 'renderer/extensions/extension_helper.cc', - 'renderer/extensions/extension_helper.h', + 'renderer/extensions/extension_render_view_helper.cc', + 'renderer/extensions/extension_render_view_helper.h', + 'renderer/extensions/extension_renderer_context.cc', + 'renderer/extensions/extension_renderer_context.h', 'renderer/extensions/extension_process_bindings.cc', 'renderer/extensions/extension_process_bindings.h', 'renderer/extensions/extension_resource_request_policy.cc', diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc index 5fb7168..1a32d67 100644 --- a/chrome/renderer/chrome_content_renderer_client.cc +++ b/chrome/renderer/chrome_content_renderer_client.cc @@ -16,10 +16,10 @@ #include "chrome/common/chrome_content_client.h" #include "chrome/common/chrome_paths.h" #include "chrome/common/chrome_switches.h" -#include "chrome/common/external_ipc_fuzzer.h" #include "chrome/common/extensions/extension.h" #include "chrome/common/extensions/extension_constants.h" #include "chrome/common/extensions/extension_set.h" +#include "chrome/common/external_ipc_fuzzer.h" #include "chrome/common/jstemplate_builder.h" #include "chrome/common/render_messages.h" #include "chrome/common/url_constants.h" @@ -34,9 +34,9 @@ #include "chrome/renderer/chrome_render_view_observer.h" #include "chrome/renderer/content_settings_observer.h" #include "chrome/renderer/extensions/extension_bindings_context.h" -#include "chrome/renderer/extensions/extension_dispatcher.h" -#include "chrome/renderer/extensions/extension_helper.h" #include "chrome/renderer/extensions/extension_process_bindings.h" +#include "chrome/renderer/extensions/extension_render_view_helper.h" +#include "chrome/renderer/extensions/extension_renderer_context.h" #include "chrome/renderer/extensions/extension_resource_request_policy.h" #include "chrome/renderer/extensions/renderer_extension_bindings.h" #include "chrome/renderer/external_extension.h" @@ -153,7 +153,7 @@ ChromeContentRendererClient::~ChromeContentRendererClient() { void ChromeContentRendererClient::RenderThreadStarted() { chrome_observer_.reset(new ChromeRenderProcessObserver(this)); - extension_dispatcher_.reset(new ExtensionDispatcher()); + extension_renderer_context_.reset(new ExtensionRendererContext()); histogram_snapshots_.reset(new RendererHistogramSnapshots()); net_predictor_.reset(new RendererNetPredictor()); spellcheck_.reset(new SpellCheck()); @@ -165,7 +165,7 @@ void ChromeContentRendererClient::RenderThreadStarted() { RenderThread* thread = RenderThread::current(); thread->AddObserver(chrome_observer_.get()); - thread->AddObserver(extension_dispatcher_.get()); + thread->AddObserver(extension_renderer_context_.get()); thread->AddObserver(histogram_snapshots_.get()); #if defined(ENABLE_SAFE_BROWSING) thread->AddObserver(phishing_classifier_.get()); @@ -216,7 +216,7 @@ void ChromeContentRendererClient::RenderThreadStarted() { void ChromeContentRendererClient::RenderViewCreated(RenderView* render_view) { ContentSettingsObserver* content_settings = new ContentSettingsObserver(render_view); - new ExtensionHelper(render_view, extension_dispatcher_.get()); + new ExtensionRenderViewHelper(render_view, extension_renderer_context_.get()); new PageLoadHistograms(render_view, histogram_snapshots_.get()); new PrintWebViewHelper(render_view); new SearchBox(render_view); @@ -242,7 +242,8 @@ void ChromeContentRendererClient::RenderViewCreated(RenderView* render_view) { TranslateHelper* translate = new TranslateHelper(render_view, autofill_agent); new ChromeRenderViewObserver( - render_view, content_settings, extension_dispatcher_.get(), translate); + render_view, content_settings, extension_renderer_context_.get(), + translate); // Used only for testing/automation. if (CommandLine::ForCurrentProcess()->HasSwitch( @@ -434,7 +435,7 @@ WebPlugin* ChromeContentRendererClient::CreatePluginImpl( // that was installed from the Chrome Web Store, or part of a component // extension, or part of an unpacked extension. const Extension* extension = - extension_dispatcher_->extensions()->GetByURL(nexe_url); + extension_renderer_context_->extensions()->GetByURL(nexe_url); allow_nacl = extension && (extension->from_webstore() || extension->location() == Extension::COMPONENT || @@ -534,7 +535,7 @@ std::string ChromeContentRendererClient::GetNavigationErrorHtml( int resource_id; DictionaryValue error_strings; if (failed_url.is_valid() && !failed_url.SchemeIs(chrome::kExtensionScheme)) - extension = extension_dispatcher_->extensions()->GetByURL(failed_url); + extension = extension_renderer_context_->extensions()->GetByURL(failed_url); if (extension) { LocalizedError::GetAppErrorStrings(error, failed_url, extension, &error_strings); @@ -567,13 +568,13 @@ std::string ChromeContentRendererClient::GetNavigationErrorHtml( } bool ChromeContentRendererClient::RunIdleHandlerWhenWidgetsHidden() { - return !extension_dispatcher_->is_extension_process(); + return !extension_renderer_context_->is_extension_process(); } bool ChromeContentRendererClient::AllowPopup(const GURL& creator) { // Extensions and apps always allowed to create unrequested popups. The second // check is necessary to include content scripts. - return extension_dispatcher_->extensions()->GetByURL(creator) || + return extension_renderer_context_->extensions()->GetByURL(creator) || ExtensionBindingsContext::GetCurrent(); } @@ -597,7 +598,7 @@ bool ChromeContentRendererClient::ShouldFork(WebFrame* frame, if (is_content_initiated) { const Extension* extension = - extension_dispatcher_->extensions()->GetByURL(url); + extension_renderer_context_->extensions()->GetByURL(url); if (extension && extension->is_app()) { UMA_HISTOGRAM_ENUMERATION( extension_misc::kAppLaunchHistogram, @@ -619,7 +620,7 @@ bool ChromeContentRendererClient::WillSendRequest(WebKit::WebFrame* frame, !ExtensionResourceRequestPolicy::CanRequestResource( url, GURL(frame->document().url()), - extension_dispatcher_->extensions())) { + extension_renderer_context_->extensions())) { *new_url = GURL("chrome-extension://invalid/"); return true; } @@ -645,7 +646,7 @@ void ChromeContentRendererClient::DidCreateScriptContext(WebFrame* frame) { ExtensionBindingsContext::HandleV8ContextCreated( frame, frame->mainWorldScriptContext(), - extension_dispatcher_.get(), + extension_renderer_context_.get(), 0); // isolated world id } @@ -658,7 +659,7 @@ void ChromeContentRendererClient::DidCreateIsolatedScriptContext( ExtensionBindingsContext::HandleV8ContextCreated( frame, context, - extension_dispatcher_.get(), + extension_renderer_context_.get(), world_id); } @@ -715,16 +716,16 @@ bool ChromeContentRendererClient::HandleSetCookieRequest( } -void ChromeContentRendererClient::SetExtensionDispatcher( - ExtensionDispatcher* extension_dispatcher) { - extension_dispatcher_.reset(extension_dispatcher); +void ChromeContentRendererClient::SetExtensionRendererContext( + ExtensionRendererContext* extension_renderer_context) { + extension_renderer_context_.reset(extension_renderer_context); } bool ChromeContentRendererClient::CrossesExtensionExtents( WebFrame* frame, const GURL& new_url, bool is_initial_navigation) { - const ExtensionSet* extensions = extension_dispatcher_->extensions(); + const ExtensionSet* extensions = extension_renderer_context_->extensions(); bool is_extension_url = !!extensions->GetByURL(new_url); GURL old_url(frame->top()->document().url()); @@ -739,7 +740,7 @@ bool ChromeContentRendererClient::CrossesExtensionExtents( WebSecurityOrigin opener = frame->opener()->document().securityOrigin(); if (!is_extension_url && !opener_is_extension_url && - extension_dispatcher_->is_extension_process() && + extension_renderer_context_->is_extension_process() && opener.canRequest(WebURL(new_url))) return false; @@ -754,7 +755,7 @@ bool ChromeContentRendererClient::CrossesExtensionExtents( // in a normal process, or if it's a process for an extension that has been // uninstalled. if (old_url == new_url) { - if (is_extension_url != extension_dispatcher_->is_extension_process()) + if (is_extension_url != extension_renderer_context_->is_extension_process()) return true; } diff --git a/chrome/renderer/chrome_content_renderer_client.h b/chrome/renderer/chrome_content_renderer_client.h index 1b9073e..bd841b7 100644 --- a/chrome/renderer/chrome_content_renderer_client.h +++ b/chrome/renderer/chrome_content_renderer_client.h @@ -13,7 +13,7 @@ #include "content/renderer/content_renderer_client.h" class ChromeRenderProcessObserver; -class ExtensionDispatcher; +class ExtensionRendererContext; class RendererHistogramSnapshots; class RendererNetPredictor; class SpellCheck; @@ -85,7 +85,8 @@ class ChromeContentRendererClient : public content::ContentRendererClient { const std::string& value) OVERRIDE; // For testing. - void SetExtensionDispatcher(ExtensionDispatcher* extension_dispatcher); + void SetExtensionRendererContext( + ExtensionRendererContext* extension_renderer_context); // Called in low-memory conditions to dump the memory used by the spellchecker // and start over. @@ -115,7 +116,7 @@ class ChromeContentRendererClient : public content::ContentRendererClient { bool is_initial_navigation); scoped_ptr<ChromeRenderProcessObserver> chrome_observer_; - scoped_ptr<ExtensionDispatcher> extension_dispatcher_; + scoped_ptr<ExtensionRendererContext> extension_renderer_context_; scoped_ptr<RendererHistogramSnapshots> histogram_snapshots_; scoped_ptr<RendererNetPredictor> net_predictor_; scoped_ptr<SpellCheck> spellcheck_; diff --git a/chrome/renderer/chrome_render_view_observer.cc b/chrome/renderer/chrome_render_view_observer.cc index b7fae081..6e7c1e5 100644 --- a/chrome/renderer/chrome_render_view_observer.cc +++ b/chrome/renderer/chrome_render_view_observer.cc @@ -17,7 +17,7 @@ #include "chrome/renderer/about_handler.h" #include "chrome/renderer/content_settings_observer.h" #include "chrome/renderer/automation/dom_automation_controller.h" -#include "chrome/renderer/extensions/extension_dispatcher.h" +#include "chrome/renderer/extensions/extension_renderer_context.h" #include "chrome/renderer/external_host_bindings.h" #include "chrome/renderer/prerender/prerender_helper.h" #include "chrome/renderer/safe_browsing/phishing_classifier_delegate.h" @@ -197,11 +197,11 @@ GURL StripRef(const GURL& url) { ChromeRenderViewObserver::ChromeRenderViewObserver( RenderView* render_view, ContentSettingsObserver* content_settings, - ExtensionDispatcher* extension_dispatcher, + ExtensionRendererContext* extension_renderer_context, TranslateHelper* translate_helper) : RenderViewObserver(render_view), content_settings_(content_settings), - extension_dispatcher_(extension_dispatcher), + extension_renderer_context_(extension_renderer_context), translate_helper_(translate_helper), phishing_classifier_(NULL), last_indexed_page_id_(-1), @@ -377,7 +377,7 @@ bool ChromeRenderViewObserver::allowScript(WebFrame* frame, bool ChromeRenderViewObserver::allowScriptExtension( WebFrame* frame, const WebString& extension_name, int extension_group) { - return extension_dispatcher_->AllowScriptExtension( + return extension_renderer_context_->AllowScriptExtension( frame, extension_name.utf8(), extension_group); } diff --git a/chrome/renderer/chrome_render_view_observer.h b/chrome/renderer/chrome_render_view_observer.h index 4d06aea..baba525 100644 --- a/chrome/renderer/chrome_render_view_observer.h +++ b/chrome/renderer/chrome_render_view_observer.h @@ -18,7 +18,7 @@ class ContentSettingsObserver; class DomAutomationController; -class ExtensionDispatcher; +class ExtensionRendererContext; class ExternalHostBindings; class FilePath; class SkBitmap; @@ -43,7 +43,7 @@ class ChromeRenderViewObserver : public RenderViewObserver, ChromeRenderViewObserver( RenderView* render_view, ContentSettingsObserver* content_settings, - ExtensionDispatcher* extension_dispatcher, + ExtensionRendererContext* extension_renderer_context, TranslateHelper* translate_helper); virtual ~ChromeRenderViewObserver(); @@ -170,7 +170,7 @@ class ChromeRenderViewObserver : public RenderViewObserver, // Have the same lifetime as us. ContentSettingsObserver* content_settings_; - ExtensionDispatcher* extension_dispatcher_; + ExtensionRendererContext* extension_renderer_context_; TranslateHelper* translate_helper_; safe_browsing::PhishingClassifierDelegate* phishing_classifier_; diff --git a/chrome/renderer/extensions/chrome_app_bindings.cc b/chrome/renderer/extensions/chrome_app_bindings.cc index b52b7ca..82f9f41 100644 --- a/chrome/renderer/extensions/chrome_app_bindings.cc +++ b/chrome/renderer/extensions/chrome_app_bindings.cc @@ -12,8 +12,8 @@ #include "base/values.h" #include "chrome/common/chrome_switches.h" #include "chrome/common/extensions/extension_set.h" -#include "chrome/renderer/extensions/extension_dispatcher.h" -#include "chrome/renderer/extensions/extension_helper.h" +#include "chrome/renderer/extensions/extension_render_view_helper.h" +#include "chrome/renderer/extensions/extension_renderer_context.h" #include "content/renderer/render_view.h" #include "content/renderer/v8_value_converter.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h" @@ -59,7 +59,8 @@ static const char* const kAppExtensionName = "v8/ChromeApp"; class ChromeAppExtensionWrapper : public v8::Extension { public: - explicit ChromeAppExtensionWrapper(ExtensionDispatcher* extension_dispatcher) : + explicit ChromeAppExtensionWrapper( + ExtensionRendererContext* extension_renderer_context) : v8::Extension(kAppExtensionName, "var chrome;" "if (!chrome)" @@ -76,11 +77,11 @@ class ChromeAppExtensionWrapper : public v8::Extension { " this.getDetailsForFrame = GetDetailsForFrame;" " };" "}") { - extension_dispatcher_ = extension_dispatcher; + extension_renderer_context_ = extension_renderer_context; } ~ChromeAppExtensionWrapper() { - extension_dispatcher_ = NULL; + extension_renderer_context_ = NULL; } virtual v8::Handle<v8::FunctionTemplate> GetNativeFunction( @@ -110,10 +111,11 @@ class ChromeAppExtensionWrapper : public v8::Extension { return v8::False(); const ::Extension* extension = - extension_dispatcher_->extensions()->GetByURL(frame->document().url()); + extension_renderer_context_->extensions()->GetByURL( + frame->document().url()); bool has_web_extent = extension && - extension_dispatcher_->IsApplicationActive(extension->id()); + extension_renderer_context_->IsApplicationActive(extension->id()); return v8::Boolean::New(has_web_extent); } @@ -127,7 +129,8 @@ class ChromeAppExtensionWrapper : public v8::Extension { return v8::Undefined(); string16 error; - ExtensionHelper* helper = ExtensionHelper::Get(render_view); + ExtensionRenderViewHelper* helper = + ExtensionRenderViewHelper::Get(render_view); if (!helper->InstallWebApplicationUsingDefinitionFile(frame, &error)) v8::ThrowException(v8::String::New(UTF16ToUTF8(error).c_str())); @@ -166,7 +169,8 @@ class ChromeAppExtensionWrapper : public v8::Extension { static v8::Handle<v8::Value> GetDetailsForFrameImpl(const WebFrame* frame) { const ::Extension* extension = - extension_dispatcher_->extensions()->GetByURL(frame->document().url()); + extension_renderer_context_->extensions()->GetByURL( + frame->document().url()); if (!extension) return v8::Null(); @@ -178,14 +182,15 @@ class ChromeAppExtensionWrapper : public v8::Extension { frame->mainWorldScriptContext()); } - static ExtensionDispatcher* extension_dispatcher_; + static ExtensionRendererContext* extension_renderer_context_; }; -ExtensionDispatcher* ChromeAppExtensionWrapper::extension_dispatcher_; +ExtensionRendererContext* + ChromeAppExtensionWrapper::extension_renderer_context_; v8::Extension* ChromeAppExtension::Get( - ExtensionDispatcher* extension_dispatcher) { - return new ChromeAppExtensionWrapper(extension_dispatcher); + ExtensionRendererContext* extension_renderer_context) { + return new ChromeAppExtensionWrapper(extension_renderer_context); } } // namespace extensions_v8 diff --git a/chrome/renderer/extensions/chrome_app_bindings.h b/chrome/renderer/extensions/chrome_app_bindings.h index 8e7da1b..e58ebd8 100644 --- a/chrome/renderer/extensions/chrome_app_bindings.h +++ b/chrome/renderer/extensions/chrome_app_bindings.h @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -12,7 +12,7 @@ #define CHROME_RENDERER_EXTENSIONS_CHROME_APP_BINDINGS_H_ #pragma once -class ExtensionDispatcher; +class ExtensionRendererContext; namespace v8 { class Extension; @@ -22,7 +22,8 @@ namespace extensions_v8 { class ChromeAppExtension { public: - static v8::Extension* Get(ExtensionDispatcher* extension_dispatcher); + static v8::Extension* Get( + ExtensionRendererContext* extension_renderer_context); }; } // namespace extensions_v8 diff --git a/chrome/renderer/extensions/chrome_webstore_bindings.cc b/chrome/renderer/extensions/chrome_webstore_bindings.cc index 1f32fa2..feba7c4c 100644 --- a/chrome/renderer/extensions/chrome_webstore_bindings.cc +++ b/chrome/renderer/extensions/chrome_webstore_bindings.cc @@ -6,7 +6,7 @@ #include "base/string_util.h" #include "chrome/common/extensions/extension.h" -#include "chrome/renderer/extensions/extension_helper.h" +#include "chrome/renderer/extensions/extension_render_view_helper.h" #include "content/renderer/render_view.h" #include "googleurl/src/gurl.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h" @@ -74,7 +74,8 @@ class ChromeWebstoreExtensionWrapper : public v8::Extension { std::string webstore_item_id; std::string error; if (GetWebstoreItemIdFromFrame(frame, &webstore_item_id, &error)) { - ExtensionHelper* helper = ExtensionHelper::Get(render_view); + ExtensionRenderViewHelper* helper = + ExtensionRenderViewHelper::Get(render_view); helper->InlineWebstoreInstall(webstore_item_id); } else { v8::ThrowException(v8::String::New(error.c_str())); diff --git a/chrome/renderer/extensions/event_bindings.cc b/chrome/renderer/extensions/event_bindings.cc index ed65e3f..679d85c 100644 --- a/chrome/renderer/extensions/event_bindings.cc +++ b/chrome/renderer/extensions/event_bindings.cc @@ -15,8 +15,8 @@ #include "chrome/renderer/extensions/event_bindings.h" #include "chrome/renderer/extensions/extension_base.h" #include "chrome/renderer/extensions/extension_bindings_context.h" -#include "chrome/renderer/extensions/extension_dispatcher.h" #include "chrome/renderer/extensions/extension_process_bindings.h" +#include "chrome/renderer/extensions/extension_renderer_context.h" #include "chrome/renderer/extensions/js_only_v8_extensions.h" #include "chrome/renderer/extensions/user_script_slave.h" #include "content/renderer/render_thread.h" @@ -59,10 +59,10 @@ static EventListenerCounts& GetListenerCounts(const std::string& extension_id) { class ExtensionImpl : public ExtensionBase { public: - explicit ExtensionImpl(ExtensionDispatcher* dispatcher) + explicit ExtensionImpl(ExtensionRendererContext* context) : ExtensionBase(EventBindings::kName, GetStringResource(IDR_EVENT_BINDINGS_JS), - 0, NULL, dispatcher) { + 0, NULL, context) { } ~ExtensionImpl() {} @@ -167,8 +167,8 @@ class ExtensionImpl : public ExtensionBase { const char* EventBindings::kName = "chrome/EventBindings"; -v8::Extension* EventBindings::Get(ExtensionDispatcher* dispatcher) { - static v8::Extension* extension = new ExtensionImpl(dispatcher); +v8::Extension* EventBindings::Get(ExtensionRendererContext* context) { + static v8::Extension* extension = new ExtensionImpl(context); return extension; } diff --git a/chrome/renderer/extensions/event_bindings.h b/chrome/renderer/extensions/event_bindings.h index 4599217..5e27928 100644 --- a/chrome/renderer/extensions/event_bindings.h +++ b/chrome/renderer/extensions/event_bindings.h @@ -8,7 +8,7 @@ #include "v8/include/v8.h" -class ExtensionDispatcher; +class ExtensionRendererContext; class RenderThreadBase; // This class deals with the javascript bindings related to Event objects. @@ -16,7 +16,7 @@ class EventBindings { public: static const char* kName; // The v8::Extension name, for dependencies. - static v8::Extension* Get(ExtensionDispatcher* dispatcher); + static v8::Extension* Get(ExtensionRendererContext* context); // Allow RenderThread to be mocked out. static void SetRenderThread(RenderThreadBase* thread); diff --git a/chrome/renderer/extensions/extension_base.cc b/chrome/renderer/extensions/extension_base.cc index 002c3b1..0529a51 100644 --- a/chrome/renderer/extensions/extension_base.cc +++ b/chrome/renderer/extensions/extension_base.cc @@ -10,7 +10,7 @@ #include "base/string_util.h" #include "chrome/common/extensions/extension.h" #include "chrome/common/extensions/extension_set.h" -#include "chrome/renderer/extensions/extension_dispatcher.h" +#include "chrome/renderer/extensions/extension_renderer_context.h" #include "content/renderer/render_view.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" @@ -69,7 +69,7 @@ const Extension* ExtensionBase::GetExtensionForCurrentRenderView() const { return NULL; // this can happen as a tab is closing. GURL url = renderview->webview()->mainFrame()->document().url(); - const ExtensionSet* extensions = extension_dispatcher_->extensions(); + const ExtensionSet* extensions = extension_renderer_context_->extensions(); if (!extensions->ExtensionBindingsAllowed(url)) return NULL; @@ -80,7 +80,7 @@ bool ExtensionBase::CheckPermissionForCurrentRenderView( const std::string& function_name) const { const ::Extension* extension = GetExtensionForCurrentRenderView(); if (extension && - extension_dispatcher_->IsExtensionActive(extension->id()) && + extension_renderer_context_->IsExtensionActive(extension->id()) && extension->HasAPIPermission(function_name)) return true; diff --git a/chrome/renderer/extensions/extension_base.h b/chrome/renderer/extensions/extension_base.h index 9e9efb1..0aa2cef 100644 --- a/chrome/renderer/extensions/extension_base.h +++ b/chrome/renderer/extensions/extension_base.h @@ -12,7 +12,7 @@ #include <string> class Extension; -class ExtensionDispatcher; +class ExtensionRendererContext; class RenderView; namespace WebKit { @@ -29,9 +29,9 @@ class ExtensionBase : public v8::Extension { const char* source, int dep_count, const char** deps, - ExtensionDispatcher* extension_dispatcher) + ExtensionRendererContext* extension_renderer_context) : v8::Extension(name, source, dep_count, deps), - extension_dispatcher_(extension_dispatcher) { + extension_renderer_context_(extension_renderer_context) { } // Derived classes should call this at the end of their implementation in @@ -41,7 +41,9 @@ class ExtensionBase : public v8::Extension { GetNativeFunction(v8::Handle<v8::String> name); // TODO(jstritar): Used for testing http://crbug.com/91582. Remove when done. - ExtensionDispatcher* extension_dispatcher() { return extension_dispatcher_; } + ExtensionRendererContext* extension_renderer_context() { + return extension_renderer_context_; + } // Returns a hidden variable for use by the bindings in the specified context // that is unreachable by the page for the current context. @@ -73,7 +75,7 @@ class ExtensionBase : public v8::Extension { // Returns the chromeHidden object for the current context. static v8::Handle<v8::Value> GetChromeHidden(const v8::Arguments& args); - ExtensionDispatcher* extension_dispatcher_; + ExtensionRendererContext* extension_renderer_context_; private: // Helper to print from bindings javascript. diff --git a/chrome/renderer/extensions/extension_bindings_context.cc b/chrome/renderer/extensions/extension_bindings_context.cc index e6dad05..de96c63 100644 --- a/chrome/renderer/extensions/extension_bindings_context.cc +++ b/chrome/renderer/extensions/extension_bindings_context.cc @@ -16,7 +16,7 @@ #include "chrome/common/extensions/extension_set.h" #include "chrome/renderer/chrome_render_process_observer.h" #include "chrome/renderer/extensions/extension_base.h" -#include "chrome/renderer/extensions/extension_dispatcher.h" +#include "chrome/renderer/extensions/extension_renderer_context.h" #include "chrome/renderer/extensions/user_script_slave.h" #include "content/common/url_constants.h" #include "content/renderer/render_view.h" @@ -59,7 +59,7 @@ static bool HasSufficientPermissions(RenderView* render_view, void ExtensionBindingsContext::HandleV8ContextCreated( WebKit::WebFrame* web_frame, const v8::Handle<v8::Context>& v8_context, - ExtensionDispatcher* extension_dispatcher, + ExtensionRendererContext* extension_renderer_context, int isolated_world_id) { std::string extension_id; @@ -72,14 +72,14 @@ void ExtensionBindingsContext::HandleV8ContextCreated( if (!ds) ds = web_frame->dataSource(); GURL url = ds->request().url(); - const ExtensionSet* extensions = extension_dispatcher->extensions(); + const ExtensionSet* extensions = extension_renderer_context->extensions(); extension_id = extensions->GetIdByURL(url); if (!extensions->ExtensionBindingsAllowed(url)) return; } else { extension_id = - extension_dispatcher->user_script_slave()-> + extension_renderer_context->user_script_slave()-> GetExtensionIdForIsolatedWorld(isolated_world_id); } @@ -92,7 +92,8 @@ void ExtensionBindingsContext::HandleV8ContextCreated( v8::HandleScope handle_scope; v8::Handle<v8::Value> argv[3]; argv[0] = v8::String::New(extension_id.c_str()); - argv[1] = v8::Boolean::New(extension_dispatcher->is_extension_process()); + argv[1] = v8::Boolean::New( + extension_renderer_context->is_extension_process()); argv[2] = v8::Boolean::New( ChromeRenderProcessObserver::is_incognito_process()); instance->CallChromeHiddenMethod("dispatchOnLoad", arraysize(argv), argv); diff --git a/chrome/renderer/extensions/extension_bindings_context.h b/chrome/renderer/extensions/extension_bindings_context.h index 44f8b0a..8f421e8 100644 --- a/chrome/renderer/extensions/extension_bindings_context.h +++ b/chrome/renderer/extensions/extension_bindings_context.h @@ -18,17 +18,18 @@ namespace WebKit { class WebFrame; } -class ExtensionDispatcher; +class ExtensionRendererContext; class GURL; class RenderView; // A v8 context that contains extension bindings. class ExtensionBindingsContext { public: - static void HandleV8ContextCreated(WebKit::WebFrame* frame, - const v8::Handle<v8::Context>& v8_context, - ExtensionDispatcher* extension_dispatcher, - int isolated_world_id); + static void HandleV8ContextCreated( + WebKit::WebFrame* frame, + const v8::Handle<v8::Context>& v8_context, + ExtensionRendererContext* extension_renderer_context, + int isolated_world_id); static void HandleV8ContextDestroyed(WebKit::WebFrame* frame); diff --git a/chrome/renderer/extensions/extension_process_bindings.cc b/chrome/renderer/extensions/extension_process_bindings.cc index 9cdc396..1bb5d36 100644 --- a/chrome/renderer/extensions/extension_process_bindings.cc +++ b/chrome/renderer/extensions/extension_process_bindings.cc @@ -26,10 +26,10 @@ #include "chrome/common/url_constants.h" #include "chrome/renderer/chrome_render_process_observer.h" #include "chrome/renderer/extensions/event_bindings.h" -#include "chrome/renderer/extensions/extension_bindings_context.h" #include "chrome/renderer/extensions/extension_base.h" -#include "chrome/renderer/extensions/extension_dispatcher.h" -#include "chrome/renderer/extensions/extension_helper.h" +#include "chrome/renderer/extensions/extension_bindings_context.h" +#include "chrome/renderer/extensions/extension_render_view_helper.h" +#include "chrome/renderer/extensions/extension_renderer_context.h" #include "chrome/renderer/extensions/js_only_v8_extensions.h" #include "chrome/renderer/extensions/renderer_extension_bindings.h" #include "chrome/renderer/extensions/user_script_slave.h" @@ -90,7 +90,8 @@ class ExtensionViewAccumulator : public RenderViewVisitor { v8::Local<v8::Array> views() { return views_; } virtual bool Visit(RenderView* render_view) { - ExtensionHelper* helper = ExtensionHelper::Get(render_view); + ExtensionRenderViewHelper* helper = + ExtensionRenderViewHelper::Get(render_view); if (!ViewTypeMatches(helper->view_type(), view_type_)) return true; @@ -152,12 +153,12 @@ class ExtensionViewAccumulator : public RenderViewVisitor { class ExtensionImpl : public ExtensionBase { public: - explicit ExtensionImpl(ExtensionDispatcher* extension_dispatcher) + explicit ExtensionImpl(ExtensionRendererContext* extension_renderer_context) : ExtensionBase(kExtensionName, GetStringResource(IDR_EXTENSION_PROCESS_BINDINGS_JS), arraysize(kExtensionDeps), kExtensionDeps, - extension_dispatcher) { + extension_renderer_context) { } ~ExtensionImpl() {} @@ -390,7 +391,7 @@ class ExtensionImpl : public ExtensionBase { ExtensionImpl* v8_extension = GetFromArguments<ExtensionImpl>(args); std::string extension_id = *v8::String::Utf8Value(args[0]->ToString()); const ::Extension* extension = - v8_extension->extension_dispatcher_->extensions()->GetByID( + v8_extension->extension_renderer_context_->extensions()->GetByID( extension_id); CHECK(!extension_id.empty()); if (!extension) @@ -421,7 +422,7 @@ class ExtensionImpl : public ExtensionBase { std::string name = *v8::String::AsciiValue(args[0]); const std::set<std::string>& function_names = - v8_extension->extension_dispatcher_->function_names(); + v8_extension->extension_renderer_context_->function_names(); if (function_names.find(name) == function_names.end()) { NOTREACHED() << "Unexpected function " << name; return v8::Undefined(); @@ -562,10 +563,12 @@ class ExtensionImpl : public ExtensionBase { } // namespace v8::Extension* ExtensionProcessBindings::Get( - ExtensionDispatcher* extension_dispatcher) { - static v8::Extension* extension = new ExtensionImpl(extension_dispatcher); - CHECK_EQ(extension_dispatcher, - static_cast<ExtensionImpl*>(extension)->extension_dispatcher()); + ExtensionRendererContext* extension_renderer_context) { + static v8::Extension* extension = + new ExtensionImpl(extension_renderer_context); + CHECK_EQ( + extension_renderer_context, + static_cast<ExtensionImpl*>(extension)->extension_renderer_context()); return extension; } diff --git a/chrome/renderer/extensions/extension_process_bindings.h b/chrome/renderer/extensions/extension_process_bindings.h index 7977370..d72ecc1 100644 --- a/chrome/renderer/extensions/extension_process_bindings.h +++ b/chrome/renderer/extensions/extension_process_bindings.h @@ -14,7 +14,7 @@ #include "v8/include/v8.h" -class ExtensionDispatcher; +class ExtensionRendererContext; class GURL; class URLPattern; @@ -24,7 +24,8 @@ class WebView; class ExtensionProcessBindings { public: - static v8::Extension* Get(ExtensionDispatcher* extension_dispatcher); + static v8::Extension* Get( + ExtensionRendererContext* extension_renderer_context); // Handles a response to an API request. static void HandleResponse(int request_id, bool success, diff --git a/chrome/renderer/extensions/extension_helper.cc b/chrome/renderer/extensions/extension_render_view_helper.cc index e1a1e27..b994321 100644 --- a/chrome/renderer/extensions/extension_helper.cc +++ b/chrome/renderer/extensions/extension_render_view_helper.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/renderer/extensions/extension_helper.h" +#include "chrome/renderer/extensions/extension_render_view_helper.h" #include "base/command_line.h" #include "base/lazy_instance.h" @@ -14,18 +14,18 @@ #include "chrome/common/url_constants.h" #include "chrome/renderer/extensions/event_bindings.h" #include "chrome/renderer/extensions/extension_bindings_context.h" -#include "chrome/renderer/extensions/extension_dispatcher.h" #include "chrome/renderer/extensions/extension_process_bindings.h" +#include "chrome/renderer/extensions/extension_renderer_context.h" #include "chrome/renderer/extensions/user_script_idle_scheduler.h" #include "chrome/renderer/extensions/user_script_slave.h" #include "content/common/json_value_serializer.h" #include "content/renderer/render_view.h" -#include "webkit/glue/image_resource_fetcher.h" -#include "webkit/glue/resource_fetcher.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebConsoleMessage.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebURLRequest.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" +#include "webkit/glue/image_resource_fetcher.h" +#include "webkit/glue/resource_fetcher.h" using WebKit::WebConsoleMessage; using WebKit::WebDataSource; @@ -44,20 +44,21 @@ typedef std::map<WebFrame*, UserScriptIdleScheduler*> SchedulerMap; static base::LazyInstance<SchedulerMap> g_schedulers(base::LINKER_INITIALIZED); } -ExtensionHelper::ExtensionHelper(RenderView* render_view, - ExtensionDispatcher* extension_dispatcher) +ExtensionRenderViewHelper::ExtensionRenderViewHelper( + RenderView* render_view, + ExtensionRendererContext* extension_renderer_context) : RenderViewObserver(render_view), - RenderViewObserverTracker<ExtensionHelper>(render_view), - extension_dispatcher_(extension_dispatcher), + RenderViewObserverTracker<ExtensionRenderViewHelper>(render_view), + extension_renderer_context_(extension_renderer_context), pending_app_icon_requests_(0), view_type_(ViewType::INVALID), browser_window_id_(-1) { } -ExtensionHelper::~ExtensionHelper() { +ExtensionRenderViewHelper::~ExtensionRenderViewHelper() { } -bool ExtensionHelper::InstallWebApplicationUsingDefinitionFile( +bool ExtensionRenderViewHelper::InstallWebApplicationUsingDefinitionFile( WebFrame* frame, string16* error) { // There is an issue of drive-by installs with the below implementation. A web // site could force a user to install an app by timing the dialog to come up @@ -99,16 +100,19 @@ bool ExtensionHelper::InstallWebApplicationUsingDefinitionFile( app_definition_fetcher_.reset(new ResourceFetcher( pending_app_info_->manifest_url, render_view()->webview()->mainFrame(), WebURLRequest::TargetIsSubresource, - NewCallback(this, &ExtensionHelper::DidDownloadApplicationDefinition))); + NewCallback( + this, + &ExtensionRenderViewHelper::DidDownloadApplicationDefinition))); return true; } -void ExtensionHelper::InlineWebstoreInstall(std::string webstore_item_id) { +void ExtensionRenderViewHelper::InlineWebstoreInstall( + std::string webstore_item_id) { Send(new ExtensionHostMsg_InlineWebstoreInstall( routing_id(), webstore_item_id)); } -void ExtensionHelper::OnInlineWebstoreInstallResponse( +void ExtensionRenderViewHelper::OnInlineWebstoreInstallResponse( bool success, const std::string& error) { // TODO(mihaip): dispatch these as events to the the WebFrame that initiated @@ -120,9 +124,9 @@ void ExtensionHelper::OnInlineWebstoreInstallResponse( } } -bool ExtensionHelper::OnMessageReceived(const IPC::Message& message) { +bool ExtensionRenderViewHelper::OnMessageReceived(const IPC::Message& message) { bool handled = true; - IPC_BEGIN_MESSAGE_MAP(ExtensionHelper, message) + IPC_BEGIN_MESSAGE_MAP(ExtensionRenderViewHelper, message) IPC_MESSAGE_HANDLER(ExtensionMsg_Response, OnExtensionResponse) IPC_MESSAGE_HANDLER(ExtensionMsg_MessageInvoke, OnExtensionMessageInvoke) IPC_MESSAGE_HANDLER(ExtensionMsg_ExecuteCode, OnExecuteCode) @@ -138,8 +142,8 @@ bool ExtensionHelper::OnMessageReceived(const IPC::Message& message) { return handled; } -void ExtensionHelper::DidFinishDocumentLoad(WebFrame* frame) { - extension_dispatcher_->user_script_slave()->InjectScripts( +void ExtensionRenderViewHelper::DidFinishDocumentLoad(WebFrame* frame) { + extension_renderer_context_->user_script_slave()->InjectScripts( frame, UserScript::DOCUMENT_END); SchedulerMap::iterator i = g_schedulers.Get().find(frame); @@ -147,24 +151,25 @@ void ExtensionHelper::DidFinishDocumentLoad(WebFrame* frame) { i->second->DidFinishDocumentLoad(); } -void ExtensionHelper::DidFinishLoad(WebKit::WebFrame* frame) { +void ExtensionRenderViewHelper::DidFinishLoad(WebKit::WebFrame* frame) { SchedulerMap::iterator i = g_schedulers.Get().find(frame); if (i != g_schedulers.Get().end()) i->second->DidFinishLoad(); } -void ExtensionHelper::DidCreateDocumentElement(WebFrame* frame) { - extension_dispatcher_->user_script_slave()->InjectScripts( +void ExtensionRenderViewHelper::DidCreateDocumentElement(WebFrame* frame) { + extension_renderer_context_->user_script_slave()->InjectScripts( frame, UserScript::DOCUMENT_START); } -void ExtensionHelper::DidStartProvisionalLoad(WebKit::WebFrame* frame) { +void ExtensionRenderViewHelper::DidStartProvisionalLoad( + WebKit::WebFrame* frame) { SchedulerMap::iterator i = g_schedulers.Get().find(frame); if (i != g_schedulers.Get().end()) i->second->DidStartProvisionalLoad(); } -void ExtensionHelper::FrameDetached(WebFrame* frame) { +void ExtensionRenderViewHelper::FrameDetached(WebFrame* frame) { // This could be called before DidCreateDataSource, in which case the frame // won't be in the map. SchedulerMap::iterator i = g_schedulers.Get().find(frame); @@ -175,7 +180,8 @@ void ExtensionHelper::FrameDetached(WebFrame* frame) { g_schedulers.Get().erase(i); } -void ExtensionHelper::DidCreateDataSource(WebFrame* frame, WebDataSource* ds) { +void ExtensionRenderViewHelper::DidCreateDataSource(WebFrame* frame, + WebDataSource* ds) { // If there are any app-related fetches in progress, they can be cancelled now // since we have navigated away from the page that created them. if (!frame->parent()) { @@ -189,10 +195,10 @@ void ExtensionHelper::DidCreateDataSource(WebFrame* frame, WebDataSource* ds) { return; g_schedulers.Get()[frame] = new UserScriptIdleScheduler( - frame, extension_dispatcher_); + frame, extension_renderer_context_); } -void ExtensionHelper::OnExtensionResponse(int request_id, +void ExtensionRenderViewHelper::OnExtensionResponse(int request_id, bool success, const std::string& response, const std::string& error) { @@ -200,15 +206,16 @@ void ExtensionHelper::OnExtensionResponse(int request_id, request_id, success, response, error); } -void ExtensionHelper::OnExtensionMessageInvoke(const std::string& extension_id, - const std::string& function_name, - const ListValue& args, - const GURL& event_url) { +void ExtensionRenderViewHelper::OnExtensionMessageInvoke( + const std::string& extension_id, + const std::string& function_name, + const ListValue& args, + const GURL& event_url) { ExtensionBindingsContext::DispatchChromeHiddenMethod( extension_id, function_name, args, render_view(), event_url); } -void ExtensionHelper::OnExecuteCode( +void ExtensionRenderViewHelper::OnExecuteCode( const ExtensionMsg_ExecuteCode_Params& params) { WebView* webview = render_view()->webview(); WebFrame* main_frame = webview->mainFrame(); @@ -225,7 +232,7 @@ void ExtensionHelper::OnExecuteCode( i->second->ExecuteCode(params); } -void ExtensionHelper::OnGetApplicationInfo(int page_id) { +void ExtensionRenderViewHelper::OnGetApplicationInfo(int page_id) { WebApplicationInfo app_info; if (page_id == render_view()->page_id()) { string16 error; @@ -248,15 +255,15 @@ void ExtensionHelper::OnGetApplicationInfo(int page_id) { routing_id(), page_id, app_info)); } -void ExtensionHelper::OnNotifyRendererViewType(ViewType::Type type) { +void ExtensionRenderViewHelper::OnNotifyRendererViewType(ViewType::Type type) { view_type_ = type; } -void ExtensionHelper::OnUpdateBrowserWindowId(int window_id) { +void ExtensionRenderViewHelper::OnUpdateBrowserWindowId(int window_id) { browser_window_id_ = window_id; } -void ExtensionHelper::DidDownloadApplicationDefinition( +void ExtensionRenderViewHelper::DidDownloadApplicationDefinition( const WebKit::WebURLResponse& response, const std::string& data) { scoped_ptr<WebApplicationInfo> app_info( @@ -291,15 +298,17 @@ void ExtensionHelper::DidDownloadApplicationDefinition( pending_app_info_->icons[i].width, WebURLRequest::TargetIsFavicon, NewCallback( - this, &ExtensionHelper::DidDownloadApplicationIcon)))); + this, + &ExtensionRenderViewHelper::DidDownloadApplicationIcon)))); } } else { Send(new ExtensionHostMsg_InstallApplication(routing_id(), *app_info)); } } -void ExtensionHelper::DidDownloadApplicationIcon(ImageResourceFetcher* fetcher, - const SkBitmap& image) { +void ExtensionRenderViewHelper::DidDownloadApplicationIcon( + ImageResourceFetcher* fetcher, + const SkBitmap& image) { pending_app_info_->icons[fetcher->id()].data = image; // Remove the image fetcher from our pending list. We're in the callback from @@ -348,7 +357,7 @@ void ExtensionHelper::DidDownloadApplicationIcon(ImageResourceFetcher* fetcher, pending_app_info_.reset(NULL); } -void ExtensionHelper::AddErrorToRootConsole(const string16& message) { +void ExtensionRenderViewHelper::AddErrorToRootConsole(const string16& message) { if (render_view()->webview() && render_view()->webview()->mainFrame()) { render_view()->webview()->mainFrame()->addMessageToConsole( WebConsoleMessage(WebConsoleMessage::LevelError, message)); diff --git a/chrome/renderer/extensions/extension_helper.h b/chrome/renderer/extensions/extension_render_view_helper.h index fa1fb61..bff448c 100644 --- a/chrome/renderer/extensions/extension_helper.h +++ b/chrome/renderer/extensions/extension_render_view_helper.h @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_RENDERER_EXTENSIONS_EXTENSION_HELPER_H_ -#define CHROME_RENDERER_EXTENSIONS_EXTENSION_HELPER_H_ +#ifndef CHROME_RENDERER_EXTENSIONS_EXTENSION_RENDER_VIEW_HELPER_H_ +#define CHROME_RENDERER_EXTENSIONS_EXTENSION_RENDER_VIEW_HELPER_H_ #pragma once #include <map> @@ -13,7 +13,7 @@ #include "content/renderer/render_view_observer.h" #include "content/renderer/render_view_observer_tracker.h" -class ExtensionDispatcher; +class ExtensionRendererContext; class GURL; struct ExtensionMsg_ExecuteCode_Params; struct WebApplicationInfo; @@ -27,12 +27,13 @@ class ResourceFetcher; } // RenderView-level plumbing for extension features. -class ExtensionHelper : public RenderViewObserver, - public RenderViewObserverTracker<ExtensionHelper> { +class ExtensionRenderViewHelper + : public RenderViewObserver, + public RenderViewObserverTracker<ExtensionRenderViewHelper> { public: - ExtensionHelper(RenderView* render_view, - ExtensionDispatcher* extension_dispatcher); - virtual ~ExtensionHelper(); + ExtensionRenderViewHelper(RenderView* render_view, + ExtensionRendererContext* extension_renderer_context); + virtual ~ExtensionRenderViewHelper(); // Starts installation of the page in the specified frame as a web app. The // page must link to an external 'definition file'. This is different from @@ -83,7 +84,7 @@ class ExtensionHelper : public RenderViewObserver, // Helper to add an error message to the root frame's console. void AddErrorToRootConsole(const string16& message); - ExtensionDispatcher* extension_dispatcher_; + ExtensionRendererContext* extension_renderer_context_; // The app info that we are processing. This is used when installing an app // via application definition. The in-progress web app is stored here while @@ -106,7 +107,7 @@ class ExtensionHelper : public RenderViewObserver, // Id number of browser window which RenderView is attached to. int browser_window_id_; - DISALLOW_COPY_AND_ASSIGN(ExtensionHelper); + DISALLOW_COPY_AND_ASSIGN(ExtensionRenderViewHelper); }; -#endif // CHROME_RENDERER_EXTENSIONS_EXTENSION_HELPER_H_ +#endif // CHROME_RENDERER_EXTENSIONS_EXTENSION_RENDER_VIEW_HELPER_H_ diff --git a/chrome/renderer/extensions/extension_dispatcher.cc b/chrome/renderer/extensions/extension_renderer_context.cc index 5baa8d4..06dc57f 100644 --- a/chrome/renderer/extensions/extension_dispatcher.cc +++ b/chrome/renderer/extensions/extension_renderer_context.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/renderer/extensions/extension_dispatcher.h" +#include "chrome/renderer/extensions/extension_renderer_context.h" #include "base/command_line.h" #include "chrome/common/child_process_logging.h" @@ -38,7 +38,7 @@ using WebKit::WebFrame; using WebKit::WebSecurityPolicy; using WebKit::WebString; -ExtensionDispatcher::ExtensionDispatcher() +ExtensionRendererContext::ExtensionRendererContext() : is_webkit_initialized_(false) { std::string type_str = CommandLine::ForCurrentProcess()->GetSwitchValueASCII( switches::kProcessType); @@ -53,13 +53,13 @@ ExtensionDispatcher::ExtensionDispatcher() user_script_slave_.reset(new UserScriptSlave(&extensions_)); } -ExtensionDispatcher::~ExtensionDispatcher() { +ExtensionRendererContext::~ExtensionRendererContext() { } -bool ExtensionDispatcher::OnControlMessageReceived( +bool ExtensionRendererContext::OnControlMessageReceived( const IPC::Message& message) { bool handled = true; - IPC_BEGIN_MESSAGE_MAP(ExtensionDispatcher, message) + IPC_BEGIN_MESSAGE_MAP(ExtensionRendererContext, message) IPC_MESSAGE_HANDLER(ExtensionMsg_MessageInvoke, OnMessageInvoke) IPC_MESSAGE_HANDLER(ExtensionMsg_SetFunctionNames, OnSetFunctionNames) IPC_MESSAGE_HANDLER(ExtensionMsg_Loaded, OnLoaded) @@ -76,7 +76,7 @@ bool ExtensionDispatcher::OnControlMessageReceived( return handled; } -void ExtensionDispatcher::WebKitInitialized() { +void ExtensionRendererContext::WebKitInitialized() { // For extensions, we want to ensure we call the IdleHandler every so often, // even if the extension keeps up activity. if (is_extension_process_) { @@ -111,7 +111,7 @@ void ExtensionDispatcher::WebKitInitialized() { is_webkit_initialized_ = true; } -void ExtensionDispatcher::IdleNotification() { +void ExtensionRendererContext::IdleNotification() { if (is_extension_process_) { // Dampen the forced delay as well if the extension stays idle for long // periods of time. @@ -125,14 +125,14 @@ void ExtensionDispatcher::IdleNotification() { } } -void ExtensionDispatcher::OnSetFunctionNames( +void ExtensionRendererContext::OnSetFunctionNames( const std::vector<std::string>& names) { function_names_.clear(); for (size_t i = 0; i < names.size(); ++i) function_names_.insert(names[i]); } -void ExtensionDispatcher::OnMessageInvoke(const std::string& extension_id, +void ExtensionRendererContext::OnMessageInvoke(const std::string& extension_id, const std::string& function_name, const ListValue& args, const GURL& event_url) { @@ -147,7 +147,8 @@ void ExtensionDispatcher::OnMessageInvoke(const std::string& extension_id, } } -void ExtensionDispatcher::OnLoaded(const ExtensionMsg_Loaded_Params& params) { +void ExtensionRendererContext::OnLoaded( + const ExtensionMsg_Loaded_Params& params) { scoped_refptr<const Extension> extension(params.ConvertToExtension()); if (!extension) { // This can happen if extension parsing fails for any reason. One reason @@ -160,7 +161,7 @@ void ExtensionDispatcher::OnLoaded(const ExtensionMsg_Loaded_Params& params) { extensions_.Insert(extension); } -void ExtensionDispatcher::OnUnloaded(const std::string& id) { +void ExtensionRendererContext::OnUnloaded(const std::string& id) { extensions_.Remove(id); // If the extension is later reloaded with a different set of permissions, // we'd like it to get a new isolated world ID, so that it can pick up the @@ -168,24 +169,24 @@ void ExtensionDispatcher::OnUnloaded(const std::string& id) { user_script_slave_->RemoveIsolatedWorld(id); } -void ExtensionDispatcher::OnSetScriptingWhitelist( +void ExtensionRendererContext::OnSetScriptingWhitelist( const Extension::ScriptingWhitelist& extension_ids) { Extension::SetScriptingWhitelist(extension_ids); } -bool ExtensionDispatcher::IsApplicationActive( +bool ExtensionRendererContext::IsApplicationActive( const std::string& extension_id) const { return active_application_ids_.find(extension_id) != active_application_ids_.end(); } -bool ExtensionDispatcher::IsExtensionActive( +bool ExtensionRendererContext::IsExtensionActive( const std::string& extension_id) const { return active_extension_ids_.find(extension_id) != active_extension_ids_.end(); } -bool ExtensionDispatcher::AllowScriptExtension( +bool ExtensionRendererContext::AllowScriptExtension( WebFrame* frame, const std::string& v8_extension_name, int extension_group) { @@ -219,12 +220,12 @@ bool ExtensionDispatcher::AllowScriptExtension( } -void ExtensionDispatcher::OnActivateApplication( +void ExtensionRendererContext::OnActivateApplication( const std::string& extension_id) { active_application_ids_.insert(extension_id); } -void ExtensionDispatcher::OnActivateExtension( +void ExtensionRendererContext::OnActivateExtension( const std::string& extension_id) { active_extension_ids_.insert(extension_id); @@ -243,7 +244,8 @@ void ExtensionDispatcher::OnActivateExtension( InitOriginPermissions(extension); } -void ExtensionDispatcher::InitOriginPermissions(const Extension* extension) { +void ExtensionRendererContext::InitOriginPermissions( + const Extension* extension) { // TODO(jstritar): We should try to remove this special case. Also, these // whitelist entries need to be updated when the kManagement permission // changes. @@ -260,7 +262,7 @@ void ExtensionDispatcher::InitOriginPermissions(const Extension* extension) { extension->GetActivePermissions()->explicit_hosts()); } -void ExtensionDispatcher::UpdateOriginPermissions( +void ExtensionRendererContext::UpdateOriginPermissions( UpdatedExtensionPermissionsInfo::Reason reason, const Extension* extension, const URLPatternSet& origins) { @@ -286,7 +288,7 @@ void ExtensionDispatcher::UpdateOriginPermissions( } } -void ExtensionDispatcher::OnUpdatePermissions( +void ExtensionRendererContext::OnUpdatePermissions( int reason_id, const std::string& extension_id, const ExtensionAPIPermissionSet& apis, @@ -315,14 +317,14 @@ void ExtensionDispatcher::OnUpdatePermissions( UpdateOriginPermissions(reason, extension, explicit_hosts); } -void ExtensionDispatcher::OnUpdateUserScripts( +void ExtensionRendererContext::OnUpdateUserScripts( base::SharedMemoryHandle scripts) { DCHECK(base::SharedMemory::IsHandleValid(scripts)) << "Bad scripts handle"; user_script_slave_->UpdateScripts(scripts); UpdateActiveExtensions(); } -void ExtensionDispatcher::UpdateActiveExtensions() { +void ExtensionRendererContext::UpdateActiveExtensions() { // In single-process mode, the browser process reports the active extensions. if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kSingleProcess)) return; @@ -332,7 +334,7 @@ void ExtensionDispatcher::UpdateActiveExtensions() { child_process_logging::SetActiveExtensions(active_extensions); } -void ExtensionDispatcher::RegisterExtension(v8::Extension* extension, +void ExtensionRendererContext::RegisterExtension(v8::Extension* extension, bool restrict_to_extensions) { if (restrict_to_extensions) restricted_v8_extensions_.insert(extension->name()); diff --git a/chrome/renderer/extensions/extension_dispatcher.h b/chrome/renderer/extensions/extension_renderer_context.h index 84a62cd..58a022f 100644 --- a/chrome/renderer/extensions/extension_dispatcher.h +++ b/chrome/renderer/extensions/extension_renderer_context.h @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_RENDERER_EXTENSIONS_EXTENSION_DISPATCHER_H_ -#define CHROME_RENDERER_EXTENSIONS_EXTENSION_DISPATCHER_H_ +#ifndef CHROME_RENDERER_EXTENSIONS_EXTENSION_RENDERER_CONTEXT_H_ +#define CHROME_RENDERER_EXTENSIONS_EXTENSION_RENDERER_CONTEXT_H_ #pragma once #include <set> @@ -12,8 +12,8 @@ #include "base/shared_memory.h" #include "base/timer.h" -#include "content/renderer/render_process_observer.h" #include "chrome/common/extensions/extension_set.h" +#include "content/renderer/render_process_observer.h" class GURL; class RenderThread; @@ -34,12 +34,12 @@ namespace v8 { class Extension; } -// Dispatches extension control messages sent to the renderer and stores -// renderer extension related state. -class ExtensionDispatcher : public RenderProcessObserver { +// Render-process level context for the extension system. Stores process-level +// state and routes process-level IPC mesages. +class ExtensionRendererContext : public RenderProcessObserver { public: - ExtensionDispatcher(); - virtual ~ExtensionDispatcher(); + ExtensionRendererContext(); + virtual ~ExtensionRendererContext(); const std::set<std::string>& function_names() const { return function_names_; @@ -127,7 +127,7 @@ class ExtensionDispatcher : public RenderProcessObserver { // True once WebKit has been initialized (and it is therefore safe to poke). bool is_webkit_initialized_; - DISALLOW_COPY_AND_ASSIGN(ExtensionDispatcher); + DISALLOW_COPY_AND_ASSIGN(ExtensionRendererContext); }; -#endif // CHROME_RENDERER_EXTENSIONS_EXTENSION_DISPATCHER_H_ +#endif // CHROME_RENDERER_EXTENSIONS_EXTENSION_RENDERER_CONTEXT_H_ diff --git a/chrome/renderer/extensions/renderer_extension_bindings.cc b/chrome/renderer/extensions/renderer_extension_bindings.cc index cb0e8be..1438590 100644 --- a/chrome/renderer/extensions/renderer_extension_bindings.cc +++ b/chrome/renderer/extensions/renderer_extension_bindings.cc @@ -14,7 +14,7 @@ #include "chrome/common/url_constants.h" #include "chrome/renderer/extensions/event_bindings.h" #include "chrome/renderer/extensions/extension_base.h" -#include "chrome/renderer/extensions/extension_dispatcher.h" +#include "chrome/renderer/extensions/extension_renderer_context.h" #include "content/renderer/render_thread.h" #include "content/renderer/render_view.h" #include "grit/renderer_resources.h" @@ -61,10 +61,10 @@ const char* kExtensionDeps[] = { EventBindings::kName }; class ExtensionImpl : public ExtensionBase { public: - explicit ExtensionImpl(ExtensionDispatcher* dispatcher) + explicit ExtensionImpl(ExtensionRendererContext* context) : ExtensionBase(RendererExtensionBindings::kName, GetStringResource(IDR_RENDERER_EXTENSION_BINDINGS_JS), - arraysize(kExtensionDeps), kExtensionDeps, dispatcher) { + arraysize(kExtensionDeps), kExtensionDeps, context) { } ~ExtensionImpl() {} @@ -247,7 +247,8 @@ class ExtensionImpl : public ExtensionBase { const char* RendererExtensionBindings::kName = "chrome/RendererExtensionBindings"; -v8::Extension* RendererExtensionBindings::Get(ExtensionDispatcher* dispatcher) { - static v8::Extension* extension = new ExtensionImpl(dispatcher); +v8::Extension* RendererExtensionBindings::Get( + ExtensionRendererContext* context) { + static v8::Extension* extension = new ExtensionImpl(context); return extension; } diff --git a/chrome/renderer/extensions/renderer_extension_bindings.h b/chrome/renderer/extensions/renderer_extension_bindings.h index 6786921..e796e2a 100644 --- a/chrome/renderer/extensions/renderer_extension_bindings.h +++ b/chrome/renderer/extensions/renderer_extension_bindings.h @@ -10,7 +10,7 @@ #include <string> -class ExtensionDispatcher; +class ExtensionRendererContext; class GURL; class RenderView; @@ -22,7 +22,7 @@ class RendererExtensionBindings { static const char* kName; // Creates an instance of the extension. - static v8::Extension* Get(ExtensionDispatcher* dispatcher); + static v8::Extension* Get(ExtensionRendererContext* context); }; #endif // CHROME_RENDERER_EXTENSIONS_RENDERER_EXTENSION_BINDINGS_H_ diff --git a/chrome/renderer/extensions/user_script_idle_scheduler.cc b/chrome/renderer/extensions/user_script_idle_scheduler.cc index 5c9eea6..17a9335 100644 --- a/chrome/renderer/extensions/user_script_idle_scheduler.cc +++ b/chrome/renderer/extensions/user_script_idle_scheduler.cc @@ -7,9 +7,9 @@ #include "base/message_loop.h" #include "chrome/common/extensions/extension_error_utils.h" #include "chrome/common/extensions/extension_messages.h" -#include "chrome/renderer/extensions/extension_dispatcher.h" #include "chrome/renderer/extensions/extension_groups.h" -#include "chrome/renderer/extensions/extension_helper.h" +#include "chrome/renderer/extensions/extension_render_view_helper.h" +#include "chrome/renderer/extensions/extension_renderer_context.h" #include "chrome/renderer/extensions/user_script_slave.h" #include "content/renderer/render_view.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h" @@ -29,11 +29,11 @@ using WebKit::WebString; using WebKit::WebView; UserScriptIdleScheduler::UserScriptIdleScheduler( - WebFrame* frame, ExtensionDispatcher* extension_dispatcher) + WebFrame* frame, ExtensionRendererContext* extension_renderer_context) : ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)), frame_(frame), has_run_(false), - extension_dispatcher_(extension_dispatcher) { + extension_renderer_context_(extension_renderer_context) { } UserScriptIdleScheduler::~UserScriptIdleScheduler() { @@ -82,7 +82,7 @@ void UserScriptIdleScheduler::MaybeRun() { // http://code.google.com/p/chromium/issues/detail?id=29644 has_run_ = true; - extension_dispatcher_->user_script_slave()->InjectScripts( + extension_renderer_context_->user_script_slave()->InjectScripts( frame_, UserScript::DOCUMENT_IDLE); while (!pending_code_execution_queue_.empty()) { @@ -95,8 +95,8 @@ void UserScriptIdleScheduler::MaybeRun() { void UserScriptIdleScheduler::ExecuteCodeImpl( const ExtensionMsg_ExecuteCode_Params& params) { - const Extension* extension = extension_dispatcher_->extensions()->GetByID( - params.extension_id); + const Extension* extension = + extension_renderer_context_->extensions()->GetByID(params.extension_id); RenderView* render_view = RenderView::FromWebView(frame_->view()); // Since extension info is sent separately from user script info, they can @@ -147,7 +147,7 @@ void UserScriptIdleScheduler::ExecuteCodeImpl( std::vector<WebScriptSource> sources; sources.push_back(source); frame->executeScriptInIsolatedWorld( - extension_dispatcher_->user_script_slave()-> + extension_renderer_context_->user_script_slave()-> GetIsolatedWorldIdForExtension(extension, frame), &sources.front(), sources.size(), EXTENSION_GROUP_CONTENT_SCRIPTS); } diff --git a/chrome/renderer/extensions/user_script_idle_scheduler.h b/chrome/renderer/extensions/user_script_idle_scheduler.h index 62258c6..903c030 100644 --- a/chrome/renderer/extensions/user_script_idle_scheduler.h +++ b/chrome/renderer/extensions/user_script_idle_scheduler.h @@ -12,7 +12,7 @@ #include "base/memory/linked_ptr.h" #include "base/task.h" -class ExtensionDispatcher; +class ExtensionRendererContext; class RenderView; struct ExtensionMsg_ExecuteCode_Params; @@ -34,12 +34,12 @@ class WebFrame; // NOTE: this class does not inherit from RenderViewObserver on purpose. The // reason is that this object is per frame, and a frame can move across // RenderViews thanks to adoptNode. So we have each RenderView's -// ExtensionHelper proxy these calls to the renderer process' -// ExtensionDispatcher, which contains the mapping from WebFrame to us. +// ExtensionRenderViewHelper proxy these calls to the renderer process' +// ExtensionRendererContext, which contains the mapping from WebFrame to us. class UserScriptIdleScheduler { public: UserScriptIdleScheduler(WebKit::WebFrame* frame, - ExtensionDispatcher* extension_dispatcher); + ExtensionRendererContext* extension_renderer_context); ~UserScriptIdleScheduler(); void ExecuteCode(const ExtensionMsg_ExecuteCode_Params& params); @@ -72,7 +72,7 @@ class UserScriptIdleScheduler { std::queue<linked_ptr<ExtensionMsg_ExecuteCode_Params> > pending_code_execution_queue_; - ExtensionDispatcher* extension_dispatcher_; + ExtensionRendererContext* extension_renderer_context_; }; #endif // CHROME_RENDERER_EXTENSIONS_USER_SCRIPT_IDLE_SCHEDULER_H_ diff --git a/chrome/renderer/extensions/user_script_slave.cc b/chrome/renderer/extensions/user_script_slave.cc index dbdec79..d1e131e 100644 --- a/chrome/renderer/extensions/user_script_slave.cc +++ b/chrome/renderer/extensions/user_script_slave.cc @@ -8,17 +8,17 @@ #include "base/command_line.h" #include "base/logging.h" +#include "base/metrics/histogram.h" #include "base/perftimer.h" #include "base/pickle.h" #include "base/shared_memory.h" -#include "base/metrics/histogram.h" #include "base/stringprintf.h" #include "chrome/common/extensions/extension.h" #include "chrome/common/extensions/extension_set.h" #include "chrome/common/url_constants.h" #include "chrome/renderer/chrome_render_process_observer.h" -#include "chrome/renderer/extensions/extension_dispatcher.h" #include "chrome/renderer/extensions/extension_groups.h" +#include "chrome/renderer/extensions/extension_renderer_context.h" #include "content/renderer/render_thread.h" #include "googleurl/src/gurl.h" #include "grit/renderer_resources.h" diff --git a/chrome/test/base/render_view_test.cc b/chrome/test/base/render_view_test.cc index 10f5b60..f54b611 100644 --- a/chrome/test/base/render_view_test.cc +++ b/chrome/test/base/render_view_test.cc @@ -10,8 +10,8 @@ #include "chrome/common/render_messages.h" #include "chrome/renderer/autofill/password_autofill_manager.h" #include "chrome/renderer/extensions/event_bindings.h" -#include "chrome/renderer/extensions/extension_dispatcher.h" #include "chrome/renderer/extensions/extension_process_bindings.h" +#include "chrome/renderer/extensions/extension_renderer_context.h" #include "chrome/renderer/extensions/js_only_v8_extensions.h" #include "chrome/renderer/extensions/renderer_extension_bindings.h" #include "chrome/renderer/mock_render_process.h" @@ -95,8 +95,9 @@ void RenderViewTest::LoadHTML(const char* html) { void RenderViewTest::SetUp() { content::GetContentClient()->set_renderer(&chrome_content_renderer_client_); - extension_dispatcher_ = new ExtensionDispatcher(); - chrome_content_renderer_client_.SetExtensionDispatcher(extension_dispatcher_); + extension_dispatcher_ = new ExtensionRendererContext(); + chrome_content_renderer_client_.SetExtensionRendererContext( + extension_dispatcher_); sandbox_init_wrapper_.reset(new SandboxInitWrapper()); command_line_.reset(new CommandLine(CommandLine::NO_PROGRAM)); params_.reset(new MainFunctionParams(*command_line_, *sandbox_init_wrapper_, diff --git a/chrome/test/base/render_view_test.h b/chrome/test/base/render_view_test.h index 50a3564..f3deaf6 100644 --- a/chrome/test/base/render_view_test.h +++ b/chrome/test/base/render_view_test.h @@ -28,7 +28,7 @@ class AutofillAgent; class PasswordAutofillManager; } -class ExtensionDispatcher; +class ExtensionRendererContext; class MockRenderProcess; class RendererMainPlatformDelegate; @@ -95,7 +95,7 @@ class RenderViewTest : public testing::Test { MessageLoop msg_loop_; chrome::ChromeContentRendererClient chrome_content_renderer_client_; - ExtensionDispatcher* extension_dispatcher_; + ExtensionRendererContext* extension_dispatcher_; MockRenderThread render_thread_; scoped_ptr<MockRenderProcess> mock_process_; scoped_refptr<RenderView> view_; |