| Index: chrome/renderer/content_settings_observer.cc
|
| diff --git a/chrome/renderer/content_settings_observer.cc b/chrome/renderer/content_settings_observer.cc
|
| index 1d63a8a00458630a2661ff876322ecc1710298d2..a9385f1e393e1b8b04618ccb7e58901f3911089e 100644
|
| --- a/chrome/renderer/content_settings_observer.cc
|
| +++ b/chrome/renderer/content_settings_observer.cc
|
| @@ -6,7 +6,6 @@
|
|
|
| #include "base/command_line.h"
|
| #include "base/metrics/histogram.h"
|
| -#include "chrome/common/chrome_switches.h"
|
| #include "chrome/common/render_messages.h"
|
| #include "chrome/common/url_constants.h"
|
| #include "content/public/renderer/document_state.h"
|
| @@ -150,7 +149,8 @@ ContentSetting GetContentSettingFromRules(
|
|
|
| ContentSettingsObserver::ContentSettingsObserver(
|
| content::RenderFrame* render_frame,
|
| - extensions::Dispatcher* extension_dispatcher)
|
| + extensions::Dispatcher* extension_dispatcher,
|
| + bool should_whitelist)
|
| : content::RenderFrameObserver(render_frame),
|
| content::RenderFrameObserverTracker<ContentSettingsObserver>(
|
| render_frame),
|
| @@ -162,7 +162,8 @@ ContentSettingsObserver::ContentSettingsObserver(
|
| content_setting_rules_(NULL),
|
| is_interstitial_page_(false),
|
| npapi_plugins_blocked_(false),
|
| - current_request_id_(0) {
|
| + current_request_id_(0),
|
| + should_whitelist_(should_whitelist) {
|
| ClearBlockedContentSettings();
|
| render_frame->GetWebFrame()->setPermissionClient(this);
|
|
|
| @@ -312,7 +313,7 @@ bool ContentSettingsObserver::allowImage(bool enabled_per_settings,
|
| if (is_interstitial_page_)
|
| return true;
|
|
|
| - if (IsWhitelistedForContentSettings(render_frame()))
|
| + if (IsWhitelistedForContentSettings())
|
| return true;
|
|
|
| if (content_setting_rules_) {
|
| @@ -370,7 +371,7 @@ bool ContentSettingsObserver::allowScript(bool enabled_per_settings) {
|
| GURL(frame->document().securityOrigin().toString()));
|
| allow = setting != CONTENT_SETTING_BLOCK;
|
| }
|
| - allow = allow || IsWhitelistedForContentSettings(render_frame());
|
| + allow = allow || IsWhitelistedForContentSettings();
|
|
|
| cached_script_permissions_[frame] = allow;
|
| return allow;
|
| @@ -392,7 +393,7 @@ bool ContentSettingsObserver::allowScriptFromSource(
|
| GURL(script_url));
|
| allow = setting != CONTENT_SETTING_BLOCK;
|
| }
|
| - return allow || IsWhitelistedForContentSettings(render_frame());
|
| + return allow || IsWhitelistedForContentSettings();
|
| }
|
|
|
| bool ContentSettingsObserver::allowStorage(bool local) {
|
| @@ -674,18 +675,16 @@ const extensions::Extension* ContentSettingsObserver::GetExtension(
|
| }
|
| #endif
|
|
|
| -bool ContentSettingsObserver::IsWhitelistedForContentSettings(
|
| - content::RenderFrame* frame) {
|
| - // Whitelist Instant processes.
|
| - if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kInstantProcess))
|
| +bool ContentSettingsObserver::IsWhitelistedForContentSettings() const {
|
| + if (should_whitelist_)
|
| return true;
|
|
|
| // Whitelist ftp directory listings, as they require JavaScript to function
|
| // properly.
|
| - if (frame->IsFTPDirectoryListing())
|
| + if (render_frame()->IsFTPDirectoryListing())
|
| return true;
|
|
|
| - WebFrame* web_frame = frame->GetWebFrame();
|
| + WebFrame* web_frame = render_frame()->GetWebFrame();
|
| return IsWhitelistedForContentSettings(web_frame->document().securityOrigin(),
|
| web_frame->document().url());
|
| }
|
|
|