Chromium Code Reviews| Index: chrome/browser/extensions/chrome_extension_web_contents_observer.cc |
| diff --git a/chrome/browser/extensions/chrome_extension_web_contents_observer.cc b/chrome/browser/extensions/chrome_extension_web_contents_observer.cc |
| index b692dfbb0e01fcb1cc9de515061cfef4a3cda176..a670185dbb00da50c58dfa402ac42ae25373e160 100644 |
| --- a/chrome/browser/extensions/chrome_extension_web_contents_observer.cc |
| +++ b/chrome/browser/extensions/chrome_extension_web_contents_observer.cc |
| @@ -8,7 +8,9 @@ |
| #include "chrome/browser/extensions/extension_service.h" |
| #include "chrome/browser/extensions/window_controller.h" |
| #include "chrome/common/extensions/chrome_extension_messages.h" |
| +#include "chrome/common/url_constants.h" |
| #include "content/public/browser/browser_context.h" |
| +#include "content/public/browser/child_process_security_policy.h" |
| #include "content/public/browser/render_frame_host.h" |
| #include "content/public/browser/render_process_host.h" |
| #include "content/public/browser/render_view_host.h" |
| @@ -33,6 +35,24 @@ ChromeExtensionWebContentsObserver::~ChromeExtensionWebContentsObserver() {} |
| void ChromeExtensionWebContentsObserver::RenderViewCreated( |
| content::RenderViewHost* render_view_host) { |
| ReloadIfTerminated(render_view_host); |
| + |
| + // Some extensions use "chrome://favicon/" and "chrome://extension-icon" URLs. |
|
Charlie Reis
2015/09/22 17:38:15
Why are these cases handled here vs chrome://resou
paulmeyer
2015/09/22 22:13:57
The reason was because the host constants are from
|
| + const Extension* extension = GetExtension(render_view_host); |
| + if (extension) { |
| + Manifest::Type type = extension->GetType(); |
| + if (type == Manifest::TYPE_EXTENSION || |
| + type == Manifest::TYPE_LEGACY_PACKAGED_APP || |
| + (type == Manifest::TYPE_PLATFORM_APP && |
| + extension->location() == Manifest::COMPONENT)) { |
|
Charlie Reis
2015/09/22 17:38:15
This block is subtle in terms of which types of ex
paulmeyer
2015/09/22 22:13:56
Done.
|
| + int process_id = render_view_host->GetProcess()->GetID(); |
| + content::ChildProcessSecurityPolicy::GetInstance()->GrantSchemeHost( |
| + process_id, content::kChromeUIScheme, chrome::kChromeUIFaviconHost); |
| + content::ChildProcessSecurityPolicy::GetInstance()->GrantSchemeHost( |
| + process_id, content::kChromeUIScheme, |
| + chrome::kChromeUIExtensionIconHost); |
| + } |
| + } |
| + |
| ExtensionWebContentsObserver::RenderViewCreated(render_view_host); |
| } |