Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7474)

Unified Diff: chrome/renderer/chrome_render_view_observer.cc

Issue 10598006: Browser tag shim (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix tests Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/renderer/chrome_render_view_observer.cc
diff --git a/chrome/renderer/chrome_render_view_observer.cc b/chrome/renderer/chrome_render_view_observer.cc
index 39585978d3c7eaf9bc07fd28509774810f8aa9bc..c79b4f11fd2863ba32e7256eb26cf107f3edf8cb 100644
--- a/chrome/renderer/chrome_render_view_observer.cc
+++ b/chrome/renderer/chrome_render_view_observer.cc
@@ -70,6 +70,7 @@ using WebKit::WebURL;
using WebKit::WebURLRequest;
using WebKit::WebView;
using WebKit::WebVector;
+using extensions::APIPermission;
using webkit_glue::ImageResourceFetcher;
// Delay in milliseconds that we'll wait before capturing the page contents
@@ -484,22 +485,27 @@ bool ChromeRenderViewObserver::allowWriteToClipboard(WebFrame* frame,
bool ChromeRenderViewObserver::IsExperimentalWebFeatureAllowed(
const WebDocument& document) {
- // Experimental Web API is enabled when
- // - The specific API is allowed from command line flag, or
- // - If the document is running extensions or apps which
- // has the "experimental" permission, or
- // - The document is running Web UI.
+ // Experimental Web API is enabled when:
+ // The document is running Web UI.
WebSecurityOrigin origin = document.securityOrigin();
if (EqualsASCII(origin.protocol(), chrome::kChromeUIScheme))
return true;
- const extensions::Extension* extension =
- extension_dispatcher_->extensions()->GetExtensionOrAppByURL(
- ExtensionURLInfo(origin, document.url()));
- if (!extension)
- return false;
- return (extension_dispatcher_->IsExtensionActive(extension->id()) &&
- extension->HasAPIPermission(
- extensions::APIPermission::kExperimental));
+
+ // The document is running extensions or apps which has the "experimental"
+ // permission, or use the <browser> tag (which is implemented via Shadow DOM).
+ if (EqualsASCII(origin.protocol(), chrome::kExtensionScheme)) {
+ const std::string extension_id = origin.host().utf8().data();
+ if (!extension_dispatcher_->IsExtensionActive(extension_id))
+ return false;
+ const extensions::Extension* extension =
+ extension_dispatcher_->extensions()->GetByID(extension_id);
+ if (!extension)
+ return false;
+ return extension->HasAPIPermission(APIPermission::kExperimental) ||
+ extension->HasAPIPermission(APIPermission::kBrowserTag);
Aaron Boodman 2012/07/02 20:52:35 Is it possible to just check for the browser permi
Mihai Parparita -not on Chrome 2012/07/02 22:05:14 I don't see an easy way to do this (enable it for
Aaron Boodman 2012/07/02 23:04:37 Oh, I see the issue. My earlier comment was mistak
Mihai Parparita -not on Chrome 2012/07/02 23:23:45 Did something along these lines.
+ }
+
+ return false;
}
bool ChromeRenderViewObserver::allowWebComponents(const WebDocument& document,

Powered by Google App Engine
This is Rietveld 408576698