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

Side by Side 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: Fine grain parameter match + more tests. 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/net/chrome_network_delegate.h" 5 #include "chrome/browser/net/chrome_network_delegate.h"
6 6
7 #include "base/memory/ref_counted.h" 7 #include "base/memory/ref_counted.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "chrome/browser/api/prefs/pref_member.h" 10 #include "chrome/browser/api/prefs/pref_member.h"
11 #include "chrome/browser/extensions/event_router_forwarder.h" 11 #include "chrome/browser/extensions/event_router_forwarder.h"
12 #include "chrome/common/pref_names.h"
13 #include "chrome/common/url_constants.h"
14 #include "chrome/test/base/testing_pref_service.h"
15 #include "chrome/test/base/testing_profile.h"
16 #include "net/base/completion_callback.h"
17 #include "net/url_request/url_request.h"
12 #include "net/url_request/url_request_test_util.h" 18 #include "net/url_request/url_request_test_util.h"
13 #include "testing/gtest/include/gtest/gtest.h" 19 #include "testing/gtest/include/gtest/gtest.h"
14 20
21 namespace {
22 const std::string kSafeParameter = chrome::kSafeSearchSafeParameter;
23 const std::string kSsuiParameter = chrome::kSafeSearchSsuiParameter;
24 const std::string kBothParameters = kSafeParameter + "&" + kSsuiParameter;
Joao da Silva 2012/10/19 10:00:38 This requires a static initializer to call the str
Sergiu 2012/10/19 12:00:18 Done.
25 }
26
15 class ChromeNetworkDelegateTest : public testing::Test { 27 class ChromeNetworkDelegateTest : public testing::Test {
16 protected: 28 protected:
17 ChromeNetworkDelegateTest() 29 ChromeNetworkDelegateTest()
18 : forwarder_(new extensions::EventRouterForwarder()) { 30 : forwarder_(new extensions::EventRouterForwarder()) {
19 } 31 }
20 32
21 virtual void SetUp() OVERRIDE { 33 virtual void SetUp() OVERRIDE {
22 never_throttle_requests_original_value_ = 34 never_throttle_requests_original_value_ =
23 ChromeNetworkDelegate::g_never_throttle_requests_; 35 ChromeNetworkDelegate::g_never_throttle_requests_;
24 ChromeNetworkDelegate::g_never_throttle_requests_ = false; 36 ChromeNetworkDelegate::g_never_throttle_requests_ = false;
25 } 37 }
26 38
27 virtual void TearDown() OVERRIDE { 39 virtual void TearDown() OVERRIDE {
28 ChromeNetworkDelegate::g_never_throttle_requests_ = 40 ChromeNetworkDelegate::g_never_throttle_requests_ =
29 never_throttle_requests_original_value_; 41 never_throttle_requests_original_value_;
30 } 42 }
31 43
32 scoped_ptr<ChromeNetworkDelegate> CreateNetworkDelegate() { 44 scoped_ptr<ChromeNetworkDelegate> CreateNetworkDelegate() {
33 return scoped_ptr<ChromeNetworkDelegate>(new ChromeNetworkDelegate( 45 return scoped_ptr<ChromeNetworkDelegate>(new ChromeNetworkDelegate(
34 forwarder_.get(), NULL, NULL, NULL, NULL, NULL, &pref_member_, NULL, 46 forwarder_.get(), NULL, NULL, NULL, NULL, NULL, &pref_member_, NULL,
35 NULL)); 47 NULL, NULL));
36 } 48 }
37 49
38 // Implementation moved here for access to private bits. 50 // Implementation moved here for access to private bits.
39 void NeverThrottleLogicImpl() { 51 void NeverThrottleLogicImpl() {
40 scoped_ptr<ChromeNetworkDelegate> delegate(CreateNetworkDelegate()); 52 scoped_ptr<ChromeNetworkDelegate> delegate(CreateNetworkDelegate());
41 53
42 TestURLRequestContext context; 54 TestURLRequestContext context;
43 TestURLRequest extension_request( 55 TestURLRequest extension_request(
44 GURL("http://example.com/"), NULL, &context); 56 GURL("http://example.com/"), NULL, &context);
45 extension_request.set_first_party_for_cookies( 57 extension_request.set_first_party_for_cookies(
(...skipping 27 matching lines...) Expand all
73 bool never_throttle_requests_original_value_; 85 bool never_throttle_requests_original_value_;
74 MessageLoopForIO message_loop_; 86 MessageLoopForIO message_loop_;
75 87
76 scoped_refptr<extensions::EventRouterForwarder> forwarder_; 88 scoped_refptr<extensions::EventRouterForwarder> forwarder_;
77 BooleanPrefMember pref_member_; 89 BooleanPrefMember pref_member_;
78 }; 90 };
79 91
80 TEST_F(ChromeNetworkDelegateTest, NeverThrottleLogic) { 92 TEST_F(ChromeNetworkDelegateTest, NeverThrottleLogic) {
81 NeverThrottleLogicImpl(); 93 NeverThrottleLogicImpl();
82 } 94 }
95
96 class ChromeNetworkDelegateSafesearchTest : public testing::Test {
97 public:
98 scoped_ptr<net::NetworkDelegate> CreateNetworkDelegate() {
99 return scoped_ptr<net::NetworkDelegate>(new ChromeNetworkDelegate(
100 forwarder_.get(), NULL, NULL, NULL, NULL, NULL, &enable_referrers_,
101 NULL, &force_google_safesearch_, NULL));
102 }
103
104 void SetSafesearch(bool value) {
105 force_google_safesearch_.SetValue(value);
106 }
107
108 void SetDelegate(net::NetworkDelegate* delegate) {
109 context_.set_network_delegate(delegate);
110 }
111
112 protected:
113 ChromeNetworkDelegateSafesearchTest()
114 : forwarder_(new extensions::EventRouterForwarder()) {
115 }
116
117 virtual void SetUp() OVERRIDE {
118 prefs_.RegisterBooleanPref(prefs::kForceSafeSearch, false,
119 PrefService::UNSYNCABLE_PREF);
120 force_google_safesearch_.Init(prefs::kForceSafeSearch,
121 profile_.GetTestingPrefService(), NULL);
122 prefs_.RegisterBooleanPref(prefs::kEnableReferrers, false,
123 PrefService::UNSYNCABLE_PREF);
124 enable_referrers_.Init(prefs::kEnableReferrers,
125 profile_.GetTestingPrefService(), NULL);
126 loop_.reset(new MessageLoopForIO());
127 }
128
129 // Verifies that the expected string is equal to the query part (between
130 // ? and #) of the url_string.
131 void CheckAddedParameters(const std::string& url_string,
132 std::string expected) {
133 // Show the URL in the trace so we know where we failed.
134 SCOPED_TRACE(url_string);
135
136 TestURLRequest request(GURL(url_string), &delegate_, &context_);
137
138 request.Start();
139 MessageLoop::current()->RunAllPending();
140
141 EXPECT_EQ(expected, request.url().query());
142 }
143
144 private:
145 scoped_refptr<extensions::EventRouterForwarder> forwarder_;
146 TestingProfile profile_;
147 TestingPrefService prefs_;
148 BooleanPrefMember enable_referrers_;
149 BooleanPrefMember force_google_safesearch_;
150 scoped_ptr<net::URLRequest> request_;
151 TestURLRequestContext context_;
152 TestDelegate delegate_;
153 scoped_ptr<MessageLoopForIO> loop_;
154 };
155
156 TEST_F(ChromeNetworkDelegateSafesearchTest, SafesearchOn) {
157 // Tests with SafeSearch on, request parameters should be rewritten.
158 SetSafesearch(true);
159 scoped_ptr<net::NetworkDelegate> delegate(CreateNetworkDelegate());
160 SetDelegate(delegate.get());
161
162 // Test the home page.
163 CheckAddedParameters("http://google.com/", kBothParameters);
164
165 // Test the search home page.
166 CheckAddedParameters("http://google.com/webhp",
167 kBothParameters);
168
169 // Test different valid search pages with parameters.
170 CheckAddedParameters("http://google.com/search?q=google",
171 "q=google&" + kBothParameters);
172
173 CheckAddedParameters("http://google.com/?q=google",
174 "q=google&" + kBothParameters);
175
176 CheckAddedParameters("http://google.com/webhp?q=google",
177 "q=google&" + kBothParameters);
178
179 // Test the valid pages with safe set to off.
180 CheckAddedParameters("http://google.com/search?q=google&safe=off",
181 "q=google&" + kBothParameters);
182
183 CheckAddedParameters("http://google.com/?q=google&safe=off",
184 "q=google&" + kBothParameters);
185
186 CheckAddedParameters("http://google.com/webhp?q=google&safe=off",
187 "q=google&" + kBothParameters);
188
189 // Test the home page, different TLDs.
190 CheckAddedParameters("http://google.de/", kBothParameters);
191 CheckAddedParameters("http://google.ro/", kBothParameters);
192 CheckAddedParameters("http://google.nl/", kBothParameters);
193
194 // Test the search home page, different TLD.
195 CheckAddedParameters("http://google.de/webhp", kBothParameters);
196
197 // Test the home page with parameters, different TLD.
198 CheckAddedParameters("http://google.de/search?q=google",
199 "q=google&" + kBothParameters);
200
201 // Test the search page with parameters, different TLD.
202 CheckAddedParameters("http://google.de/?q=google",
203 "q=google&" + kBothParameters);
204
205 // Test the search page with the parameters set.
206 CheckAddedParameters("http://google.de/?q=google&" + kBothParameters,
207 "q=google&" + kBothParameters);
208
209 // Test some possibly tricky combinations.
210 CheckAddedParameters("http://google.com/?q=goog&" + kSafeParameter +
211 "&ssui=one",
212 "q=goog&" + kBothParameters);
213
214 CheckAddedParameters("http://google.de/?q=goog&unsafe=active&" +
215 kSsuiParameter,
216 "q=goog&unsafe=active&" + kSsuiParameter + "&" +
217 kSafeParameter);
218
219 CheckAddedParameters("http://google.de/?q=goog&safe=off&ssui=off",
220 "q=goog&" + kSafeParameter + "&" + kSsuiParameter);
221
222 // Test various combinations where we should not add anything.
223 CheckAddedParameters("http://google.com/?q=goog&" + kSsuiParameter + "&" +
224 kSafeParameter,
225 "q=goog&" + kSsuiParameter + "&" + kSafeParameter);
226
227 CheckAddedParameters("http://google.com/?" + kSsuiParameter + "&q=goog&" +
228 kSafeParameter,
229 kSsuiParameter + "&q=goog&" + kSafeParameter);
230
231 CheckAddedParameters("http://google.com/?" + kSsuiParameter + "&" +
232 kSafeParameter + "&q=goog",
233 kSsuiParameter + "&" + kSafeParameter + "&q=goog");
234
235 // Test that another website is not affected, without parameters.
236 CheckAddedParameters("http://google.com/finance", "");
237
238 // Test that another website is not affected, with parameters.
239 CheckAddedParameters("http://google.com/finance?q=goog", "q=goog");
240
241 // Test that another website is not affected with redirects, with parameters.
242 CheckAddedParameters("http://finance.google.com/?q=goog", "q=goog");
243 }
244
245 TEST_F(ChromeNetworkDelegateSafesearchTest, SafesearchOff) {
246 // Tests with SafeSearch settings off, delegate should not alter requests.
247 SetSafesearch(false);
248 scoped_ptr<net::NetworkDelegate> delegate(CreateNetworkDelegate());
249 SetDelegate(delegate.get());
250
251 // Test the home page.
252 CheckAddedParameters("http://google.com/", "");
253
254 // Test the search home page.
255 CheckAddedParameters("http://google.com/webhp", "");
256
257 // Test the home page with parameters.
258 CheckAddedParameters("http://google.com/search?q=google",
259 "q=google");
260
261 // Test the search page with parameters.
262 CheckAddedParameters("http://google.com/?q=google",
263 "q=google");
264
265 // Test the search webhp page with parameters.
266 CheckAddedParameters("http://google.com/webhp?q=google",
267 "q=google");
268
269 // Test the home page with parameters and safe set to off.
270 CheckAddedParameters("http://google.com/search?q=google&safe=off",
271 "q=google&safe=off");
272
273 // Test the home page with parameters and safe set to active.
274 CheckAddedParameters("http://google.com/search?q=google&safe=active",
275 "q=google&safe=active");
276 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698