Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9224)

Unified Diff: chrome/renderer/content_settings_observer_browsertest.cc

Issue 7831075: Delegating the "are images allowed" decision to renderer. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Test build fixes. Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 bc11b17609a2235d5379ece7d565984112020c19..244088aa3059f8fba146a0dff6e3df515f5a400b 100644
--- a/chrome/renderer/content_settings_observer_browsertest.cc
+++ b/chrome/renderer/content_settings_observer_browsertest.cc
@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include <vector>
+
#include "chrome/common/content_settings.h"
#include "chrome/common/render_messages.h"
#include "chrome/renderer/content_settings_observer.h"
@@ -19,7 +21,9 @@ namespace {
class MockContentSettingsObserver : public ContentSettingsObserver {
public:
- explicit MockContentSettingsObserver(content::RenderView* render_view);
+ explicit MockContentSettingsObserver(
+ content::RenderView* render_view,
+ const ContentSettingsForOneType* image_setting_rules_);
virtual bool Send(IPC::Message* message);
@@ -28,11 +32,16 @@ class MockContentSettingsObserver : public ContentSettingsObserver {
MOCK_METHOD5(OnAllowDOMStorage,
void(int, const GURL&, const GURL&, bool, IPC::Message*));
+ GURL image_url_;
+ std::string image_origin_;
};
MockContentSettingsObserver::MockContentSettingsObserver(
- content::RenderView* render_view)
- : ContentSettingsObserver(render_view) {
+ content::RenderView* render_view,
+ const ContentSettingsForOneType* image_setting_rules)
+ : ContentSettingsObserver(render_view, image_setting_rules),
+ image_url_("http://www.foo.com/image.jpg"),
+ image_origin_("http://www.foo.com") {
}
bool MockContentSettingsObserver::Send(IPC::Message* message) {
@@ -50,7 +59,7 @@ bool MockContentSettingsObserver::Send(IPC::Message* message) {
} // namespace
TEST_F(ChromeRenderViewTest, DidBlockContentType) {
- MockContentSettingsObserver observer(view_);
+ MockContentSettingsObserver observer(view_, NULL);
EXPECT_CALL(observer,
OnContentBlocked(CONTENT_SETTINGS_TYPE_COOKIES, std::string()));
observer.DidBlockContentType(CONTENT_SETTINGS_TYPE_COOKIES, std::string());
@@ -74,7 +83,7 @@ TEST_F(ChromeRenderViewTest, DidBlockContentType) {
TEST_F(ChromeRenderViewTest, AllowDOMStorage) {
// Load some HTML, so we have a valid security origin.
LoadHTML("<html></html>");
- MockContentSettingsObserver observer(view_);
+ MockContentSettingsObserver observer(view_, NULL);
ON_CALL(observer,
OnAllowDOMStorage(_, _, _, _, _)).WillByDefault(DeleteArg<4>());
EXPECT_CALL(observer,
@@ -166,3 +175,80 @@ TEST_F(ChromeRenderViewTest, PluginsTemporarilyAllowed) {
EXPECT_EQ(CONTENT_SETTING_BLOCK,
observer->GetContentSetting(CONTENT_SETTINGS_TYPE_PLUGINS));
}
+
+TEST_F(ChromeRenderViewTest, ImagesBlockedByDefault) {
+ MockContentSettingsObserver mock_observer(view_, &image_setting_rules_);
+
+ // Load some HTML.
+ LoadHTML("<html>Foo</html>");
+
+ // Set the default image blocking setting.
+ image_setting_rules_.push_back(
+ ContentSettingPatternSource(ContentSettingsPattern::Wildcard(),
+ ContentSettingsPattern::Wildcard(),
+ CONTENT_SETTING_BLOCK,
+ "",
+ false));
+
+ ContentSettingsObserver* observer = ContentSettingsObserver::Get(view_);
+ EXPECT_CALL(mock_observer,
+ OnContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES, std::string()));
+ EXPECT_FALSE(observer->AllowImage(GetMainFrame(),
+ true, mock_observer.image_url_));
+ ::testing::Mock::VerifyAndClearExpectations(&observer);
+
+ // Create an exception which allows the image.
+ image_setting_rules_.insert(
+ image_setting_rules_.begin(),
+ ContentSettingPatternSource(
+ ContentSettingsPattern::Wildcard(),
+ ContentSettingsPattern::FromString(mock_observer.image_origin_),
+ CONTENT_SETTING_ALLOW,
+ "",
+ false));
+
+ 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);
+}
+
+TEST_F(ChromeRenderViewTest, ImagesAllowedByDefault) {
+ MockContentSettingsObserver mock_observer(view_, &image_setting_rules_);
+
+ // Load some HTML.
+ LoadHTML("<html>Foo</html>");
+
+ // Set the default image blocking setting.
+ image_setting_rules_.push_back(
+ ContentSettingPatternSource(ContentSettingsPattern::Wildcard(),
+ ContentSettingsPattern::Wildcard(),
+ CONTENT_SETTING_ALLOW,
+ "",
+ false));
+
+ ContentSettingsObserver* observer = ContentSettingsObserver::Get(view_);
+ 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);
+
+ // Create an exception which blocks the image.
+ image_setting_rules_.insert(
+ image_setting_rules_.begin(),
+ ContentSettingPatternSource(
+ ContentSettingsPattern::Wildcard(),
+ ContentSettingsPattern::FromString(mock_observer.image_origin_),
+ CONTENT_SETTING_BLOCK,
+ "",
+ false));
+ EXPECT_CALL(mock_observer,
+ OnContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES, std::string()));
+ EXPECT_FALSE(observer->AllowImage(GetMainFrame(),
+ true, mock_observer.image_url_));
+ ::testing::Mock::VerifyAndClearExpectations(&observer);
+}

Powered by Google App Engine
This is Rietveld 408576698