Index: chrome/renderer/content_settings_observer_browsertest.cc |
diff --git a/chrome/renderer/content_settings_observer_browsertest.cc b/chrome/renderer/content_settings_observer_browsertest.cc |
index d05df62b42cf824e0375c83640f5b3335368f3dc..a8bd11936525aa7b731cab861475e9c808fd487b 100644 |
--- a/chrome/renderer/content_settings_observer_browsertest.cc |
+++ b/chrome/renderer/content_settings_observer_browsertest.cc |
@@ -322,3 +322,39 @@ TEST_F(ChromeRenderViewTest, ContentSettingsAllowScripts) { |
} |
EXPECT_FALSE(was_blocked); |
} |
+ |
+TEST_F(ChromeRenderViewTest, ContentSettingsAllowInterstitialScripts) { |
+ // 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)); |
+ |
+ ContentSettingsObserver* observer = ContentSettingsObserver::Get(view_); |
+ observer->SetContentSettingRules(&content_setting_rules); |
+ |
+ observer->OnSetAsInterstitial(); |
+ |
+ // 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); |
+} |