| Index: chrome/browser/chrome_content_browser_client.cc
|
| diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
|
| index a95a29a9dc71e20dec0ee34be3e077d53594267f..566014c8b5cf25c8fcb0594af09eeda1d54b0e57 100644
|
| --- a/chrome/browser/chrome_content_browser_client.cc
|
| +++ b/chrome/browser/chrome_content_browser_client.cc
|
| @@ -941,10 +941,44 @@ void ChromeContentBrowserClient::RenderProcessHostCreated(
|
| profile->IsOffTheRecord()));
|
|
|
| SendExtensionWebRequestStatusToHost(host);
|
| +}
|
| +
|
| +// static
|
| +void ChromeContentBrowserClient::SetContentSettingRules(
|
| + content::RenderViewHost* host) {
|
| + // <*view> guests should not be affected by ContentSettingRules.
|
| + if (host->GetProcess()->IsGuest())
|
| + return;
|
| +
|
| + SiteInstance* site_instance = host->GetSiteInstance();
|
| + if (!site_instance)
|
| + return;
|
| +
|
| + Profile* profile = Profile::FromBrowserContext(
|
| + host->GetProcess()->GetBrowserContext());
|
| + if (!profile)
|
| + return;
|
| +
|
| + ExtensionService* extension_service =
|
| + extensions::ExtensionSystem::Get(profile)->extension_service();
|
| + if (!extension_service)
|
| + return;
|
| +
|
| + // Extensions should not be affected by ContentSettingRules.
|
| + const Extension* extension = extension_service->extensions()->
|
| + GetHostedAppByURL(site_instance->GetSiteURL());
|
| + if (extension)
|
| + return;
|
|
|
| RendererContentSettingRules rules;
|
| GetRendererContentSettingRules(profile->GetHostContentSettingsMap(), &rules);
|
| - host->Send(new ChromeViewMsg_SetContentSettingRules(rules));
|
| + host->Send(new ChromeViewMsg_SetContentSettingRules(
|
| + host->GetRoutingID(), rules));
|
| +}
|
| +
|
| +void ChromeContentBrowserClient::RenderViewReady(
|
| + content::RenderViewHost* host) {
|
| + SetContentSettingRules(host);
|
| }
|
|
|
| GURL ChromeContentBrowserClient::GetEffectiveURL(
|
|
|