diff options
author | marja@chromium.org <marja@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-08 08:52:52 +0000 |
---|---|---|
committer | marja@chromium.org <marja@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-08 08:52:52 +0000 |
commit | c24e91a9bc8c9ec57c0f870687fa9f6e366c9f7e (patch) | |
tree | edd48589e49370fef10b9c009b9f520df99fc376 /chrome/renderer/content_settings_observer_browsertest.cc | |
parent | 43cbd759bddfc293d3dfc315c7b7ee893fe50c4e (diff) | |
download | chromium_src-c24e91a9bc8c9ec57c0f870687fa9f6e366c9f7e.zip chromium_src-c24e91a9bc8c9ec57c0f870687fa9f6e366c9f7e.tar.gz chromium_src-c24e91a9bc8c9ec57c0f870687fa9f6e366c9f7e.tar.bz2 |
Content settings: allow scripts on interstitial pages even if JavaScript is blocked.
BUG=104700
TEST=ChromeRenderViewTest.ContentSettingsInterstitialPages
Review URL: http://codereview.chromium.org/8773035
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@113579 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); +} |