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 932640772ee1e008d638a9f840d6bd03c8520bac..c2529d6b00405f7f662e8df2da090b296522902b 100644 |
--- a/chrome/renderer/content_settings_observer_browsertest.cc |
+++ b/chrome/renderer/content_settings_observer_browsertest.cc |
@@ -174,7 +174,9 @@ TEST_F(ChromeRenderViewTest, ImagesBlockedByDefault) { |
LoadHTML("<html>Foo</html>"); |
// Set the default image blocking setting. |
- ContentSettingsForOneType image_setting_rules; |
+ ContentSettingsForOneType content_setting_rules[CONTENT_SETTINGS_NUM_TYPES]; |
+ ContentSettingsForOneType& image_setting_rules = |
+ content_setting_rules[CONTENT_SETTINGS_TYPE_IMAGES]; |
image_setting_rules.push_back( |
ContentSettingPatternSource(ContentSettingsPattern::Wildcard(), |
ContentSettingsPattern::Wildcard(), |
@@ -183,7 +185,7 @@ TEST_F(ChromeRenderViewTest, ImagesBlockedByDefault) { |
false)); |
ContentSettingsObserver* observer = ContentSettingsObserver::Get(view_); |
- observer->SetImageSettingRules(&image_setting_rules); |
+ observer->SetContentSettingRules(content_setting_rules); |
EXPECT_CALL(mock_observer, |
OnContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES, std::string())); |
EXPECT_FALSE(observer->AllowImage(GetMainFrame(), |
@@ -215,7 +217,9 @@ TEST_F(ChromeRenderViewTest, ImagesAllowedByDefault) { |
LoadHTML("<html>Foo</html>"); |
// Set the default image blocking setting. |
- ContentSettingsForOneType image_setting_rules; |
+ ContentSettingsForOneType content_setting_rules[CONTENT_SETTINGS_NUM_TYPES]; |
+ ContentSettingsForOneType& image_setting_rules = |
+ content_setting_rules[CONTENT_SETTINGS_TYPE_IMAGES]; |
image_setting_rules.push_back( |
ContentSettingPatternSource(ContentSettingsPattern::Wildcard(), |
ContentSettingsPattern::Wildcard(), |
@@ -224,7 +228,7 @@ TEST_F(ChromeRenderViewTest, ImagesAllowedByDefault) { |
false)); |
ContentSettingsObserver* observer = ContentSettingsObserver::Get(view_); |
- observer->SetImageSettingRules(&image_setting_rules); |
+ observer->SetContentSettingRules(content_setting_rules); |
EXPECT_CALL( |
mock_observer, |
OnContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES, std::string())).Times(0); |
@@ -247,3 +251,75 @@ TEST_F(ChromeRenderViewTest, ImagesAllowedByDefault) { |
true, mock_observer.image_url_)); |
::testing::Mock::VerifyAndClearExpectations(&observer); |
} |
+ |
+TEST_F(ChromeRenderViewTest, ContentSettingsBlockScripts) { |
+ // Set the content settings for scripts. |
+ ContentSettingsForOneType content_setting_rules[CONTENT_SETTINGS_NUM_TYPES]; |
+ ContentSettingsForOneType& script_setting_rules = |
+ content_setting_rules[CONTENT_SETTINGS_TYPE_JAVASCRIPT]; |
+ script_setting_rules.push_back( |
+ ContentSettingPatternSource( |
+ ContentSettingsPattern::Wildcard(), |
+ ContentSettingsPattern::Wildcard(), |
+ CONTENT_SETTING_BLOCK, |
+ "", |
+ false)); |
+ |
+ ContentSettingsObserver* observer = ContentSettingsObserver::Get(view_); |
+ observer->SetContentSettingRules(content_setting_rules); |
+ |
+ // 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 blocked. |
+ 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_TRUE(was_blocked); |
+} |
+ |
+TEST_F(ChromeRenderViewTest, ContentSettingsAllowScripts) { |
+ // Set the content settings for scripts. |
+ ContentSettingsForOneType content_setting_rules[CONTENT_SETTINGS_NUM_TYPES]; |
+ ContentSettingsForOneType& script_setting_rules = |
+ content_setting_rules[CONTENT_SETTINGS_TYPE_JAVASCRIPT]; |
+ script_setting_rules.push_back( |
+ ContentSettingPatternSource( |
+ ContentSettingsPattern::Wildcard(), |
+ ContentSettingsPattern::Wildcard(), |
+ CONTENT_SETTING_ALLOW, |
+ "", |
+ false)); |
+ |
+ ContentSettingsObserver* observer = ContentSettingsObserver::Get(view_); |
+ observer->SetContentSettingRules(content_setting_rules); |
+ |
+ // 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 not blocked. |
+ 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); |
+} |