OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "base/command_line.h" | 5 #include "base/command_line.h" |
6 #include "base/prefs/pref_service.h" | 6 #include "base/prefs/pref_service.h" |
7 #include "base/strings/utf_string_conversions.h" | 7 #include "base/strings/utf_string_conversions.h" |
8 #include "base/values.h" | 8 #include "base/values.h" |
9 #include "chrome/browser/chrome_notification_types.h" | 9 #include "chrome/browser/chrome_notification_types.h" |
10 #include "chrome/browser/history/history_service_factory.h" | 10 #include "chrome/browser/history/history_service_factory.h" |
(...skipping 16 matching lines...) Expand all Loading... |
27 #include "components/infobars/core/infobar.h" | 27 #include "components/infobars/core/infobar.h" |
28 #include "components/pref_registry/pref_registry_syncable.h" | 28 #include "components/pref_registry/pref_registry_syncable.h" |
29 #include "content/public/browser/interstitial_page.h" | 29 #include "content/public/browser/interstitial_page.h" |
30 #include "content/public/browser/navigation_controller.h" | 30 #include "content/public/browser/navigation_controller.h" |
31 #include "content/public/browser/navigation_entry.h" | 31 #include "content/public/browser/navigation_entry.h" |
32 #include "content/public/browser/notification_service.h" | 32 #include "content/public/browser/notification_service.h" |
33 #include "content/public/browser/web_contents.h" | 33 #include "content/public/browser/web_contents.h" |
34 #include "content/public/browser/web_contents_observer.h" | 34 #include "content/public/browser/web_contents_observer.h" |
35 #include "content/public/common/content_switches.h" | 35 #include "content/public/common/content_switches.h" |
36 #include "content/public/test/browser_test_utils.h" | 36 #include "content/public/test/browser_test_utils.h" |
| 37 #include "net/test/embedded_test_server/embedded_test_server.h" |
37 #include "testing/gmock/include/gmock/gmock.h" | 38 #include "testing/gmock/include/gmock/gmock.h" |
38 | 39 |
39 using content::InterstitialPage; | 40 using content::InterstitialPage; |
40 using content::NavigationController; | 41 using content::NavigationController; |
41 using content::NavigationEntry; | 42 using content::NavigationEntry; |
42 using content::WebContents; | 43 using content::WebContents; |
43 | 44 |
44 namespace { | 45 namespace { |
45 | 46 |
46 // Tests the filter mode in which all sites are blocked by default. | 47 // Tests the filter mode in which all sites are blocked by default. |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
109 SupervisedUserSettingsService* supervised_user_settings_service = | 110 SupervisedUserSettingsService* supervised_user_settings_service = |
110 SupervisedUserSettingsServiceFactory::GetForProfile(profile); | 111 SupervisedUserSettingsServiceFactory::GetForProfile(profile); |
111 supervised_user_settings_service->SetLocalSetting( | 112 supervised_user_settings_service->SetLocalSetting( |
112 supervised_users::kContentPackDefaultFilteringBehavior, | 113 supervised_users::kContentPackDefaultFilteringBehavior, |
113 scoped_ptr<base::Value>( | 114 scoped_ptr<base::Value>( |
114 new base::FundamentalValue(SupervisedUserURLFilter::BLOCK))); | 115 new base::FundamentalValue(SupervisedUserURLFilter::BLOCK))); |
115 } | 116 } |
116 | 117 |
117 void SetUpCommandLine(base::CommandLine* command_line) override { | 118 void SetUpCommandLine(base::CommandLine* command_line) override { |
118 // Enable the test server and remap all URLs to it. | 119 // Enable the test server and remap all URLs to it. |
119 ASSERT_TRUE(test_server()->Start()); | 120 ASSERT_TRUE(embedded_test_server()->Start()); |
120 std::string host_port = test_server()->host_port_pair().ToString(); | 121 std::string host_port = embedded_test_server()->host_port_pair().ToString(); |
121 command_line->AppendSwitchASCII(switches::kHostResolverRules, | 122 command_line->AppendSwitchASCII(switches::kHostResolverRules, |
122 "MAP *.example.com " + host_port + "," + | 123 "MAP *.example.com " + host_port + "," + |
123 "MAP *.new-example.com " + host_port + "," + | 124 "MAP *.new-example.com " + host_port + "," + |
124 "MAP *.a.com " + host_port); | 125 "MAP *.a.com " + host_port); |
125 | 126 |
126 command_line->AppendSwitchASCII(switches::kSupervisedUserId, "asdf"); | 127 command_line->AppendSwitchASCII(switches::kSupervisedUserId, "asdf"); |
127 } | 128 } |
128 | 129 |
129 // Acts like a synchronous call to history's QueryHistory. Modified from | 130 // Acts like a synchronous call to history's QueryHistory. Modified from |
130 // history_querying_unittest.cc. | 131 // history_querying_unittest.cc. |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
168 | 169 |
169 MOCK_METHOD3(TabClosingAt, void(TabStripModel*, content::WebContents*, int)); | 170 MOCK_METHOD3(TabClosingAt, void(TabStripModel*, content::WebContents*, int)); |
170 | 171 |
171 private: | 172 private: |
172 TabStripModel* tab_strip_; | 173 TabStripModel* tab_strip_; |
173 }; | 174 }; |
174 | 175 |
175 // Navigates to a blocked URL. | 176 // Navigates to a blocked URL. |
176 IN_PROC_BROWSER_TEST_F(SupervisedUserBlockModeTest, | 177 IN_PROC_BROWSER_TEST_F(SupervisedUserBlockModeTest, |
177 SendAccessRequestOnBlockedURL) { | 178 SendAccessRequestOnBlockedURL) { |
178 GURL test_url("http://www.example.com/files/simple.html"); | 179 GURL test_url("http://www.example.com/simple.html"); |
179 ui_test_utils::NavigateToURL(browser(), test_url); | 180 ui_test_utils::NavigateToURL(browser(), test_url); |
180 | 181 |
181 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); | 182 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); |
182 | 183 |
183 CheckShownPageIsInterstitial(tab); | 184 CheckShownPageIsInterstitial(tab); |
184 | 185 |
185 SendAccessRequest(tab); | 186 SendAccessRequest(tab); |
186 | 187 |
187 // TODO(sergiu): Properly check that the access request was sent here. | 188 // TODO(sergiu): Properly check that the access request was sent here. |
188 | 189 |
189 GoBack(tab); | 190 GoBack(tab); |
190 | 191 |
191 // Make sure that the tab is still there. | 192 // Make sure that the tab is still there. |
192 EXPECT_EQ(tab, browser()->tab_strip_model()->GetActiveWebContents()); | 193 EXPECT_EQ(tab, browser()->tab_strip_model()->GetActiveWebContents()); |
193 | 194 |
194 CheckShownPageIsNotInterstitial(tab); | 195 CheckShownPageIsNotInterstitial(tab); |
195 } | 196 } |
196 | 197 |
197 // Navigates to a blocked URL in a new tab. We expect the tab to be closed | 198 // Navigates to a blocked URL in a new tab. We expect the tab to be closed |
198 // automatically on pressing the "back" button on the interstitial. | 199 // automatically on pressing the "back" button on the interstitial. |
199 IN_PROC_BROWSER_TEST_F(SupervisedUserBlockModeTest, OpenBlockedURLInNewTab) { | 200 IN_PROC_BROWSER_TEST_F(SupervisedUserBlockModeTest, OpenBlockedURLInNewTab) { |
200 TabStripModel* tab_strip = browser()->tab_strip_model(); | 201 TabStripModel* tab_strip = browser()->tab_strip_model(); |
201 WebContents* prev_tab = tab_strip->GetActiveWebContents(); | 202 WebContents* prev_tab = tab_strip->GetActiveWebContents(); |
202 | 203 |
203 // Open blocked URL in a new tab. | 204 // Open blocked URL in a new tab. |
204 GURL test_url("http://www.example.com/files/simple.html"); | 205 GURL test_url("http://www.example.com/simple.html"); |
205 ui_test_utils::NavigateToURLWithDisposition( | 206 ui_test_utils::NavigateToURLWithDisposition( |
206 browser(), test_url, NEW_FOREGROUND_TAB, | 207 browser(), test_url, NEW_FOREGROUND_TAB, |
207 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); | 208 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
208 | 209 |
209 // Check that we got the interstitial. | 210 // Check that we got the interstitial. |
210 WebContents* tab = tab_strip->GetActiveWebContents(); | 211 WebContents* tab = tab_strip->GetActiveWebContents(); |
211 CheckShownPageIsInterstitial(tab); | 212 CheckShownPageIsInterstitial(tab); |
212 | 213 |
213 // On pressing the "back" button, the new tab should be closed, and we should | 214 // On pressing the "back" button, the new tab should be closed, and we should |
214 // get back to the previous active tab. | 215 // get back to the previous active tab. |
215 MockTabStripModelObserver observer(tab_strip); | 216 MockTabStripModelObserver observer(tab_strip); |
216 base::RunLoop run_loop; | 217 base::RunLoop run_loop; |
217 EXPECT_CALL(observer, | 218 EXPECT_CALL(observer, |
218 TabClosingAt(tab_strip, tab, tab_strip->active_index())) | 219 TabClosingAt(tab_strip, tab, tab_strip->active_index())) |
219 .WillOnce(testing::InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); | 220 .WillOnce(testing::InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); |
220 GoBack(tab); | 221 GoBack(tab); |
221 run_loop.Run(); | 222 run_loop.Run(); |
222 EXPECT_EQ(prev_tab, tab_strip->GetActiveWebContents()); | 223 EXPECT_EQ(prev_tab, tab_strip->GetActiveWebContents()); |
223 } | 224 } |
224 | 225 |
225 // Tests whether a visit attempt adds a special history entry. | 226 // Tests whether a visit attempt adds a special history entry. |
226 IN_PROC_BROWSER_TEST_F(SupervisedUserBlockModeTest, | 227 IN_PROC_BROWSER_TEST_F(SupervisedUserBlockModeTest, |
227 HistoryVisitRecorded) { | 228 HistoryVisitRecorded) { |
228 GURL allowed_url("http://www.example.com/files/simple.html"); | 229 GURL allowed_url("http://www.example.com/simple.html"); |
229 | 230 |
230 scoped_refptr<SupervisedUserURLFilter> filter = | 231 scoped_refptr<SupervisedUserURLFilter> filter = |
231 supervised_user_service_->GetURLFilterForUIThread(); | 232 supervised_user_service_->GetURLFilterForUIThread(); |
232 | 233 |
233 // Set the host as allowed. | 234 // Set the host as allowed. |
234 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue); | 235 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue); |
235 dict->SetBooleanWithoutPathExpansion(allowed_url.host(), true); | 236 dict->SetBooleanWithoutPathExpansion(allowed_url.host(), true); |
236 SupervisedUserSettingsService* supervised_user_settings_service = | 237 SupervisedUserSettingsService* supervised_user_settings_service = |
237 SupervisedUserSettingsServiceFactory::GetForProfile( | 238 SupervisedUserSettingsServiceFactory::GetForProfile( |
238 browser()->profile()); | 239 browser()->profile()); |
239 supervised_user_settings_service->SetLocalSetting( | 240 supervised_user_settings_service->SetLocalSetting( |
240 supervised_users::kContentPackManualBehaviorHosts, dict.Pass()); | 241 supervised_users::kContentPackManualBehaviorHosts, dict.Pass()); |
241 EXPECT_EQ(SupervisedUserURLFilter::ALLOW, | 242 EXPECT_EQ(SupervisedUserURLFilter::ALLOW, |
242 filter->GetFilteringBehaviorForURL(allowed_url)); | 243 filter->GetFilteringBehaviorForURL(allowed_url)); |
243 EXPECT_EQ(SupervisedUserURLFilter::ALLOW, | 244 EXPECT_EQ(SupervisedUserURLFilter::ALLOW, |
244 filter->GetFilteringBehaviorForURL(allowed_url.GetWithEmptyPath())); | 245 filter->GetFilteringBehaviorForURL(allowed_url.GetWithEmptyPath())); |
245 | 246 |
246 ui_test_utils::NavigateToURL(browser(), allowed_url); | 247 ui_test_utils::NavigateToURL(browser(), allowed_url); |
247 | 248 |
248 // Navigate to it and check that we don't get an interstitial. | 249 // Navigate to it and check that we don't get an interstitial. |
249 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); | 250 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); |
250 CheckShownPageIsNotInterstitial(tab); | 251 CheckShownPageIsNotInterstitial(tab); |
251 | 252 |
252 // Navigate to a blocked page and go back on the interstitial. | 253 // Navigate to a blocked page and go back on the interstitial. |
253 GURL blocked_url("http://www.new-example.com/files/simple.html"); | 254 GURL blocked_url("http://www.new-example.com/simple.html"); |
254 ui_test_utils::NavigateToURL(browser(), blocked_url); | 255 ui_test_utils::NavigateToURL(browser(), blocked_url); |
255 | 256 |
256 tab = browser()->tab_strip_model()->GetActiveWebContents(); | 257 tab = browser()->tab_strip_model()->GetActiveWebContents(); |
257 | 258 |
258 CheckShownPageIsInterstitial(tab); | 259 CheckShownPageIsInterstitial(tab); |
259 GoBack(tab); | 260 GoBack(tab); |
260 | 261 |
261 // Check that we went back to the first URL and that the manual behaviors | 262 // Check that we went back to the first URL and that the manual behaviors |
262 // have not changed. | 263 // have not changed. |
263 EXPECT_EQ(allowed_url.spec(), tab->GetURL().spec()); | 264 EXPECT_EQ(allowed_url.spec(), tab->GetURL().spec()); |
(...skipping 12 matching lines...) Expand all Loading... |
276 | 277 |
277 // Check that the entries have the correct blocked_visit value. | 278 // Check that the entries have the correct blocked_visit value. |
278 ASSERT_EQ(2u, results.size()); | 279 ASSERT_EQ(2u, results.size()); |
279 EXPECT_EQ(blocked_url.spec(), results[0].url().spec()); | 280 EXPECT_EQ(blocked_url.spec(), results[0].url().spec()); |
280 EXPECT_TRUE(results[0].blocked_visit()); | 281 EXPECT_TRUE(results[0].blocked_visit()); |
281 EXPECT_EQ(allowed_url.spec(), results[1].url().spec()); | 282 EXPECT_EQ(allowed_url.spec(), results[1].url().spec()); |
282 EXPECT_FALSE(results[1].blocked_visit()); | 283 EXPECT_FALSE(results[1].blocked_visit()); |
283 } | 284 } |
284 | 285 |
285 IN_PROC_BROWSER_TEST_F(SupervisedUserBlockModeTest, Unblock) { | 286 IN_PROC_BROWSER_TEST_F(SupervisedUserBlockModeTest, Unblock) { |
286 GURL test_url("http://www.example.com/files/simple.html"); | 287 GURL test_url("http://www.example.com/simple.html"); |
287 ui_test_utils::NavigateToURL(browser(), test_url); | 288 ui_test_utils::NavigateToURL(browser(), test_url); |
288 | 289 |
289 WebContents* web_contents = | 290 WebContents* web_contents = |
290 browser()->tab_strip_model()->GetActiveWebContents(); | 291 browser()->tab_strip_model()->GetActiveWebContents(); |
291 | 292 |
292 CheckShownPageIsInterstitial(web_contents); | 293 CheckShownPageIsInterstitial(web_contents); |
293 | 294 |
294 content::WindowedNotificationObserver observer( | 295 content::WindowedNotificationObserver observer( |
295 content::NOTIFICATION_LOAD_STOP, | 296 content::NOTIFICATION_LOAD_STOP, |
296 content::NotificationService::AllSources()); | 297 content::NotificationService::AllSources()); |
(...skipping 10 matching lines...) Expand all Loading... |
307 scoped_refptr<SupervisedUserURLFilter> filter = | 308 scoped_refptr<SupervisedUserURLFilter> filter = |
308 supervised_user_service_->GetURLFilterForUIThread(); | 309 supervised_user_service_->GetURLFilterForUIThread(); |
309 EXPECT_EQ(SupervisedUserURLFilter::ALLOW, | 310 EXPECT_EQ(SupervisedUserURLFilter::ALLOW, |
310 filter->GetFilteringBehaviorForURL(test_url.GetWithEmptyPath())); | 311 filter->GetFilteringBehaviorForURL(test_url.GetWithEmptyPath())); |
311 | 312 |
312 observer.Wait(); | 313 observer.Wait(); |
313 EXPECT_EQ(test_url, web_contents->GetURL()); | 314 EXPECT_EQ(test_url, web_contents->GetURL()); |
314 } | 315 } |
315 | 316 |
316 } // namespace | 317 } // namespace |
OLD | NEW |