diff options
author | dgozman@chromium.org <dgozman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-08 12:13:34 +0000 |
---|---|---|
committer | dgozman@chromium.org <dgozman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-08 12:13:34 +0000 |
commit | 6f9f7d8e3b8b6ab52d568a3fb0ec1d5620d207e7 (patch) | |
tree | 93856104bbd593704c3950eff8fd3090ff6cea50 /chrome/renderer/content_settings_observer_browsertest.cc | |
parent | 1464ce1eaa7154c5c8b3541c11481cecadeb0e83 (diff) | |
download | chromium_src-6f9f7d8e3b8b6ab52d568a3fb0ec1d5620d207e7.zip chromium_src-6f9f7d8e3b8b6ab52d568a3fb0ec1d5620d207e7.tar.gz chromium_src-6f9f7d8e3b8b6ab52d568a3fb0ec1d5620d207e7.tar.bz2 |
Revert 113591 - Revert 113579 - Content settings: allow scripts on interstitial pages even if JavaScript is blocked.
BUG=104700
TEST=ChromeRenderViewTest.ContentSettingsInterstitialPages
Review URL: http://codereview.chromium.org/8773035
TBR=marja@chromium.org
Review URL: http://codereview.chromium.org/8889008
TBR=dgozman@chromium.org
Review URL: http://codereview.chromium.org/8873015
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@113594 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/content_settings_observer_browsertest.cc')
-rw-r--r-- | chrome/renderer/content_settings_observer_browsertest.cc | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/chrome/renderer/content_settings_observer_browsertest.cc b/chrome/renderer/content_settings_observer_browsertest.cc index d05df62..db720f5 100644 --- a/chrome/renderer/content_settings_observer_browsertest.cc +++ b/chrome/renderer/content_settings_observer_browsertest.cc @@ -322,3 +322,55 @@ TEST_F(ChromeRenderViewTest, ContentSettingsAllowScripts) { } EXPECT_FALSE(was_blocked); } + +TEST_F(ChromeRenderViewTest, ContentSettingsInterstitialPages) { + MockContentSettingsObserver mock_observer(view_); + // Block scripts. + RendererContentSettingRules content_setting_rules; + ContentSettingsForOneType& script_setting_rules = + content_setting_rules.script_rules; + script_setting_rules.push_back( + ContentSettingPatternSource( + ContentSettingsPattern::Wildcard(), + ContentSettingsPattern::Wildcard(), + CONTENT_SETTING_BLOCK, "", false)); + // Block images. + ContentSettingsForOneType& image_setting_rules = + content_setting_rules.image_rules; + image_setting_rules.push_back( + ContentSettingPatternSource( + ContentSettingsPattern::Wildcard(), + ContentSettingsPattern::Wildcard(), + CONTENT_SETTING_BLOCK, "", false)); + + ContentSettingsObserver* observer = ContentSettingsObserver::Get(view_); + observer->SetContentSettingRules(&content_setting_rules); + observer->SetAsInterstitial(); + + // Load a page which contains a script. + std::string html = "<html>" + "<head>" + "<script src='data:foo'></script>" + "</head>" + "<body>" + "</body>" + "</html>"; + LoadHTML(html.c_str()); + + // Verify that the script was allowed. + bool was_blocked = false; + for (size_t i = 0; i < render_thread_->sink().message_count(); ++i) { + const IPC::Message* msg = render_thread_->sink().GetMessageAt(i); + if (msg->type() == ChromeViewHostMsg_ContentBlocked::ID) + was_blocked = true; + } + EXPECT_FALSE(was_blocked); + + // Verify that images are allowed. + EXPECT_CALL( + mock_observer, + OnContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES, std::string())).Times(0); + EXPECT_TRUE(observer->AllowImage(GetMainFrame(), true, + mock_observer.image_url_)); + ::testing::Mock::VerifyAndClearExpectations(&observer); +} |