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

Side by Side Diff: chrome/browser/managed_mode/managed_mode_browsertest.cc

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

Powered by Google App Engine
This is Rietveld 408576698