Index: chrome/renderer/chrome_content_renderer_client.cc |
diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc |
index d2a85a59fc0b156f0dd142ea6967843f8ed51c3b..6fb46d6c278681346b22fec179a164521de42ee2 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; |