Index: extensions/renderer/extension_injection_host.cc |
diff --git a/extensions/renderer/extension_injection_host.cc b/extensions/renderer/extension_injection_host.cc |
index 3761964f699b0be2e43999f8aa521f52492843ec..16b0831b6e2f4bd72537678c6d324fd450ff0ced 100644 |
--- a/extensions/renderer/extension_injection_host.cc |
+++ b/extensions/renderer/extension_injection_host.cc |
@@ -5,9 +5,11 @@ |
#include "extensions/renderer/extension_injection_host.h" |
#include "content/public/renderer/render_frame.h" |
+#include "extensions/common/constants.h" |
#include "extensions/common/extension_set.h" |
#include "extensions/common/manifest_handlers/csp_info.h" |
-#include "extensions/renderer/extension_frame_helper.h" |
+#include "third_party/WebKit/public/platform/WebSecurityOrigin.h" |
+#include "third_party/WebKit/public/web/WebLocalFrame.h" |
namespace extensions { |
@@ -53,11 +55,10 @@ PermissionsData::AccessType ExtensionInjectionHost::CanExecuteOnFrame( |
if (tab_id == -1) |
return PermissionsData::ACCESS_ALLOWED; |
- const std::string& extension_id = |
- ExtensionFrameHelper::Get(render_frame)->tab_extension_owner_id(); |
- // We don't allow injections in any frame of an extension page (unless it's by |
- // the owning extension). |
- if (!extension_id.empty() && extension_id != extension_->id()) |
+ blink::WebSecurityOrigin top_frame_security_origin = |
+ render_frame->GetWebFrame()->top()->securityOrigin(); |
+ if (top_frame_security_origin.protocol().utf8() == kExtensionScheme && |
+ top_frame_security_origin.host().utf8() != extension_->id()) |
return PermissionsData::ACCESS_DENIED; |
// Declarative user scripts use "page access" (from "permissions" section in |