| 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);
|
| +}
|
|
|