Index: chrome/browser/plugins/plugin_info_message_filter.cc |
diff --git a/chrome/browser/plugins/plugin_info_message_filter.cc b/chrome/browser/plugins/plugin_info_message_filter.cc |
index 657357c71703c311a8b9f877ce86c486f5581c44..a8fd6b78f772cf5f3bfc3630d133e9b6959c2cd8 100644 |
--- a/chrome/browser/plugins/plugin_info_message_filter.cc |
+++ b/chrome/browser/plugins/plugin_info_message_filter.cc |
@@ -37,6 +37,7 @@ |
#include "extensions/browser/extension_registry.h" |
#include "extensions/browser/guest_view/guest_view_base.h" |
#include "extensions/browser/guest_view/web_view/web_view_renderer_state.h" |
+#include "extensions/common/constants.h" |
#include "extensions/common/extension.h" |
#include "extensions/common/manifest_constants.h" |
#include "extensions/common/manifest_handlers/webview_info.h" |
@@ -157,6 +158,8 @@ bool IsPluginLoadingAccessibleResourceInWebView( |
const extensions::Extension* extension = |
extension_registry->GetExtensionById(extension_id, |
extensions::ExtensionRegistry::ENABLED); |
+ if (!extension) |
+ return false; |
const extensions::WebviewInfo* webview_info = |
static_cast<const extensions::WebviewInfo*>(extension->GetManifestData( |
extensions::manifest_keys::kWebviewAccessibleResources)); |
@@ -417,7 +420,8 @@ void PluginInfoMessageFilter::Context::DecidePluginStatus( |
// If an app has explicitly made internal resources available by listing them |
// in |accessible_resources| in the manifest, then allow them to be loaded by |
// plugins inside a guest-view. |
- if (!is_managed && plugin_setting == CONTENT_SETTING_BLOCK && |
+ if (params.url.SchemeIs(extensions::kExtensionScheme) && !is_managed && |
+ plugin_setting == CONTENT_SETTING_BLOCK && |
IsPluginLoadingAccessibleResourceInWebView( |
extension_registry_, render_process_id_, params.url)) { |
plugin_setting = CONTENT_SETTING_ALLOW; |