summaryrefslogtreecommitdiffstats
path: root/chrome/renderer
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/renderer')
-rw-r--r--chrome/renderer/chrome_content_renderer_client.cc29
-rw-r--r--chrome/renderer/extensions/chrome_extensions_dispatcher_delegate.cc8
2 files changed, 19 insertions, 18 deletions
diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc
index a5094ce..9eb68b5 100644
--- a/chrome/renderer/chrome_content_renderer_client.cc
+++ b/chrome/renderer/chrome_content_renderer_client.cc
@@ -245,6 +245,14 @@ bool ShouldUseJavaScriptSettingForPlugin(const WebPluginInfo& plugin) {
return false;
}
+void IsGuestViewApiAvailableToScriptContext(
+ bool* api_is_available,
+ extensions::ScriptContext* context) {
+ if (context->GetAvailability("guestViewInternal").is_available()) {
+ *api_is_available = true;
+ }
+}
+
} // namespace
ChromeContentRendererClient::ChromeContentRendererClient() {
@@ -520,20 +528,13 @@ bool ChromeContentRendererClient::OverrideCreatePlugin(
WebPlugin** plugin) {
std::string orig_mime_type = params.mimeType.utf8();
if (orig_mime_type == content::kBrowserPluginMimeType) {
- WebDocument document = frame->document();
- const Extension* extension =
- GetExtensionByOrigin(document.securityOrigin());
- if (extension) {
- const extensions::APIPermission::ID perms[] = {
- extensions::APIPermission::kAppView,
- extensions::APIPermission::kEmbeddedExtensionOptions,
- extensions::APIPermission::kWebView,
- };
- for (size_t i = 0; i < arraysize(perms); ++i) {
- if (extension->permissions_data()->HasAPIPermission(perms[i]))
- return false;
- }
- }
+ bool guest_view_api_available = false;
+ extension_dispatcher_->script_context_set().ForEach(
+ render_frame->GetRenderView(),
+ base::Bind(&IsGuestViewApiAvailableToScriptContext,
+ &guest_view_api_available));
+ if (guest_view_api_available)
+ return false;
}
ChromeViewHostMsg_GetPluginInfo_Output output;
diff --git a/chrome/renderer/extensions/chrome_extensions_dispatcher_delegate.cc b/chrome/renderer/extensions/chrome_extensions_dispatcher_delegate.cc
index 960b675..47600fb 100644
--- a/chrome/renderer/extensions/chrome_extensions_dispatcher_delegate.cc
+++ b/chrome/renderer/extensions/chrome_extensions_dispatcher_delegate.cc
@@ -289,6 +289,7 @@ void ChromeExtensionsDispatcherDelegate::RequireAdditionalModules(
// The API will be automatically set up when first used.
if (context_type == extensions::Feature::BLESSED_EXTENSION_CONTEXT ||
context_type == extensions::Feature::UNBLESSED_EXTENSION_CONTEXT) {
+ // TODO(fsamuel): Use context->GetAvailability("webViewInternal").
if (extension->permissions_data()->HasAPIPermission(
extensions::APIPermission::kWebView)) {
module_system->Require("webView");
@@ -313,6 +314,7 @@ void ChromeExtensionsDispatcherDelegate::RequireAdditionalModules(
}
if (context_type == extensions::Feature::BLESSED_EXTENSION_CONTEXT) {
+ // TODO(fsamuel): Use context->GetAvailability("appViewInternal").
if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kEnableAppView) &&
extension->permissions_data()->HasAPIPermission(
extensions::APIPermission::kAppView)) {
@@ -322,10 +324,8 @@ void ChromeExtensionsDispatcherDelegate::RequireAdditionalModules(
}
}
- if (context_type == extensions::Feature::BLESSED_EXTENSION_CONTEXT &&
- extensions::FeatureSwitch::embedded_extension_options()->IsEnabled() &&
- extension->permissions_data()->HasAPIPermission(
- extensions::APIPermission::kEmbeddedExtensionOptions)) {
+ if (extensions::FeatureSwitch::embedded_extension_options()->IsEnabled() &&
+ context->GetAvailability("extensionOptionsInternal").is_available()) {
module_system->Require("extensionOptions");
}
}