OLD | NEW |
1 // Copyright (c) 2013 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 "base/command_line.h" | 5 #include "base/command_line.h" |
6 #include "base/values.h" | 6 #include "base/values.h" |
7 #include "chrome/browser/api/infobars/confirm_infobar_delegate.h" | 7 #include "chrome/browser/api/infobars/confirm_infobar_delegate.h" |
8 #include "chrome/browser/extensions/extension_browsertest.h" | |
9 #include "chrome/browser/infobars/infobar.h" | 8 #include "chrome/browser/infobars/infobar.h" |
10 #include "chrome/browser/infobars/infobar_tab_helper.h" | 9 #include "chrome/browser/infobars/infobar_tab_helper.h" |
11 #include "chrome/browser/managed_mode/managed_mode.h" | 10 #include "chrome/browser/managed_mode/managed_mode.h" |
12 #include "chrome/browser/managed_mode/managed_mode_url_filter.h" | |
13 #include "chrome/browser/prefs/pref_service.h" | |
14 #include "chrome/browser/profiles/profile.h" | |
15 #include "chrome/browser/ui/browser_navigator.h" | 11 #include "chrome/browser/ui/browser_navigator.h" |
16 #include "chrome/browser/ui/browser_tabstrip.h" | 12 #include "chrome/browser/ui/browser_tabstrip.h" |
17 #include "chrome/common/chrome_notification_types.h" | 13 #include "chrome/common/chrome_notification_types.h" |
18 #include "chrome/common/chrome_switches.h" | 14 #include "chrome/common/chrome_switches.h" |
19 #include "chrome/common/pref_names.h" | |
20 #include "chrome/test/base/in_process_browser_test.h" | 15 #include "chrome/test/base/in_process_browser_test.h" |
21 #include "chrome/test/base/ui_test_utils.h" | 16 #include "chrome/test/base/ui_test_utils.h" |
22 #include "content/public/browser/interstitial_page.h" | 17 #include "content/public/browser/interstitial_page.h" |
23 #include "content/public/browser/navigation_controller.h" | 18 #include "content/public/browser/navigation_controller.h" |
24 #include "content/public/browser/navigation_entry.h" | 19 #include "content/public/browser/navigation_entry.h" |
25 #include "content/public/browser/notification_service.h" | 20 #include "content/public/browser/notification_service.h" |
26 #include "content/public/browser/web_contents.h" | 21 #include "content/public/browser/web_contents.h" |
27 #include "content/public/browser/web_contents_observer.h" | 22 #include "content/public/browser/web_contents_observer.h" |
28 #include "content/public/test/test_utils.h" | |
29 #include "googleurl/src/gurl.h" | |
30 | 23 |
31 using content::InterstitialPage; | 24 using content::InterstitialPage; |
32 using content::MessageLoopRunner; | |
33 using content::NavigationController; | 25 using content::NavigationController; |
34 using content::NavigationEntry; | 26 using content::NavigationEntry; |
35 using content::WebContents; | 27 using content::WebContents; |
36 | 28 |
37 namespace { | |
38 | |
39 class ManagedModeURLFilterObserver : public ManagedModeURLFilter::Observer { | |
40 public: | |
41 explicit ManagedModeURLFilterObserver(ManagedModeURLFilter* url_filter) | |
42 : url_filter_(url_filter) { | |
43 Reset(); | |
44 url_filter_->AddObserver(this); | |
45 } | |
46 | |
47 ~ManagedModeURLFilterObserver() { | |
48 url_filter_->RemoveObserver(this); | |
49 } | |
50 | |
51 void Wait() { | |
52 message_loop_runner_->Run(); | |
53 Reset(); | |
54 } | |
55 | |
56 // ManagedModeURLFilter::Observer | |
57 virtual void OnSiteListUpdated() OVERRIDE { | |
58 message_loop_runner_->Quit(); | |
59 } | |
60 | |
61 private: | |
62 void Reset() { | |
63 message_loop_runner_ = new MessageLoopRunner; | |
64 } | |
65 | |
66 ManagedModeURLFilter* url_filter_; | |
67 scoped_refptr<MessageLoopRunner> message_loop_runner_; | |
68 }; | |
69 | |
70 } // namespace | |
71 | |
72 class ManagedModeContentPackTest : public ExtensionBrowserTest { | |
73 public: | |
74 ManagedModeContentPackTest() {} | |
75 virtual ~ManagedModeContentPackTest() {} | |
76 | |
77 virtual void SetUpOnMainThread() OVERRIDE { | |
78 PrefService* prefs = browser()->profile()->GetPrefs(); | |
79 prefs->SetInteger(prefs::kDefaultManagedModeFilteringBehavior, | |
80 ManagedModeURLFilter::WARN); | |
81 } | |
82 }; | |
83 | |
84 IN_PROC_BROWSER_TEST_F(ManagedModeContentPackTest, InstallContentPacks) { | |
85 ManagedMode* managed_mode = ManagedMode::GetInstance(); | |
86 ManagedModeURLFilter* url_filter = | |
87 managed_mode->GetURLFilterForUIThreadImpl(); | |
88 ManagedModeURLFilterObserver observer(url_filter); | |
89 | |
90 GURL url("http://example.com"); | |
91 EXPECT_EQ(ManagedModeURLFilter::ALLOW, | |
92 url_filter->GetFilteringBehaviorForURL(url)); | |
93 | |
94 managed_mode->SetInManagedMode(browser()->profile()); | |
95 observer.Wait(); | |
96 | |
97 EXPECT_EQ(ManagedModeURLFilter::WARN, | |
98 url_filter->GetFilteringBehaviorForURL(url)); | |
99 | |
100 const extensions::Extension* extension = LoadExtension( | |
101 test_data_dir_.AppendASCII("managed_mode/content_pack")); | |
102 ASSERT_TRUE(extension) << "Failed to load extension."; | |
103 observer.Wait(); | |
104 | |
105 ScopedVector<ManagedModeSiteList> site_lists = | |
106 GetActiveSiteLists(&managed_user_service); | |
107 ASSERT_EQ(1u, site_lists.size()); | |
108 std::vector<ManagedModeSiteList::Site> sites; | |
109 site_lists[0]->GetSites(&sites); | |
110 ASSERT_EQ(3u, sites.size()); | |
111 EXPECT_EQ(ASCIIToUTF16("YouTube"), sites[0].name); | |
112 EXPECT_EQ(ASCIIToUTF16("Homestar Runner"), sites[1].name); | |
113 EXPECT_EQ(string16(), sites[2].name); | |
114 | |
115 EXPECT_EQ(ManagedModeURLFilter::ALLOW, | |
116 url_filter->GetFilteringBehaviorForURL(url)); | |
117 EXPECT_EQ(ManagedModeURLFilter::WARN, | |
118 url_filter->GetFilteringBehaviorForURL(GURL("http://moose.org"))); | |
119 } | |
120 | |
121 // TODO(sergiu): Make the webkit error message disappear when navigating to an | 29 // TODO(sergiu): Make the webkit error message disappear when navigating to an |
122 // interstitial page. The message states: "Not allowed to load local resource: | 30 // interstitial page. The message states: "Not allowed to load local resource: |
123 // chrome://resources/css/widgets.css" followed by the compiled page. | 31 // chrome://resources/css/widgets.css" followed by the compiled page. |
124 class ManagedModeBlockModeTest : public InProcessBrowserTest { | 32 class ManagedModeBlockModeTest : public InProcessBrowserTest { |
125 public: | 33 public: |
126 // Indicates whether the interstitial should proceed or not. | 34 // Indicates whether the interstitial should proceed or not. |
127 enum InterstitialAction { | 35 enum InterstitialAction { |
128 INTERSTITIAL_PROCEED, | 36 INTERSTITIAL_PROCEED, |
129 INTERSTITIAL_DONTPROCEED, | 37 INTERSTITIAL_DONTPROCEED, |
130 }; | 38 }; |
131 | 39 |
132 // Indicates the infobar action or expected state. INFOBAR_ACCEPT and | 40 // Indicates the infobar action or expected state. INFOBAR_ACCEPT and |
133 // INFOBAR_CANCEL act on the infobar. INFOBAR_ALREADY_ADDED shows that | 41 // INFOBAR_CANCEL act on the infobar. INFOBAR_ALREADY_ADDED shows that |
134 // the "Website was already added infobar" is expected (which expires | 42 // the "Website was already added infobar" is expected (which expires |
135 // automatically) and INFOBAR_NOT_USED shows that an infobar is not expected | 43 // automatically) and INFOBAR_NOT_USED shows that an infobar is not expected |
136 // in this case. | 44 // in this case. |
137 enum InfobarAction { | 45 enum InfobarAction { |
138 INFOBAR_ACCEPT, | 46 INFOBAR_ACCEPT, |
139 INFOBAR_CANCEL, | 47 INFOBAR_CANCEL, |
140 INFOBAR_ALREADY_ADDED, | 48 INFOBAR_ALREADY_ADDED, |
141 INFOBAR_NOT_USED, | 49 INFOBAR_NOT_USED, |
142 }; | 50 }; |
143 | 51 |
144 ManagedModeBlockModeTest() {} | 52 ManagedModeBlockModeTest() : managed_user_service_(NULL) {} |
| 53 virtual ~ManagedModeBlockModeTest() {} |
145 | 54 |
146 // Builds the redirect URL for the testserver from the hostnames and the | 55 // Builds the redirect URL for the testserver from the hostnames and the |
147 // final URL and returns it as a string. | 56 // final URL and returns it as a string. |
148 std::string GetRedirectURL(std::vector<std::string> hostnames, | 57 std::string GetRedirectURL(std::vector<std::string> hostnames, |
149 std::string final_url) { | 58 std::string final_url) { |
150 // TODO(sergiu): Figure out how to make multiple successive redirects | 59 // TODO(sergiu): Figure out how to make multiple successive redirects |
151 // trigger multiple notfications to test more advanced scenarios. | 60 // trigger multiple notfications to test more advanced scenarios. |
152 std::string output; | 61 std::string output; |
153 for (std::vector<std::string>::const_iterator it = hostnames.begin(); | 62 for (std::vector<std::string>::const_iterator it = hostnames.begin(); |
154 it != hostnames.end(); ++it) { | 63 it != hostnames.end(); ++it) { |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
236 content::WindowedNotificationObserver observer( | 145 content::WindowedNotificationObserver observer( |
237 content::NOTIFICATION_INTERSTITIAL_DETACHED, | 146 content::NOTIFICATION_INTERSTITIAL_DETACHED, |
238 content::Source<WebContents>(tab)); | 147 content::Source<WebContents>(tab)); |
239 interstitial_page->DontProceed(); | 148 interstitial_page->DontProceed(); |
240 observer.Wait(); | 149 observer.Wait(); |
241 } | 150 } |
242 CheckNumberOfInfobars(0); | 151 CheckNumberOfInfobars(0); |
243 } | 152 } |
244 | 153 |
245 protected: | 154 protected: |
246 virtual void SetUpCommandLine(CommandLine* command_line) { | 155 virtual void SetUpOnMainThread() OVERRIDE { |
| 156 managed_user_service_ = |
| 157 ManagedUserServiceFactory::GetForProfile(browser()->profile()); |
| 158 } |
| 159 |
| 160 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { |
247 // Enable the test server and remap all URLs to it. | 161 // Enable the test server and remap all URLs to it. |
248 ASSERT_TRUE(test_server()->Start()); | 162 ASSERT_TRUE(test_server()->Start()); |
249 std::string host_port = test_server()->host_port_pair().ToString(); | 163 std::string host_port = test_server()->host_port_pair().ToString(); |
250 command_line->AppendSwitch(switches::kManaged); | 164 command_line->AppendSwitch(switches::kManaged); |
251 command_line->AppendSwitchASCII(switches::kHostResolverRules, | 165 command_line->AppendSwitchASCII(switches::kHostResolverRules, |
252 "MAP *.example.com " + host_port + "," + | 166 "MAP *.example.com " + host_port + "," + |
253 "MAP *.new-example.com " + host_port + "," + | 167 "MAP *.new-example.com " + host_port + "," + |
254 "MAP *.a.com " + host_port); | 168 "MAP *.a.com " + host_port); |
255 } | 169 } |
256 | 170 |
257 private: | 171 ManagedUserService* managed_user_service_; |
258 DISALLOW_COPY_AND_ASSIGN(ManagedModeBlockModeTest); | |
259 }; | 172 }; |
260 | 173 |
261 // Navigates to a URL which is not in a manual list, clicks preview on the | 174 // Navigates to a URL which is not in a manual list, clicks preview on the |
262 // interstitial and then allows the website. The website should now be in the | 175 // interstitial and then allows the website. The website should now be in the |
263 // manual whitelist. | 176 // manual whitelist. |
264 IN_PROC_BROWSER_TEST_F(ManagedModeBlockModeTest, SimpleURLNotInAnyLists) { | 177 IN_PROC_BROWSER_TEST_F(ManagedModeBlockModeTest, SimpleURLNotInAnyLists) { |
265 GURL test_url("http://www.example.com/files/simple.html"); | 178 GURL test_url("http://www.example.com/files/simple.html"); |
266 ui_test_utils::NavigateToURL(browser(), test_url); | 179 ui_test_utils::NavigateToURL(browser(), test_url); |
267 | 180 |
268 WebContents* tab = chrome::GetActiveWebContents(browser()); | 181 WebContents* tab = chrome::GetActiveWebContents(browser()); |
269 | 182 |
270 CheckShownPageIsInterstitial(tab); | 183 CheckShownPageIsInterstitial(tab); |
271 ActOnInterstitialAndInfobar(tab, INTERSTITIAL_PROCEED, INFOBAR_ACCEPT); | 184 ActOnInterstitialAndInfobar(tab, INTERSTITIAL_PROCEED, INFOBAR_ACCEPT); |
272 | 185 |
273 EXPECT_TRUE(ManagedMode::IsInManualList(true, "www.example.com")); | 186 EXPECT_TRUE(managed_user_service_->IsInManualList(true, "www.example.com")); |
274 } | 187 } |
275 | 188 |
276 // Same as above just that the URL redirects to a second URL first. The initial | 189 // Same as above just that the URL redirects to a second URL first. The initial |
277 // exact URL should be in the whitelist as well as the second hostname. | 190 // exact URL should be in the whitelist as well as the second hostname. |
278 IN_PROC_BROWSER_TEST_F(ManagedModeBlockModeTest, RedirectedURLsNotInAnyLists) { | 191 IN_PROC_BROWSER_TEST_F(ManagedModeBlockModeTest, RedirectedURLsNotInAnyLists) { |
279 std::vector<std::string> url_list; | 192 std::vector<std::string> url_list; |
280 url_list.push_back("www.a.com"); | 193 url_list.push_back("www.a.com"); |
281 std::string last_url("www.example.com/files/simple.html"); | 194 std::string last_url("www.example.com/files/simple.html"); |
282 GURL test_url(GetRedirectURL(url_list, last_url)); | 195 GURL test_url(GetRedirectURL(url_list, last_url)); |
283 | 196 |
284 ui_test_utils::NavigateToURL(browser(), test_url); | 197 ui_test_utils::NavigateToURL(browser(), test_url); |
285 | 198 |
286 WebContents* tab = chrome::GetActiveWebContents(browser()); | 199 WebContents* tab = chrome::GetActiveWebContents(browser()); |
287 | 200 |
288 CheckShownPageIsInterstitial(tab); | 201 CheckShownPageIsInterstitial(tab); |
289 ActOnInterstitialAndInfobar(tab, INTERSTITIAL_PROCEED, INFOBAR_ACCEPT); | 202 ActOnInterstitialAndInfobar(tab, INTERSTITIAL_PROCEED, INFOBAR_ACCEPT); |
290 | 203 |
291 EXPECT_TRUE(ManagedMode::IsInManualList(true, | 204 EXPECT_TRUE(managed_user_service_->IsInManualList( |
292 "http://.www.a.com/server-redirect")); | 205 true, "http://.www.a.com/server-redirect")); |
293 EXPECT_TRUE(ManagedMode::IsInManualList(true, "www.example.com")); | 206 EXPECT_TRUE(managed_user_service_->IsInManualList(true, "www.example.com")); |
294 } | 207 } |
295 | 208 |
296 // Navigates to a URL in the whitelist. No interstitial should be shown and | 209 // Navigates to a URL in the whitelist. No interstitial should be shown and |
297 // the browser should navigate to the page. | 210 // the browser should navigate to the page. |
298 IN_PROC_BROWSER_TEST_F(ManagedModeBlockModeTest, SimpleURLInWhitelist) { | 211 IN_PROC_BROWSER_TEST_F(ManagedModeBlockModeTest, SimpleURLInWhitelist) { |
299 GURL test_url("http://www.example.com/files/simple.html"); | 212 GURL test_url("http://www.example.com/files/simple.html"); |
300 ListValue whitelist; | 213 ListValue whitelist; |
301 whitelist.AppendString(test_url.host()); | 214 whitelist.AppendString(test_url.host()); |
302 ManagedMode::AddToManualList(true, whitelist); | 215 managed_user_service_->AddToManualList(true, whitelist); |
303 | 216 |
304 ui_test_utils::NavigateToURL(browser(), test_url); | 217 ui_test_utils::NavigateToURL(browser(), test_url); |
305 | 218 |
306 WebContents* tab = chrome::GetActiveWebContents(browser()); | 219 WebContents* tab = chrome::GetActiveWebContents(browser()); |
307 | 220 |
308 CheckShownPageIsNotInterstitial(tab); | 221 CheckShownPageIsNotInterstitial(tab); |
309 | 222 |
310 EXPECT_TRUE(ManagedMode::IsInManualList(true, "www.example.com")); | 223 EXPECT_TRUE(managed_user_service_->IsInManualList(true, "www.example.com")); |
311 } | 224 } |
312 | 225 |
313 // Navigates to a URL which redirects to another URL, both in the whitelist. | 226 // Navigates to a URL which redirects to another URL, both in the whitelist. |
314 // No interstitial should be shown and the browser should navigate to the page. | 227 // No interstitial should be shown and the browser should navigate to the page. |
315 IN_PROC_BROWSER_TEST_F(ManagedModeBlockModeTest, | 228 IN_PROC_BROWSER_TEST_F(ManagedModeBlockModeTest, |
316 RedirectedURLsBothInWhitelist) { | 229 RedirectedURLsBothInWhitelist) { |
317 std::vector<std::string> url_list; | 230 std::vector<std::string> url_list; |
318 url_list.push_back("www.a.com"); | 231 url_list.push_back("www.a.com"); |
319 std::string last_url("www.example.com/files/simple.html"); | 232 std::string last_url("www.example.com/files/simple.html"); |
320 GURL test_url(GetRedirectURL(url_list, last_url)); | 233 GURL test_url(GetRedirectURL(url_list, last_url)); |
321 | 234 |
322 // Add both hostnames to the whitelist, should navigate without interstitial. | 235 // Add both hostnames to the whitelist, should navigate without interstitial. |
323 ListValue whitelist; | 236 ListValue whitelist; |
324 whitelist.AppendString("www.a.com"); | 237 whitelist.AppendString("www.a.com"); |
325 whitelist.AppendString("www.example.com"); | 238 whitelist.AppendString("www.example.com"); |
326 ManagedMode::AddToManualList(true, whitelist); | 239 managed_user_service_->AddToManualList(true, whitelist); |
327 | 240 |
328 ui_test_utils::NavigateToURL(browser(), test_url); | 241 ui_test_utils::NavigateToURL(browser(), test_url); |
329 | 242 |
330 WebContents* tab = chrome::GetActiveWebContents(browser()); | 243 WebContents* tab = chrome::GetActiveWebContents(browser()); |
331 | 244 |
332 CheckShownPageIsNotInterstitial(tab); | 245 CheckShownPageIsNotInterstitial(tab); |
333 | 246 |
334 EXPECT_TRUE(ManagedMode::IsInManualList(true, "www.a.com")); | 247 EXPECT_TRUE(managed_user_service_->IsInManualList(true, "www.a.com")); |
335 EXPECT_TRUE(ManagedMode::IsInManualList(true, "www.example.com")); | 248 EXPECT_TRUE(managed_user_service_->IsInManualList(true, "www.example.com")); |
336 } | 249 } |
337 | 250 |
338 // Only one URL is in the whitelist and the second not, so it should redirect, | 251 // Only one URL is in the whitelist and the second not, so it should redirect, |
339 // show an interstitial, then after clicking preview and clicking accept both | 252 // show an interstitial, then after clicking preview and clicking accept both |
340 // websites should be in the whitelist. | 253 // websites should be in the whitelist. |
341 IN_PROC_BROWSER_TEST_F(ManagedModeBlockModeTest, | 254 IN_PROC_BROWSER_TEST_F(ManagedModeBlockModeTest, |
342 RedirectedURLFirstInWhitelist) { | 255 RedirectedURLFirstInWhitelist) { |
343 std::vector<std::string> url_list; | 256 std::vector<std::string> url_list; |
344 url_list.push_back("www.a.com"); | 257 url_list.push_back("www.a.com"); |
345 std::string last_url("www.example.com/files/simple.html"); | 258 std::string last_url("www.example.com/files/simple.html"); |
346 GURL test_url(GetRedirectURL(url_list, last_url)); | 259 GURL test_url(GetRedirectURL(url_list, last_url)); |
347 | 260 |
348 // Add the first URL to the whitelist. | 261 // Add the first URL to the whitelist. |
349 ListValue whitelist; | 262 ListValue whitelist; |
350 whitelist.AppendString("www.a.com"); | 263 whitelist.AppendString("www.a.com"); |
351 ManagedMode::AddToManualList(true, whitelist); | 264 managed_user_service_->AddToManualList(true, whitelist); |
352 | 265 |
353 ui_test_utils::NavigateToURL(browser(), test_url); | 266 ui_test_utils::NavigateToURL(browser(), test_url); |
354 | 267 |
355 WebContents* tab = chrome::GetActiveWebContents(browser()); | 268 WebContents* tab = chrome::GetActiveWebContents(browser()); |
356 | 269 |
357 EXPECT_EQ(tab->GetURL().spec(), "http://" + last_url); | 270 EXPECT_EQ(tab->GetURL().spec(), "http://" + last_url); |
358 CheckShownPageIsInterstitial(tab); | 271 CheckShownPageIsInterstitial(tab); |
359 ActOnInterstitialAndInfobar(tab, INTERSTITIAL_PROCEED, INFOBAR_ACCEPT); | 272 ActOnInterstitialAndInfobar(tab, INTERSTITIAL_PROCEED, INFOBAR_ACCEPT); |
360 | 273 |
361 EXPECT_TRUE(ManagedMode::IsInManualList(true, "www.a.com")); | 274 EXPECT_TRUE(managed_user_service_->IsInManualList(true, "www.a.com")); |
362 EXPECT_TRUE(ManagedMode::IsInManualList(true, "www.example.com")); | 275 EXPECT_TRUE(managed_user_service_->IsInManualList(true, "www.example.com")); |
363 } | 276 } |
364 | 277 |
365 // This test navigates to a URL which is not in the whitelist but redirects to | 278 // This test navigates to a URL which is not in the whitelist but redirects to |
366 // one that is. The expected behavior is that the user will get an interstitial | 279 // one that is. The expected behavior is that the user will get an interstitial |
367 // and after clicking preview the user will see an infobar stating that the URL | 280 // and after clicking preview the user will see an infobar stating that the URL |
368 // was already in the whitelist (and the first URL gets added as well). | 281 // was already in the whitelist (and the first URL gets added as well). |
369 IN_PROC_BROWSER_TEST_F(ManagedModeBlockModeTest, | 282 IN_PROC_BROWSER_TEST_F(ManagedModeBlockModeTest, |
370 RedirectedURLLastInWhitelist) { | 283 RedirectedURLLastInWhitelist) { |
371 std::vector<std::string> url_list; | 284 std::vector<std::string> url_list; |
372 url_list.push_back("www.a.com"); | 285 url_list.push_back("www.a.com"); |
373 std::string last_url("www.example.com/files/simple.html"); | 286 std::string last_url("www.example.com/files/simple.html"); |
374 GURL test_url(GetRedirectURL(url_list, last_url)); | 287 GURL test_url(GetRedirectURL(url_list, last_url)); |
375 | 288 |
376 // Add the last URL to the whitelist. | 289 // Add the last URL to the whitelist. |
377 ListValue whitelist; | 290 ListValue whitelist; |
378 whitelist.AppendString("www.example.com"); | 291 whitelist.AppendString("www.example.com"); |
379 ManagedMode::AddToManualList(true, whitelist); | 292 managed_user_service_->AddToManualList(true, whitelist); |
380 | 293 |
381 ui_test_utils::NavigateToURL(browser(), test_url); | 294 ui_test_utils::NavigateToURL(browser(), test_url); |
382 | 295 |
383 WebContents* tab = chrome::GetActiveWebContents(browser()); | 296 WebContents* tab = chrome::GetActiveWebContents(browser()); |
384 | 297 |
385 EXPECT_EQ(tab->GetURL().host(), "www.a.com"); | 298 EXPECT_EQ(tab->GetURL().host(), "www.a.com"); |
386 CheckShownPageIsInterstitial(tab); | 299 CheckShownPageIsInterstitial(tab); |
387 ActOnInterstitialAndInfobar(tab, INTERSTITIAL_PROCEED, | 300 ActOnInterstitialAndInfobar(tab, INTERSTITIAL_PROCEED, |
388 INFOBAR_ALREADY_ADDED); | 301 INFOBAR_ALREADY_ADDED); |
389 | 302 |
390 EXPECT_TRUE(ManagedMode::IsInManualList(true, | 303 EXPECT_TRUE(managed_user_service_->IsInManualList( |
391 "http://.www.a.com/server-redirect")); | 304 true, "http://.www.a.com/server-redirect")); |
392 EXPECT_TRUE(ManagedMode::IsInManualList(true, "www.example.com")); | 305 EXPECT_TRUE(managed_user_service_->IsInManualList(true, "www.example.com")); |
393 } | 306 } |
394 | 307 |
395 // Tests whether going back after being shown an interstitial works. No | 308 // Tests whether going back after being shown an interstitial works. No |
396 // websites should be added to the whitelist. | 309 // websites should be added to the whitelist. |
397 IN_PROC_BROWSER_TEST_F(ManagedModeBlockModeTest, | 310 IN_PROC_BROWSER_TEST_F(ManagedModeBlockModeTest, |
398 SimpleURLNotInAnyListsGoBack) { | 311 SimpleURLNotInAnyListsGoBack) { |
399 GURL test_url("http://www.example.com/files/simple.html"); | 312 GURL test_url("http://www.example.com/files/simple.html"); |
400 ui_test_utils::NavigateToURL(browser(), test_url); | 313 ui_test_utils::NavigateToURL(browser(), test_url); |
401 | 314 |
402 WebContents* tab = chrome::GetActiveWebContents(browser()); | 315 WebContents* tab = chrome::GetActiveWebContents(browser()); |
403 | 316 |
404 CheckShownPageIsInterstitial(tab); | 317 CheckShownPageIsInterstitial(tab); |
405 ActOnInterstitialAndInfobar(tab, INTERSTITIAL_DONTPROCEED, | 318 ActOnInterstitialAndInfobar(tab, INTERSTITIAL_DONTPROCEED, |
406 INFOBAR_NOT_USED); | 319 INFOBAR_NOT_USED); |
407 | 320 |
408 EXPECT_EQ(tab->GetURL().spec(), "about:blank"); | 321 EXPECT_EQ(tab->GetURL().spec(), "about:blank"); |
409 | 322 |
410 EXPECT_FALSE(ManagedMode::IsInManualList(true, "www.example.com")); | 323 EXPECT_FALSE(managed_user_service_->IsInManualList(true, "www.example.com")); |
411 } | 324 } |
412 | 325 |
413 // Like SimpleURLNotInAnyLists just that it navigates to a page on the allowed | 326 // Like SimpleURLNotInAnyLists just that it navigates to a page on the allowed |
414 // domain after clicking allow on the infobar. The navigation should complete | 327 // domain after clicking allow on the infobar. The navigation should complete |
415 // and no interstitial should be shown the second time. | 328 // and no interstitial should be shown the second time. |
416 IN_PROC_BROWSER_TEST_F(ManagedModeBlockModeTest, | 329 IN_PROC_BROWSER_TEST_F(ManagedModeBlockModeTest, |
417 SimpleURLNotInAnyListsNavigateAgain) { | 330 SimpleURLNotInAnyListsNavigateAgain) { |
418 GURL test_url("http://www.example.com/files/simple.html"); | 331 GURL test_url("http://www.example.com/files/simple.html"); |
419 ui_test_utils::NavigateToURL(browser(), test_url); | 332 ui_test_utils::NavigateToURL(browser(), test_url); |
420 | 333 |
421 WebContents* tab = chrome::GetActiveWebContents(browser()); | 334 WebContents* tab = chrome::GetActiveWebContents(browser()); |
422 | 335 |
423 CheckShownPageIsInterstitial(tab); | 336 CheckShownPageIsInterstitial(tab); |
424 ActOnInterstitialAndInfobar(tab, INTERSTITIAL_PROCEED, INFOBAR_ACCEPT); | 337 ActOnInterstitialAndInfobar(tab, INTERSTITIAL_PROCEED, INFOBAR_ACCEPT); |
425 | 338 |
426 EXPECT_TRUE(ManagedMode::IsInManualList(true, "www.example.com")); | 339 EXPECT_TRUE(managed_user_service_->IsInManualList(true, "www.example.com")); |
427 | 340 |
428 // Navigate to a different page on the same host. | 341 // Navigate to a different page on the same host. |
429 test_url = GURL("http://www.example.com/files/english_page.html"); | 342 test_url = GURL("http://www.example.com/files/english_page.html"); |
430 ui_test_utils::NavigateToURL(browser(), test_url); | 343 ui_test_utils::NavigateToURL(browser(), test_url); |
431 | 344 |
432 // An interstitial should not show up. | 345 // An interstitial should not show up. |
433 CheckShownPageIsNotInterstitial(tab); | 346 CheckShownPageIsNotInterstitial(tab); |
434 CheckNumberOfInfobars(0); | 347 CheckNumberOfInfobars(0); |
435 } | 348 } |
436 | 349 |
437 // Same as above just that it reloads the page instead of navigating to another | 350 // Same as above just that it reloads the page instead of navigating to another |
438 // page on the website. Same expected behavior. | 351 // page on the website. Same expected behavior. |
439 IN_PROC_BROWSER_TEST_F(ManagedModeBlockModeTest, | 352 IN_PROC_BROWSER_TEST_F(ManagedModeBlockModeTest, |
440 SimpleURLNotInAnyListsReloadPageAfterAdd) { | 353 SimpleURLNotInAnyListsReloadPageAfterAdd) { |
441 GURL test_url("http://www.example.com/files/simple.html"); | 354 GURL test_url("http://www.example.com/files/simple.html"); |
442 ui_test_utils::NavigateToURL(browser(), test_url); | 355 ui_test_utils::NavigateToURL(browser(), test_url); |
443 | 356 |
444 WebContents* tab = chrome::GetActiveWebContents(browser()); | 357 WebContents* tab = chrome::GetActiveWebContents(browser()); |
445 | 358 |
446 CheckShownPageIsInterstitial(tab); | 359 CheckShownPageIsInterstitial(tab); |
447 ActOnInterstitialAndInfobar(tab, INTERSTITIAL_PROCEED, INFOBAR_ACCEPT); | 360 ActOnInterstitialAndInfobar(tab, INTERSTITIAL_PROCEED, INFOBAR_ACCEPT); |
448 | 361 |
449 EXPECT_TRUE(ManagedMode::IsInManualList(true, "www.example.com")); | 362 EXPECT_TRUE(managed_user_service_->IsInManualList(true, "www.example.com")); |
450 | 363 |
451 // Reload the page | 364 // Reload the page |
452 tab->GetController().Reload(false); | 365 tab->GetController().Reload(false); |
453 | 366 |
454 // Expect that the page shows up and not an interstitial. | 367 // Expect that the page shows up and not an interstitial. |
455 CheckShownPageIsNotInterstitial(tab); | 368 CheckShownPageIsNotInterstitial(tab); |
456 CheckNumberOfInfobars(0); | 369 CheckNumberOfInfobars(0); |
457 EXPECT_EQ(tab->GetURL().spec(), test_url.spec()); | 370 EXPECT_EQ(tab->GetURL().spec(), test_url.spec()); |
458 } | 371 } |
459 | 372 |
460 // Navigates to an HTTPS page not in any lists, similar to the simple test but | 373 // Navigates to an HTTPS page not in any lists, similar to the simple test but |
461 // over HTTPS (expected behavior is that only the HTTPS version of the site | 374 // over HTTPS (expected behavior is that only the HTTPS version of the site |
462 // gets whitelisted, compared to the simple case where all protocols get | 375 // gets whitelisted, compared to the simple case where all protocols get |
463 // whitelisted). | 376 // whitelisted). |
464 IN_PROC_BROWSER_TEST_F(ManagedModeBlockModeTest, | 377 IN_PROC_BROWSER_TEST_F(ManagedModeBlockModeTest, |
465 SimpleHTTPSURLNotInAnyLists) { | 378 SimpleHTTPSURLNotInAnyLists) { |
466 // Navigate to an HTTPS URL. | 379 // Navigate to an HTTPS URL. |
467 GURL test_url("https://www.example.com/files/simple.html"); | 380 GURL test_url("https://www.example.com/files/simple.html"); |
468 ui_test_utils::NavigateToURL(browser(), test_url); | 381 ui_test_utils::NavigateToURL(browser(), test_url); |
469 | 382 |
470 WebContents* tab = chrome::GetActiveWebContents(browser()); | 383 WebContents* tab = chrome::GetActiveWebContents(browser()); |
471 | 384 |
472 CheckShownPageIsInterstitial(tab); | 385 CheckShownPageIsInterstitial(tab); |
473 ActOnInterstitialAndInfobar(tab, INTERSTITIAL_PROCEED, INFOBAR_ACCEPT); | 386 ActOnInterstitialAndInfobar(tab, INTERSTITIAL_PROCEED, INFOBAR_ACCEPT); |
474 | 387 |
475 // Check that the https:// version is added in the whitelist. | 388 // Check that the https:// version is added in the whitelist. |
476 EXPECT_TRUE(ManagedMode::IsInManualList(true, "https://www.example.com")); | 389 EXPECT_TRUE(managed_user_service_->IsInManualList(true, "https://www.example.c
om")); |
477 } | 390 } |
478 | 391 |
479 // The test navigates to a page, the interstitial is shown and preview is | 392 // The test navigates to a page, the interstitial is shown and preview is |
480 // clicked but then the test navigates to other pages on the same domain before | 393 // clicked but then the test navigates to other pages on the same domain before |
481 // clicking allow on the page. The "allow" infobar should still be there during | 394 // clicking allow on the page. The "allow" infobar should still be there during |
482 // this time and the navigation should be allowed. When the test finally clicks | 395 // this time and the navigation should be allowed. When the test finally clicks |
483 // accept the webpage should be whitelisted. | 396 // accept the webpage should be whitelisted. |
484 IN_PROC_BROWSER_TEST_F(ManagedModeBlockModeTest, | 397 IN_PROC_BROWSER_TEST_F(ManagedModeBlockModeTest, |
485 SimpleURLNotInAnyListNavigateAround) { | 398 SimpleURLNotInAnyListNavigateAround) { |
486 GURL test_url("http://www.example.com/files/simple.html"); | 399 GURL test_url("http://www.example.com/files/simple.html"); |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
531 content::WindowedNotificationObserver infobar_removed( | 444 content::WindowedNotificationObserver infobar_removed( |
532 chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_REMOVED, | 445 chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_REMOVED, |
533 content::NotificationService::AllSources()); | 446 content::NotificationService::AllSources()); |
534 | 447 |
535 // Finally accept the infobar and see that it is gone. | 448 // Finally accept the infobar and see that it is gone. |
536 confirm_info_bar_delegate->Accept(); | 449 confirm_info_bar_delegate->Accept(); |
537 infobar_removed.Wait(); | 450 infobar_removed.Wait(); |
538 | 451 |
539 CheckNumberOfInfobars(0); | 452 CheckNumberOfInfobars(0); |
540 | 453 |
541 EXPECT_TRUE(ManagedMode::IsInManualList(true, "www.example.com")); | 454 EXPECT_TRUE(managed_user_service_->IsInManualList(true, "www.example.com")); |
542 } | 455 } |
543 | 456 |
544 // The test navigates to a page, the interstitial is shown and preview is | 457 // The test navigates to a page, the interstitial is shown and preview is |
545 // clicked but then the test navigates to a page on a different host, which | 458 // clicked but then the test navigates to a page on a different host, which |
546 // should trigger an interstitial again. Clicking preview on this interstitial | 459 // should trigger an interstitial again. Clicking preview on this interstitial |
547 // and accepting it should add the second website to the whitelist and not the | 460 // and accepting it should add the second website to the whitelist and not the |
548 // first one. | 461 // first one. |
549 IN_PROC_BROWSER_TEST_F(ManagedModeBlockModeTest, | 462 IN_PROC_BROWSER_TEST_F(ManagedModeBlockModeTest, |
550 NavigateDifferentHostAfterPreview) { | 463 NavigateDifferentHostAfterPreview) { |
551 GURL test_url("http://www.example.com/files/simple.html"); | 464 GURL test_url("http://www.example.com/files/simple.html"); |
(...skipping 24 matching lines...) Expand all Loading... |
576 | 489 |
577 // Navigate to another URL on a different host. | 490 // Navigate to another URL on a different host. |
578 test_url = GURL("http://www.new-example.com/files/simple.html"); | 491 test_url = GURL("http://www.new-example.com/files/simple.html"); |
579 ui_test_utils::NavigateToURL(browser(), test_url); | 492 ui_test_utils::NavigateToURL(browser(), test_url); |
580 | 493 |
581 CheckShownPageIsInterstitial(tab); | 494 CheckShownPageIsInterstitial(tab); |
582 CheckNumberOfInfobars(0); | 495 CheckNumberOfInfobars(0); |
583 | 496 |
584 ActOnInterstitialAndInfobar(tab, INTERSTITIAL_PROCEED, INFOBAR_ACCEPT); | 497 ActOnInterstitialAndInfobar(tab, INTERSTITIAL_PROCEED, INFOBAR_ACCEPT); |
585 | 498 |
586 EXPECT_FALSE(ManagedMode::IsInManualList(true, "www.example.com")); | 499 EXPECT_FALSE(managed_user_service_->IsInManualList(true, "www.example.com")); |
587 EXPECT_TRUE(ManagedMode::IsInManualList(true, "www.new-example.com")); | 500 EXPECT_TRUE(managed_user_service_->IsInManualList(true, |
| 501 "www.new-example.com")); |
588 } | 502 } |
OLD | NEW |