summaryrefslogtreecommitdiffstats
path: root/extensions/renderer
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/renderer')
-rw-r--r--extensions/renderer/extension_injection_host.cc5
-rw-r--r--extensions/renderer/extension_injection_host.h6
-rw-r--r--extensions/renderer/programmatic_script_injector.cc1
-rw-r--r--extensions/renderer/script_injection_manager.cc18
-rw-r--r--extensions/renderer/web_ui_injection_host.cc1
5 files changed, 20 insertions, 11 deletions
diff --git a/extensions/renderer/extension_injection_host.cc b/extensions/renderer/extension_injection_host.cc
index 7a27a08..a97a702 100644
--- a/extensions/renderer/extension_injection_host.cc
+++ b/extensions/renderer/extension_injection_host.cc
@@ -18,8 +18,9 @@ ExtensionInjectionHost::~ExtensionInjectionHost() {
}
// static
-scoped_ptr<const ExtensionInjectionHost> ExtensionInjectionHost::Create(
- const std::string& extension_id, const ExtensionSet* extensions) {
+scoped_ptr<const InjectionHost> ExtensionInjectionHost::Create(
+ const std::string& extension_id,
+ const ExtensionSet* extensions) {
const Extension* extension = extensions->GetByID(extension_id);
if (!extension)
return scoped_ptr<const ExtensionInjectionHost>();
diff --git a/extensions/renderer/extension_injection_host.h b/extensions/renderer/extension_injection_host.h
index bdf6f41..1b77cac 100644
--- a/extensions/renderer/extension_injection_host.h
+++ b/extensions/renderer/extension_injection_host.h
@@ -12,6 +12,8 @@
namespace extensions {
class ExtensionSet;
+class ExtensionSet;
+
// A wrapper class that holds an extension and implements the InjectionHost
// interface.
class ExtensionInjectionHost : public InjectionHost {
@@ -21,8 +23,8 @@ class ExtensionInjectionHost : public InjectionHost {
// Create an ExtensionInjectionHost object. If the extension is gone, returns
// a null scoped ptr.
- static scoped_ptr<const ExtensionInjectionHost> Create(
- const std::string& extension_id, const ExtensionSet* extensions);
+ static scoped_ptr<const InjectionHost> Create(const std::string& extension_id,
+ const ExtensionSet* extensions);
private:
// InjectionHost:
diff --git a/extensions/renderer/programmatic_script_injector.cc b/extensions/renderer/programmatic_script_injector.cc
index 19259df..6e28bef 100644
--- a/extensions/renderer/programmatic_script_injector.cc
+++ b/extensions/renderer/programmatic_script_injector.cc
@@ -82,6 +82,7 @@ PermissionsData::AccessType ProgrammaticScriptInjector::CanExecuteOnFrame(
? PermissionsData::ACCESS_ALLOWED
: PermissionsData::ACCESS_DENIED;
}
+ DCHECK_EQ(injection_host->id().type(), HostID::EXTENSIONS);
return injection_host->CanExecuteOnFrame(
effective_document_url, top_url, tab_id, true /* is_declarative */);
diff --git a/extensions/renderer/script_injection_manager.cc b/extensions/renderer/script_injection_manager.cc
index 5481a8e..c550cfd 100644
--- a/extensions/renderer/script_injection_manager.cc
+++ b/extensions/renderer/script_injection_manager.cc
@@ -19,6 +19,7 @@
#include "extensions/renderer/programmatic_script_injector.h"
#include "extensions/renderer/script_injection.h"
#include "extensions/renderer/scripts_run_info.h"
+#include "extensions/renderer/web_ui_injection_host.h"
#include "ipc/ipc_message_macros.h"
#include "third_party/WebKit/public/web/WebDocument.h"
#include "third_party/WebKit/public/web/WebFrame.h"
@@ -406,17 +407,22 @@ void ScriptInjectionManager::HandleExecuteCode(
return;
}
- scoped_ptr<const ExtensionInjectionHost> extension_injection_host =
- ExtensionInjectionHost::Create(params.extension_id, extensions_);
-
- if (!extension_injection_host)
- return;
+ scoped_ptr<const InjectionHost> injection_host;
+ if (params.host_id.type() == HostID::EXTENSIONS) {
+ injection_host = ExtensionInjectionHost::Create(params.host_id.id(),
+ extensions_);
+ if (!injection_host)
+ return;
+ } else if (params.host_id.type() == HostID::WEBUI) {
+ injection_host.reset(
+ new WebUIInjectionHost(params.host_id));
+ }
scoped_ptr<ScriptInjection> injection(new ScriptInjection(
scoped_ptr<ScriptInjector>(
new ProgrammaticScriptInjector(params, main_frame)),
main_frame,
- extension_injection_host.Pass(),
+ injection_host.Pass(),
static_cast<UserScript::RunLocation>(params.run_at),
ExtensionHelper::Get(render_view)->tab_id()));
diff --git a/extensions/renderer/web_ui_injection_host.cc b/extensions/renderer/web_ui_injection_host.cc
index 334358a..5c6e117 100644
--- a/extensions/renderer/web_ui_injection_host.cc
+++ b/extensions/renderer/web_ui_injection_host.cc
@@ -12,7 +12,6 @@ WebUIInjectionHost::WebUIInjectionHost(const HostID& host_id)
WebUIInjectionHost::~WebUIInjectionHost() {
}
-
std::string WebUIInjectionHost::GetContentSecurityPolicy() const {
return std::string();
}