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

Unified Diff: chrome/browser/net/chrome_network_delegate_unittest.cc

Issue 11186002: Add a SafeSearch preference, policy and implementation. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add a SafeSearch preference, policy and implementation. Created 8 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/browser/net/chrome_network_delegate_unittest.cc
diff --git a/chrome/browser/net/chrome_network_delegate_unittest.cc b/chrome/browser/net/chrome_network_delegate_unittest.cc
index 3c4aaa156f0122a75115c62f962a72e4fcba9db8..adfd8f9774abdc8f878dfbe5fc19b7e51f43971a 100644
--- a/chrome/browser/net/chrome_network_delegate_unittest.cc
+++ b/chrome/browser/net/chrome_network_delegate_unittest.cc
@@ -9,6 +9,12 @@
#include "base/message_loop.h"
#include "chrome/browser/api/prefs/pref_member.h"
#include "chrome/browser/extensions/event_router_forwarder.h"
+#include "chrome/common/pref_names.h"
+#include "chrome/common/url_constants.h"
+#include "chrome/test/base/testing_pref_service.h"
+#include "chrome/test/base/testing_profile.h"
+#include "net/base/completion_callback.h"
+#include "net/url_request/url_request.h"
#include "net/url_request/url_request_test_util.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -32,7 +38,7 @@ class ChromeNetworkDelegateTest : public testing::Test {
scoped_ptr<ChromeNetworkDelegate> CreateNetworkDelegate() {
return scoped_ptr<ChromeNetworkDelegate>(new ChromeNetworkDelegate(
forwarder_.get(), NULL, NULL, NULL, NULL, NULL, &pref_member_, NULL,
- NULL));
+ NULL, NULL));
}
// Implementation moved here for access to private bits.
@@ -80,3 +86,178 @@ class ChromeNetworkDelegateTest : public testing::Test {
TEST_F(ChromeNetworkDelegateTest, NeverThrottleLogic) {
NeverThrottleLogicImpl();
}
+
+class ChromeNetworkDelegateSafesearchTest : public testing::Test {
+ public:
+ scoped_ptr<net::NetworkDelegate> CreateNetworkDelegate() {
+ return scoped_ptr<net::NetworkDelegate>(new ChromeNetworkDelegate(
+ forwarder_.get(), NULL, NULL, NULL, NULL, NULL, &enable_referrers_,
+ NULL, &enable_safesearch_, NULL));
+ }
+
+ void SetSafesearch(bool value) {
+ enable_safesearch_.SetValue(value);
+ }
+
+ void SetDelegate(net::NetworkDelegate* delegate) {
+ context_.set_network_delegate(delegate);
+ }
+
+ protected:
+ ChromeNetworkDelegateSafesearchTest()
+ : forwarder_(new extensions::EventRouterForwarder()) {
+ }
+
+ virtual void SetUp() OVERRIDE {
+ prefs_.RegisterBooleanPref(prefs::kSafeSearchEnabled, false,
+ PrefService::UNSYNCABLE_PREF);
+ enable_safesearch_.Init(prefs::kSafeSearchEnabled,
+ profile_.GetTestingPrefService(), NULL);
+ prefs_.RegisterBooleanPref(prefs::kEnableReferrers, false,
+ PrefService::UNSYNCABLE_PREF);
+ enable_referrers_.Init(prefs::kEnableReferrers,
+ profile_.GetTestingPrefService(), NULL);
+ loop_ = new MessageLoopForIO();
+ }
+
+ void CheckAddedParameters(const std::string& url_string, const char* expected,
+ const bool exact) {
battre 2012/10/16 16:05:49 style nit: all parameters should be aligned at the
Sergiu 2012/10/17 14:48:58 Done.
+ // Show the URL in the trace so we know where we failed.
+ SCOPED_TRACE(url_string);
+
+ TestURLRequest url_req(
battre 2012/10/16 16:05:49 s/url_req/request/
Sergiu 2012/10/17 14:48:58 Done.
+ GURL(url_string), &tdelegate_, &context_);
Pam (message me for reviews) 2012/10/17 11:37:37 Does this not fit up on the line above?
+
+ url_req.Start();
+ MessageLoop::current()->RunAllPending();
+
+ if (exact)
+ EXPECT_STREQ(expected, url_req.url().query().c_str());
+ else
+ EXPECT_TRUE(url_req.url().query().rfind(expected));
+ }
+
+ virtual void TearDown() OVERRIDE {
+ delete loop_;
+ loop_ = NULL;
battre 2012/10/16 16:05:49 how about a scoped_ptr? do you need to use a point
Sergiu 2012/10/17 14:48:58 Done.
+ }
+
+ private:
+ scoped_refptr<extensions::EventRouterForwarder> forwarder_;
+ TestingProfile profile_;
+ TestingPrefService prefs_;
+ BooleanPrefMember enable_referrers_;
+ BooleanPrefMember enable_safesearch_;
+ scoped_ptr<net::URLRequest> request_;
+ TestURLRequestContext context_;
+ TestDelegate tdelegate_;
battre 2012/10/16 16:05:49 s/tdelegate_/delegate_/
Pam (message me for reviews) 2012/10/17 11:37:37 Or test_delegate_
Sergiu 2012/10/17 14:48:58 Done.
+ MessageLoopForIO* loop_;
Joao da Silva 2012/10/16 16:26:46 Use a scoped_ptr
Sergiu 2012/10/17 14:48:58 Done.
+};
+
+TEST_F(ChromeNetworkDelegateSafesearchTest, SafesearchOn) {
+ // Tests with SafeSearch on, request parameters should be rewritten.
+ SetSafesearch(true);
+ scoped_ptr<net::NetworkDelegate> delegate(CreateNetworkDelegate());
+ SetDelegate(delegate.get());
+
+ // Test the home page.
+ CheckAddedParameters("http://google.com/", chrome::kSSearchParamsSingle,
+ true);
+
+ // Test the search home page.
+ CheckAddedParameters("http://google.com/webhp",
+ chrome::kSSearchParamsSingle,
+ true);
+
+ // Test different vaild search pages with parameters.
+ CheckAddedParameters("http://google.com/search?q=google",
+ chrome::kSSearchParamsMultiple,
+ false);
+
+ CheckAddedParameters("http://google.com/?q=google",
+ chrome::kSSearchParamsMultiple,
+ false);
+
+ CheckAddedParameters("http://google.com/webhp?q=google",
+ chrome::kSSearchParamsMultiple,
+ false);
+
+ // Test the valid pages with safe set to off.
+ CheckAddedParameters("http://google.com/search?q=google&safe=off",
+ chrome::kSSearchParamsMultiple,
+ false);
+
+ CheckAddedParameters("http://google.com/?q=google&safe=off",
+ chrome::kSSearchParamsMultiple,
+ false);
+
+ CheckAddedParameters("http://google.com/webhp?q=google&safe=off",
+ chrome::kSSearchParamsMultiple,
+ false);
+
+ // Test the home page, different TLDs.
+ CheckAddedParameters("http://google.de/", chrome::kSSearchParamsSingle, true);
+ CheckAddedParameters("http://google.ro/", chrome::kSSearchParamsSingle, true);
+ CheckAddedParameters("http://google.nl/", chrome::kSSearchParamsSingle, true);
+
+ // Test the search home page, different TLD.
+ CheckAddedParameters("http://google.de/webhp", chrome::kSSearchParamsSingle,
+ true);
+
+ // Test the home page with parameters, different TLD.
+ CheckAddedParameters("http://google.de/search?q=google",
+ chrome::kSSearchParamsMultiple,
+ false);
+
+ // Test the search page with parameters, different TLD.
+ CheckAddedParameters("http://google.de/?q=google",
+ chrome::kSSearchParamsMultiple,
+ false);
+
+ // Test that another website is not affected, without parameters
Joao da Silva 2012/10/16 16:26:46 nit: terminate sentence
Sergiu 2012/10/17 14:48:58 Done.
+ CheckAddedParameters("http://google.com/finance", "", true);
+
+ // Test that another website is not affected, with parameters
Joao da Silva 2012/10/16 16:26:46 nit: terminate sentence
Sergiu 2012/10/17 14:48:58 Done.
+ CheckAddedParameters("http://google.com/finance?q=goog", "q=goog", true);
+
+ // Test that another website is not affected with redirects, with parameters
Joao da Silva 2012/10/16 16:26:46 nit: terminate sentence
Sergiu 2012/10/17 14:48:58 Done.
+ CheckAddedParameters("http://finance.google.com/?q=goog", "q=goog", true);
+}
+
+TEST_F(ChromeNetworkDelegateSafesearchTest, SafesearchOff) {
+ // Tests with SafeSearch settings off, delegate should not alter requests.
+ SetSafesearch(false);
+ scoped_ptr<net::NetworkDelegate> delegate(CreateNetworkDelegate());
+ SetDelegate(delegate.get());
+
+ // Test the home page
Joao da Silva 2012/10/16 16:26:46 nit: terminate sentences in this test too
Sergiu 2012/10/17 14:48:58 Done.
+ CheckAddedParameters("http://google.com/", "", true);
+
+ // Test the search home page
+ CheckAddedParameters("http://google.com/webhp", "", true);
+
+ // Test the home page with parameters
+ CheckAddedParameters("http://google.com/search?q=google",
+ "q=google",
+ true);
+
+ // Test the search page with parameters
+ CheckAddedParameters("http://google.com/?q=google",
+ "q=google",
+ true);
+
+ // Test the search webhp page with parameters
+ CheckAddedParameters("http://google.com/webhp?q=google",
+ "q=google",
+ true);
+
+ // Test the home page with parameters and safe set to off
+ CheckAddedParameters("http://google.com/search?q=google&safe=off",
+ "q=google&safe=off",
+ true);
+
+ // Test the home page with parameters and safe set to active
+ CheckAddedParameters("http://google.com/search?q=google&safe=active",
+ "q=google&safe=active",
+ true);
+}

Powered by Google App Engine
This is Rietveld 408576698