OLD | NEW |
---|---|
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 <list> | 5 #include <list> |
6 | 6 |
7 #include "base/prefs/pref_service.h" | 7 #include "base/prefs/pref_service.h" |
8 #include "base/run_loop.h" | 8 #include "base/run_loop.h" |
9 #include "chrome/browser/profiles/profile.h" | 9 #include "chrome/browser/profiles/profile.h" |
10 #include "chrome/browser/safe_browsing/malware_details.h" | 10 #include "chrome/browser/safe_browsing/malware_details.h" |
(...skipping 15 matching lines...) Expand all Loading... | |
26 | 26 |
27 static const char* kGoogleURL = "http://www.google.com/"; | 27 static const char* kGoogleURL = "http://www.google.com/"; |
28 static const char* kGoodURL = "http://www.goodguys.com/"; | 28 static const char* kGoodURL = "http://www.goodguys.com/"; |
29 static const char* kBadURL = "http://www.badguys.com/"; | 29 static const char* kBadURL = "http://www.badguys.com/"; |
30 static const char* kBadURL2 = "http://www.badguys2.com/"; | 30 static const char* kBadURL2 = "http://www.badguys2.com/"; |
31 static const char* kBadURL3 = "http://www.badguys3.com/"; | 31 static const char* kBadURL3 = "http://www.badguys3.com/"; |
32 | 32 |
33 namespace { | 33 namespace { |
34 | 34 |
35 // A SafeBrowingBlockingPage class that does not create windows. | 35 // A SafeBrowingBlockingPage class that does not create windows. |
36 class TestSafeBrowsingBlockingPageV2 : public SafeBrowsingBlockingPageV2 { | |
37 public: | |
38 TestSafeBrowsingBlockingPageV2(SafeBrowsingUIManager* manager, | |
39 WebContents* web_contents, | |
40 const UnsafeResourceList& unsafe_resources) | |
41 : SafeBrowsingBlockingPageV2(manager, web_contents, unsafe_resources) { | |
42 // Don't delay details at all for the unittest. | |
43 malware_details_proceed_delay_ms_ = 0; | |
44 | |
45 // Don't create a view. | |
46 interstitial_page()->DontCreateViewForTesting(); | |
47 } | |
48 }; | |
49 | |
50 // A SafeBrowingBlockingPage class that does not create windows. | |
51 class TestSafeBrowsingBlockingPageV3 : public SafeBrowsingBlockingPageV3 { | 36 class TestSafeBrowsingBlockingPageV3 : public SafeBrowsingBlockingPageV3 { |
Dan Beam
2014/08/07 03:39:53
why isn't this V3 removed?
felt
2014/08/07 14:07:26
You mean, rename to TestSafeBrowsingBlockingPage?
| |
52 public: | 37 public: |
53 TestSafeBrowsingBlockingPageV3(SafeBrowsingUIManager* manager, | 38 TestSafeBrowsingBlockingPageV3(SafeBrowsingUIManager* manager, |
54 WebContents* web_contents, | 39 WebContents* web_contents, |
55 const UnsafeResourceList& unsafe_resources) | 40 const UnsafeResourceList& unsafe_resources) |
56 : SafeBrowsingBlockingPageV3(manager, web_contents, unsafe_resources) { | 41 : SafeBrowsingBlockingPageV3(manager, web_contents, unsafe_resources) { |
57 // Don't delay details at all for the unittest. | 42 // Don't delay details at all for the unittest. |
58 malware_details_proceed_delay_ms_ = 0; | 43 malware_details_proceed_delay_ms_ = 0; |
59 | 44 |
60 // Don't create a view. | 45 // Don't create a view. |
61 interstitial_page()->DontCreateViewForTesting(); | 46 interstitial_page()->DontCreateViewForTesting(); |
(...skipping 14 matching lines...) Expand all Loading... | |
76 std::list<std::string>* GetDetails() { | 61 std::list<std::string>* GetDetails() { |
77 return &details_; | 62 return &details_; |
78 } | 63 } |
79 | 64 |
80 private: | 65 private: |
81 virtual ~TestSafeBrowsingUIManager() {} | 66 virtual ~TestSafeBrowsingUIManager() {} |
82 | 67 |
83 std::list<std::string> details_; | 68 std::list<std::string> details_; |
84 }; | 69 }; |
85 | 70 |
86 template <class SBInterstitialPage> | |
87 class TestSafeBrowsingBlockingPageFactory | 71 class TestSafeBrowsingBlockingPageFactory |
88 : public SafeBrowsingBlockingPageFactory { | 72 : public SafeBrowsingBlockingPageFactory { |
89 public: | 73 public: |
90 TestSafeBrowsingBlockingPageFactory() { } | 74 TestSafeBrowsingBlockingPageFactory() { } |
91 virtual ~TestSafeBrowsingBlockingPageFactory() { } | 75 virtual ~TestSafeBrowsingBlockingPageFactory() { } |
92 | 76 |
93 virtual SafeBrowsingBlockingPage* CreateSafeBrowsingPage( | 77 virtual SafeBrowsingBlockingPage* CreateSafeBrowsingPage( |
94 SafeBrowsingUIManager* manager, | 78 SafeBrowsingUIManager* manager, |
95 WebContents* web_contents, | 79 WebContents* web_contents, |
96 const SafeBrowsingBlockingPage::UnsafeResourceList& unsafe_resources) | 80 const SafeBrowsingBlockingPage::UnsafeResourceList& unsafe_resources) |
97 OVERRIDE { | 81 OVERRIDE { |
98 // The V2 version doesn't handle multiple threats. | |
99 if (unsafe_resources.size() == 1 && | |
100 (unsafe_resources[0].threat_type == SB_THREAT_TYPE_URL_MALWARE || | |
101 unsafe_resources[0].threat_type == SB_THREAT_TYPE_URL_PHISHING)) { | |
102 return new SBInterstitialPage(manager, web_contents, unsafe_resources); | |
103 } | |
104 return new TestSafeBrowsingBlockingPageV3(manager, web_contents, | 82 return new TestSafeBrowsingBlockingPageV3(manager, web_contents, |
105 unsafe_resources); | 83 unsafe_resources); |
106 } | 84 } |
107 }; | 85 }; |
108 | 86 |
109 } // namespace | 87 } // namespace |
110 | 88 |
111 template <class SBInterstitialPage> | |
112 class SafeBrowsingBlockingPageTest : public ChromeRenderViewHostTestHarness { | 89 class SafeBrowsingBlockingPageTest : public ChromeRenderViewHostTestHarness { |
113 public: | 90 public: |
114 // The decision the user made. | 91 // The decision the user made. |
115 enum UserResponse { | 92 enum UserResponse { |
116 PENDING, | 93 PENDING, |
117 OK, | 94 OK, |
118 CANCEL | 95 CANCEL |
119 }; | 96 }; |
120 | 97 |
121 SafeBrowsingBlockingPageTest() { | 98 SafeBrowsingBlockingPageTest() { |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
224 resource->url = url; | 201 resource->url = url; |
225 resource->is_subresource = is_subresource; | 202 resource->is_subresource = is_subresource; |
226 resource->threat_type = SB_THREAT_TYPE_URL_MALWARE; | 203 resource->threat_type = SB_THREAT_TYPE_URL_MALWARE; |
227 resource->render_process_host_id = | 204 resource->render_process_host_id = |
228 web_contents()->GetRenderProcessHost()->GetID(); | 205 web_contents()->GetRenderProcessHost()->GetID(); |
229 resource->render_view_id = | 206 resource->render_view_id = |
230 web_contents()->GetRenderViewHost()->GetRoutingID(); | 207 web_contents()->GetRenderViewHost()->GetRoutingID(); |
231 } | 208 } |
232 | 209 |
233 UserResponse user_response_; | 210 UserResponse user_response_; |
234 TestSafeBrowsingBlockingPageFactory<SBInterstitialPage> factory_; | 211 TestSafeBrowsingBlockingPageFactory factory_; |
235 }; | 212 }; |
236 | 213 |
237 typedef ::testing::Types<TestSafeBrowsingBlockingPageV2, | |
238 TestSafeBrowsingBlockingPageV3> InterstitialTestTypes; | |
239 TYPED_TEST_CASE(SafeBrowsingBlockingPageTest, InterstitialTestTypes); | |
240 | 214 |
241 // Tests showing a blocking page for a malware page and not proceeding. | 215 // Tests showing a blocking page for a malware page and not proceeding. |
242 TYPED_TEST(SafeBrowsingBlockingPageTest, MalwarePageDontProceed) { | 216 TEST_F(SafeBrowsingBlockingPageTest, MalwarePageDontProceed) { |
243 // Enable malware details. | 217 // Enable malware details. |
244 Profile* profile = Profile::FromBrowserContext( | 218 Profile* profile = Profile::FromBrowserContext( |
245 this->web_contents()->GetBrowserContext()); | 219 web_contents()->GetBrowserContext()); |
246 profile->GetPrefs()->SetBoolean( | 220 profile->GetPrefs()->SetBoolean( |
247 prefs::kSafeBrowsingExtendedReportingEnabled, true); | 221 prefs::kSafeBrowsingExtendedReportingEnabled, true); |
248 | 222 |
249 // Start a load. | 223 // Start a load. |
250 this->controller().LoadURL(GURL(kBadURL), content::Referrer(), | 224 controller().LoadURL(GURL(kBadURL), content::Referrer(), |
251 content::PAGE_TRANSITION_TYPED, std::string()); | 225 content::PAGE_TRANSITION_TYPED, std::string()); |
252 | 226 |
253 | 227 |
254 // Simulate the load causing a safe browsing interstitial to be shown. | 228 // Simulate the load causing a safe browsing interstitial to be shown. |
255 this->ShowInterstitial(false, kBadURL); | 229 ShowInterstitial(false, kBadURL); |
256 SafeBrowsingBlockingPage* sb_interstitial = | 230 SafeBrowsingBlockingPage* sb_interstitial = |
257 this->GetSafeBrowsingBlockingPage(); | 231 GetSafeBrowsingBlockingPage(); |
258 ASSERT_TRUE(sb_interstitial); | 232 ASSERT_TRUE(sb_interstitial); |
259 | 233 |
260 base::RunLoop().RunUntilIdle(); | 234 base::RunLoop().RunUntilIdle(); |
261 | 235 |
262 // Simulate the user clicking "don't proceed". | 236 // Simulate the user clicking "don't proceed". |
263 this->DontProceedThroughInterstitial(sb_interstitial); | 237 DontProceedThroughInterstitial(sb_interstitial); |
264 | 238 |
265 // The interstitial should be gone. | 239 // The interstitial should be gone. |
266 EXPECT_EQ(this->CANCEL, this->user_response()); | 240 EXPECT_EQ(CANCEL, user_response()); |
267 EXPECT_FALSE(this->GetSafeBrowsingBlockingPage()); | 241 EXPECT_FALSE(GetSafeBrowsingBlockingPage()); |
268 | 242 |
269 // We did not proceed, the pending entry should be gone. | 243 // We did not proceed, the pending entry should be gone. |
270 EXPECT_FALSE(this->controller().GetPendingEntry()); | 244 EXPECT_FALSE(controller().GetPendingEntry()); |
271 | 245 |
272 // A report should have been sent. | 246 // A report should have been sent. |
273 EXPECT_EQ(1u, this->ui_manager_->GetDetails()->size()); | 247 EXPECT_EQ(1u, ui_manager_->GetDetails()->size()); |
274 this->ui_manager_->GetDetails()->clear(); | 248 ui_manager_->GetDetails()->clear(); |
275 } | 249 } |
276 | 250 |
277 // Tests showing a blocking page for a malware page and then proceeding. | 251 // Tests showing a blocking page for a malware page and then proceeding. |
278 TYPED_TEST(SafeBrowsingBlockingPageTest, MalwarePageProceed) { | 252 TEST_F(SafeBrowsingBlockingPageTest, MalwarePageProceed) { |
279 // Enable malware reports. | 253 // Enable malware reports. |
280 Profile* profile = Profile::FromBrowserContext( | 254 Profile* profile = Profile::FromBrowserContext( |
281 this->web_contents()->GetBrowserContext()); | 255 web_contents()->GetBrowserContext()); |
282 profile->GetPrefs()->SetBoolean( | 256 profile->GetPrefs()->SetBoolean( |
283 prefs::kSafeBrowsingExtendedReportingEnabled, true); | 257 prefs::kSafeBrowsingExtendedReportingEnabled, true); |
284 | 258 |
285 // Start a load. | 259 // Start a load. |
286 this->controller().LoadURL(GURL(kBadURL), content::Referrer(), | 260 controller().LoadURL(GURL(kBadURL), content::Referrer(), |
287 content::PAGE_TRANSITION_TYPED, std::string()); | 261 content::PAGE_TRANSITION_TYPED, std::string()); |
288 | 262 |
289 // Simulate the load causing a safe browsing interstitial to be shown. | 263 // Simulate the load causing a safe browsing interstitial to be shown. |
290 this->ShowInterstitial(false, kBadURL); | 264 ShowInterstitial(false, kBadURL); |
291 SafeBrowsingBlockingPage* sb_interstitial = | 265 SafeBrowsingBlockingPage* sb_interstitial = |
292 this->GetSafeBrowsingBlockingPage(); | 266 GetSafeBrowsingBlockingPage(); |
293 ASSERT_TRUE(sb_interstitial); | 267 ASSERT_TRUE(sb_interstitial); |
294 | 268 |
295 // Simulate the user clicking "proceed". | 269 // Simulate the user clicking "proceed". |
296 this->ProceedThroughInterstitial(sb_interstitial); | 270 ProceedThroughInterstitial(sb_interstitial); |
297 | 271 |
298 // The interstitial is shown until the navigation commits. | 272 // The interstitial is shown until the navigation commits. |
299 ASSERT_TRUE(InterstitialPage::GetInterstitialPage(this->web_contents())); | 273 ASSERT_TRUE(InterstitialPage::GetInterstitialPage(web_contents())); |
300 // Commit the navigation. | 274 // Commit the navigation. |
301 this->Navigate(kBadURL, 1); | 275 Navigate(kBadURL, 1); |
302 // The interstitial should be gone now. | 276 // The interstitial should be gone now. |
303 ASSERT_FALSE(InterstitialPage::GetInterstitialPage(this->web_contents())); | 277 ASSERT_FALSE(InterstitialPage::GetInterstitialPage(web_contents())); |
304 | 278 |
305 // A report should have been sent. | 279 // A report should have been sent. |
306 EXPECT_EQ(1u, this->ui_manager_->GetDetails()->size()); | 280 EXPECT_EQ(1u, ui_manager_->GetDetails()->size()); |
307 this->ui_manager_->GetDetails()->clear(); | 281 ui_manager_->GetDetails()->clear(); |
308 } | 282 } |
309 | 283 |
310 // Tests showing a blocking page for a page that contains malware subresources | 284 // Tests showing a blocking page for a page that contains malware subresources |
311 // and not proceeding. | 285 // and not proceeding. |
312 TYPED_TEST(SafeBrowsingBlockingPageTest, PageWithMalwareResourceDontProceed) { | 286 TEST_F(SafeBrowsingBlockingPageTest, PageWithMalwareResourceDontProceed) { |
313 // Enable malware reports. | 287 // Enable malware reports. |
314 Profile* profile = Profile::FromBrowserContext( | 288 Profile* profile = Profile::FromBrowserContext( |
315 this->web_contents()->GetBrowserContext()); | 289 web_contents()->GetBrowserContext()); |
316 profile->GetPrefs()->SetBoolean( | 290 profile->GetPrefs()->SetBoolean( |
317 prefs::kSafeBrowsingExtendedReportingEnabled, true); | 291 prefs::kSafeBrowsingExtendedReportingEnabled, true); |
318 | 292 |
319 // Navigate somewhere. | 293 // Navigate somewhere. |
320 this->Navigate(kGoogleURL, 1); | 294 Navigate(kGoogleURL, 1); |
321 | 295 |
322 // Navigate somewhere else. | 296 // Navigate somewhere else. |
323 this->Navigate(kGoodURL, 2); | 297 Navigate(kGoodURL, 2); |
324 | 298 |
325 // Simulate that page loading a bad-resource triggering an interstitial. | 299 // Simulate that page loading a bad-resource triggering an interstitial. |
326 this->ShowInterstitial(true, kBadURL); | 300 ShowInterstitial(true, kBadURL); |
327 | 301 |
328 SafeBrowsingBlockingPage* sb_interstitial = | 302 SafeBrowsingBlockingPage* sb_interstitial = |
329 this->GetSafeBrowsingBlockingPage(); | 303 GetSafeBrowsingBlockingPage(); |
330 ASSERT_TRUE(sb_interstitial); | 304 ASSERT_TRUE(sb_interstitial); |
331 | 305 |
332 // Simulate the user clicking "don't proceed". | 306 // Simulate the user clicking "don't proceed". |
333 this->DontProceedThroughSubresourceInterstitial(sb_interstitial); | 307 DontProceedThroughSubresourceInterstitial(sb_interstitial); |
334 EXPECT_EQ(this->CANCEL, this->user_response()); | 308 EXPECT_EQ(CANCEL, user_response()); |
335 EXPECT_FALSE(this->GetSafeBrowsingBlockingPage()); | 309 EXPECT_FALSE(GetSafeBrowsingBlockingPage()); |
336 | 310 |
337 // We did not proceed, we should be back to the first page, the 2nd one should | 311 // We did not proceed, we should be back to the first page, the 2nd one should |
338 // have been removed from the navigation controller. | 312 // have been removed from the navigation controller. |
339 ASSERT_EQ(1, this->controller().GetEntryCount()); | 313 ASSERT_EQ(1, controller().GetEntryCount()); |
340 EXPECT_EQ(kGoogleURL, this->controller().GetActiveEntry()->GetURL().spec()); | 314 EXPECT_EQ(kGoogleURL, controller().GetActiveEntry()->GetURL().spec()); |
341 | 315 |
342 // A report should have been sent. | 316 // A report should have been sent. |
343 EXPECT_EQ(1u, this->ui_manager_->GetDetails()->size()); | 317 EXPECT_EQ(1u, ui_manager_->GetDetails()->size()); |
344 this->ui_manager_->GetDetails()->clear(); | 318 ui_manager_->GetDetails()->clear(); |
345 } | 319 } |
346 | 320 |
347 // Tests showing a blocking page for a page that contains malware subresources | 321 // Tests showing a blocking page for a page that contains malware subresources |
348 // and proceeding. | 322 // and proceeding. |
349 TYPED_TEST(SafeBrowsingBlockingPageTest, PageWithMalwareResourceProceed) { | 323 TEST_F(SafeBrowsingBlockingPageTest, PageWithMalwareResourceProceed) { |
350 // Enable malware reports. | 324 // Enable malware reports. |
351 Profile* profile = Profile::FromBrowserContext( | 325 Profile* profile = Profile::FromBrowserContext( |
352 this->web_contents()->GetBrowserContext()); | 326 web_contents()->GetBrowserContext()); |
353 profile->GetPrefs()->SetBoolean( | 327 profile->GetPrefs()->SetBoolean( |
354 prefs::kSafeBrowsingExtendedReportingEnabled, true); | 328 prefs::kSafeBrowsingExtendedReportingEnabled, true); |
355 | 329 |
356 // Navigate somewhere. | 330 // Navigate somewhere. |
357 this->Navigate(kGoodURL, 1); | 331 Navigate(kGoodURL, 1); |
358 | 332 |
359 // Simulate that page loading a bad-resource triggering an interstitial. | 333 // Simulate that page loading a bad-resource triggering an interstitial. |
360 this->ShowInterstitial(true, kBadURL); | 334 ShowInterstitial(true, kBadURL); |
361 | 335 |
362 SafeBrowsingBlockingPage* sb_interstitial = | 336 SafeBrowsingBlockingPage* sb_interstitial = |
363 this->GetSafeBrowsingBlockingPage(); | 337 GetSafeBrowsingBlockingPage(); |
364 ASSERT_TRUE(sb_interstitial); | 338 ASSERT_TRUE(sb_interstitial); |
365 | 339 |
366 // Simulate the user clicking "proceed". | 340 // Simulate the user clicking "proceed". |
367 this->ProceedThroughInterstitial(sb_interstitial); | 341 ProceedThroughInterstitial(sb_interstitial); |
368 EXPECT_EQ(this->OK, this->user_response()); | 342 EXPECT_EQ(OK, user_response()); |
369 EXPECT_FALSE(this->GetSafeBrowsingBlockingPage()); | 343 EXPECT_FALSE(GetSafeBrowsingBlockingPage()); |
370 | 344 |
371 // We did proceed, we should be back to showing the page. | 345 // We did proceed, we should be back to showing the page. |
372 ASSERT_EQ(1, this->controller().GetEntryCount()); | 346 ASSERT_EQ(1, controller().GetEntryCount()); |
373 EXPECT_EQ(kGoodURL, this->controller().GetActiveEntry()->GetURL().spec()); | 347 EXPECT_EQ(kGoodURL, controller().GetActiveEntry()->GetURL().spec()); |
374 | 348 |
375 // A report should have been sent. | 349 // A report should have been sent. |
376 EXPECT_EQ(1u, this->ui_manager_->GetDetails()->size()); | 350 EXPECT_EQ(1u, ui_manager_->GetDetails()->size()); |
377 this->ui_manager_->GetDetails()->clear(); | 351 ui_manager_->GetDetails()->clear(); |
378 } | 352 } |
379 | 353 |
380 // Tests showing a blocking page for a page that contains multiple malware | 354 // Tests showing a blocking page for a page that contains multiple malware |
381 // subresources and not proceeding. This just tests that the extra malware | 355 // subresources and not proceeding. This just tests that the extra malware |
382 // subresources (which trigger queued interstitial pages) do not break anything. | 356 // subresources (which trigger queued interstitial pages) do not break anything. |
383 TYPED_TEST(SafeBrowsingBlockingPageTest, | 357 TEST_F(SafeBrowsingBlockingPageTest, |
384 PageWithMultipleMalwareResourceDontProceed) { | 358 PageWithMultipleMalwareResourceDontProceed) { |
385 // Enable malware reports. | 359 // Enable malware reports. |
386 Profile* profile = Profile::FromBrowserContext( | 360 Profile* profile = Profile::FromBrowserContext( |
387 this->web_contents()->GetBrowserContext()); | 361 web_contents()->GetBrowserContext()); |
388 profile->GetPrefs()->SetBoolean( | 362 profile->GetPrefs()->SetBoolean( |
389 prefs::kSafeBrowsingExtendedReportingEnabled, true); | 363 prefs::kSafeBrowsingExtendedReportingEnabled, true); |
390 | 364 |
391 // Navigate somewhere. | 365 // Navigate somewhere. |
392 this->Navigate(kGoogleURL, 1); | 366 Navigate(kGoogleURL, 1); |
393 | 367 |
394 // Navigate somewhere else. | 368 // Navigate somewhere else. |
395 this->Navigate(kGoodURL, 2); | 369 Navigate(kGoodURL, 2); |
396 | 370 |
397 // Simulate that page loading a bad-resource triggering an interstitial. | 371 // Simulate that page loading a bad-resource triggering an interstitial. |
398 this->ShowInterstitial(true, kBadURL); | 372 ShowInterstitial(true, kBadURL); |
399 | 373 |
400 // More bad resources loading causing more interstitials. The new | 374 // More bad resources loading causing more interstitials. The new |
401 // interstitials should be queued. | 375 // interstitials should be queued. |
402 this->ShowInterstitial(true, kBadURL2); | 376 ShowInterstitial(true, kBadURL2); |
403 this->ShowInterstitial(true, kBadURL3); | 377 ShowInterstitial(true, kBadURL3); |
404 | 378 |
405 SafeBrowsingBlockingPage* sb_interstitial = | 379 SafeBrowsingBlockingPage* sb_interstitial = |
406 this->GetSafeBrowsingBlockingPage(); | 380 GetSafeBrowsingBlockingPage(); |
407 ASSERT_TRUE(sb_interstitial); | 381 ASSERT_TRUE(sb_interstitial); |
408 | 382 |
409 // Simulate the user clicking "don't proceed". | 383 // Simulate the user clicking "don't proceed". |
410 this->DontProceedThroughSubresourceInterstitial(sb_interstitial); | 384 DontProceedThroughSubresourceInterstitial(sb_interstitial); |
411 EXPECT_EQ(this->CANCEL, this->user_response()); | 385 EXPECT_EQ(CANCEL, user_response()); |
412 EXPECT_FALSE(this->GetSafeBrowsingBlockingPage()); | 386 EXPECT_FALSE(GetSafeBrowsingBlockingPage()); |
413 | 387 |
414 // We did not proceed, we should be back to the first page, the 2nd one should | 388 // We did not proceed, we should be back to the first page, the 2nd one should |
415 // have been removed from the navigation controller. | 389 // have been removed from the navigation controller. |
416 ASSERT_EQ(1, this->controller().GetEntryCount()); | 390 ASSERT_EQ(1, controller().GetEntryCount()); |
417 EXPECT_EQ(kGoogleURL, this->controller().GetActiveEntry()->GetURL().spec()); | 391 EXPECT_EQ(kGoogleURL, controller().GetActiveEntry()->GetURL().spec()); |
418 | 392 |
419 // A report should have been sent. | 393 // A report should have been sent. |
420 EXPECT_EQ(1u, this->ui_manager_->GetDetails()->size()); | 394 EXPECT_EQ(1u, ui_manager_->GetDetails()->size()); |
421 this->ui_manager_->GetDetails()->clear(); | 395 ui_manager_->GetDetails()->clear(); |
422 } | 396 } |
423 | 397 |
424 // Tests showing a blocking page for a page that contains multiple malware | 398 // Tests showing a blocking page for a page that contains multiple malware |
425 // subresources and proceeding through the first interstitial, but not the next. | 399 // subresources and proceeding through the first interstitial, but not the next. |
426 TYPED_TEST(SafeBrowsingBlockingPageTest, | 400 TEST_F(SafeBrowsingBlockingPageTest, |
427 PageWithMultipleMalwareResourceProceedThenDontProceed) { | 401 PageWithMultipleMalwareResourceProceedThenDontProceed) { |
428 // Enable malware reports. | 402 // Enable malware reports. |
429 Profile* profile = Profile::FromBrowserContext( | 403 Profile* profile = Profile::FromBrowserContext( |
430 this->web_contents()->GetBrowserContext()); | 404 web_contents()->GetBrowserContext()); |
431 profile->GetPrefs()->SetBoolean( | 405 profile->GetPrefs()->SetBoolean( |
432 prefs::kSafeBrowsingExtendedReportingEnabled, true); | 406 prefs::kSafeBrowsingExtendedReportingEnabled, true); |
433 | 407 |
434 // Navigate somewhere. | 408 // Navigate somewhere. |
435 this->Navigate(kGoogleURL, 1); | 409 Navigate(kGoogleURL, 1); |
436 | 410 |
437 // Navigate somewhere else. | 411 // Navigate somewhere else. |
438 this->Navigate(kGoodURL, 2); | 412 Navigate(kGoodURL, 2); |
439 | 413 |
440 // Simulate that page loading a bad-resource triggering an interstitial. | 414 // Simulate that page loading a bad-resource triggering an interstitial. |
441 this->ShowInterstitial(true, kBadURL); | 415 ShowInterstitial(true, kBadURL); |
442 | 416 |
443 // More bad resources loading causing more interstitials. The new | 417 // More bad resources loading causing more interstitials. The new |
444 // interstitials should be queued. | 418 // interstitials should be queued. |
445 this->ShowInterstitial(true, kBadURL2); | 419 ShowInterstitial(true, kBadURL2); |
446 this->ShowInterstitial(true, kBadURL3); | 420 ShowInterstitial(true, kBadURL3); |
447 | 421 |
448 SafeBrowsingBlockingPage* sb_interstitial = | 422 SafeBrowsingBlockingPage* sb_interstitial = |
449 this->GetSafeBrowsingBlockingPage(); | 423 GetSafeBrowsingBlockingPage(); |
450 ASSERT_TRUE(sb_interstitial); | 424 ASSERT_TRUE(sb_interstitial); |
451 | 425 |
452 // Proceed through the 1st interstitial. | 426 // Proceed through the 1st interstitial. |
453 this->ProceedThroughInterstitial(sb_interstitial); | 427 ProceedThroughInterstitial(sb_interstitial); |
454 EXPECT_EQ(this->OK, this->user_response()); | 428 EXPECT_EQ(OK, user_response()); |
455 | 429 |
456 // A report should have been sent. | 430 // A report should have been sent. |
457 EXPECT_EQ(1u, this->ui_manager_->GetDetails()->size()); | 431 EXPECT_EQ(1u, ui_manager_->GetDetails()->size()); |
458 this->ui_manager_->GetDetails()->clear(); | 432 ui_manager_->GetDetails()->clear(); |
459 | 433 |
460 this->ResetUserResponse(); | 434 ResetUserResponse(); |
461 | 435 |
462 // We should land to a 2nd interstitial (aggregating all the malware resources | 436 // We should land to a 2nd interstitial (aggregating all the malware resources |
463 // loaded while the 1st interstitial was showing). | 437 // loaded while the 1st interstitial was showing). |
464 sb_interstitial = this->GetSafeBrowsingBlockingPage(); | 438 sb_interstitial = GetSafeBrowsingBlockingPage(); |
465 ASSERT_TRUE(sb_interstitial); | 439 ASSERT_TRUE(sb_interstitial); |
466 | 440 |
467 // Don't proceed through the 2nd interstitial. | 441 // Don't proceed through the 2nd interstitial. |
468 this->DontProceedThroughSubresourceInterstitial(sb_interstitial); | 442 DontProceedThroughSubresourceInterstitial(sb_interstitial); |
469 EXPECT_EQ(this->CANCEL, this->user_response()); | 443 EXPECT_EQ(CANCEL, user_response()); |
470 EXPECT_FALSE(this->GetSafeBrowsingBlockingPage()); | 444 EXPECT_FALSE(GetSafeBrowsingBlockingPage()); |
471 | 445 |
472 // We did not proceed, we should be back to the first page, the 2nd one should | 446 // We did not proceed, we should be back to the first page, the 2nd one should |
473 // have been removed from the navigation controller. | 447 // have been removed from the navigation controller. |
474 ASSERT_EQ(1, this->controller().GetEntryCount()); | 448 ASSERT_EQ(1, controller().GetEntryCount()); |
475 EXPECT_EQ(kGoogleURL, this->controller().GetActiveEntry()->GetURL().spec()); | 449 EXPECT_EQ(kGoogleURL, controller().GetActiveEntry()->GetURL().spec()); |
476 | 450 |
477 // No report should have been sent -- we don't create a report the | 451 // No report should have been sent -- we don't create a report the |
478 // second time. | 452 // second time. |
479 EXPECT_EQ(0u, this->ui_manager_->GetDetails()->size()); | 453 EXPECT_EQ(0u, ui_manager_->GetDetails()->size()); |
480 this->ui_manager_->GetDetails()->clear(); | 454 ui_manager_->GetDetails()->clear(); |
481 } | 455 } |
482 | 456 |
483 // Tests showing a blocking page for a page that contains multiple malware | 457 // Tests showing a blocking page for a page that contains multiple malware |
484 // subresources and proceeding through the multiple interstitials. | 458 // subresources and proceeding through the multiple interstitials. |
485 TYPED_TEST(SafeBrowsingBlockingPageTest, | 459 TEST_F(SafeBrowsingBlockingPageTest, |
486 PageWithMultipleMalwareResourceProceed) { | 460 PageWithMultipleMalwareResourceProceed) { |
487 // Enable malware reports. | 461 // Enable malware reports. |
488 Profile* profile = Profile::FromBrowserContext( | 462 Profile* profile = Profile::FromBrowserContext( |
489 this->web_contents()->GetBrowserContext()); | 463 web_contents()->GetBrowserContext()); |
490 profile->GetPrefs()->SetBoolean( | 464 profile->GetPrefs()->SetBoolean( |
491 prefs::kSafeBrowsingExtendedReportingEnabled, true); | 465 prefs::kSafeBrowsingExtendedReportingEnabled, true); |
492 | 466 |
493 // Navigate somewhere else. | 467 // Navigate somewhere else. |
494 this->Navigate(kGoodURL, 1); | 468 Navigate(kGoodURL, 1); |
495 | 469 |
496 // Simulate that page loading a bad-resource triggering an interstitial. | 470 // Simulate that page loading a bad-resource triggering an interstitial. |
497 this->ShowInterstitial(true, kBadURL); | 471 ShowInterstitial(true, kBadURL); |
498 | 472 |
499 // More bad resources loading causing more interstitials. The new | 473 // More bad resources loading causing more interstitials. The new |
500 // interstitials should be queued. | 474 // interstitials should be queued. |
501 this->ShowInterstitial(true, kBadURL2); | 475 ShowInterstitial(true, kBadURL2); |
502 this->ShowInterstitial(true, kBadURL3); | 476 ShowInterstitial(true, kBadURL3); |
503 | 477 |
504 SafeBrowsingBlockingPage* sb_interstitial = | 478 SafeBrowsingBlockingPage* sb_interstitial = |
505 this->GetSafeBrowsingBlockingPage(); | 479 GetSafeBrowsingBlockingPage(); |
506 ASSERT_TRUE(sb_interstitial); | 480 ASSERT_TRUE(sb_interstitial); |
507 | 481 |
508 // Proceed through the 1st interstitial. | 482 // Proceed through the 1st interstitial. |
509 this->ProceedThroughInterstitial(sb_interstitial); | 483 ProceedThroughInterstitial(sb_interstitial); |
510 EXPECT_EQ(this->OK, this->user_response()); | 484 EXPECT_EQ(OK, user_response()); |
511 | 485 |
512 // A report should have been sent. | 486 // A report should have been sent. |
513 EXPECT_EQ(1u, this->ui_manager_->GetDetails()->size()); | 487 EXPECT_EQ(1u, ui_manager_->GetDetails()->size()); |
514 this->ui_manager_->GetDetails()->clear(); | 488 ui_manager_->GetDetails()->clear(); |
515 | 489 |
516 this->ResetUserResponse(); | 490 ResetUserResponse(); |
517 | 491 |
518 // We should land to a 2nd interstitial (aggregating all the malware resources | 492 // We should land to a 2nd interstitial (aggregating all the malware resources |
519 // loaded while the 1st interstitial was showing). | 493 // loaded while the 1st interstitial was showing). |
520 sb_interstitial = this->GetSafeBrowsingBlockingPage(); | 494 sb_interstitial = GetSafeBrowsingBlockingPage(); |
521 ASSERT_TRUE(sb_interstitial); | 495 ASSERT_TRUE(sb_interstitial); |
522 | 496 |
523 // Proceed through the 2nd interstitial. | 497 // Proceed through the 2nd interstitial. |
524 this->ProceedThroughInterstitial(sb_interstitial); | 498 ProceedThroughInterstitial(sb_interstitial); |
525 EXPECT_EQ(this->OK, this->user_response()); | 499 EXPECT_EQ(OK, user_response()); |
526 | 500 |
527 // We did proceed, we should be back to the initial page. | 501 // We did proceed, we should be back to the initial page. |
528 ASSERT_EQ(1, this->controller().GetEntryCount()); | 502 ASSERT_EQ(1, controller().GetEntryCount()); |
529 EXPECT_EQ(kGoodURL, this->controller().GetActiveEntry()->GetURL().spec()); | 503 EXPECT_EQ(kGoodURL, controller().GetActiveEntry()->GetURL().spec()); |
530 | 504 |
531 // No report should have been sent -- we don't create a report the | 505 // No report should have been sent -- we don't create a report the |
532 // second time. | 506 // second time. |
533 EXPECT_EQ(0u, this->ui_manager_->GetDetails()->size()); | 507 EXPECT_EQ(0u, ui_manager_->GetDetails()->size()); |
534 this->ui_manager_->GetDetails()->clear(); | 508 ui_manager_->GetDetails()->clear(); |
535 } | 509 } |
536 | 510 |
537 // Tests showing a blocking page then navigating back and forth to make sure the | 511 // Tests showing a blocking page then navigating back and forth to make sure the |
538 // controller entries are OK. http://crbug.com/17627 | 512 // controller entries are OK. http://crbug.com/17627 |
539 TYPED_TEST(SafeBrowsingBlockingPageTest, NavigatingBackAndForth) { | 513 TEST_F(SafeBrowsingBlockingPageTest, NavigatingBackAndForth) { |
540 // Enable malware reports. | 514 // Enable malware reports. |
541 Profile* profile = Profile::FromBrowserContext( | 515 Profile* profile = Profile::FromBrowserContext( |
542 this->web_contents()->GetBrowserContext()); | 516 web_contents()->GetBrowserContext()); |
543 profile->GetPrefs()->SetBoolean( | 517 profile->GetPrefs()->SetBoolean( |
544 prefs::kSafeBrowsingExtendedReportingEnabled, true); | 518 prefs::kSafeBrowsingExtendedReportingEnabled, true); |
545 | 519 |
546 // Navigate somewhere. | 520 // Navigate somewhere. |
547 this->Navigate(kGoodURL, 1); | 521 Navigate(kGoodURL, 1); |
548 | 522 |
549 // Now navigate to a bad page triggerring an interstitial. | 523 // Now navigate to a bad page triggerring an interstitial. |
550 this->controller().LoadURL(GURL(kBadURL), content::Referrer(), | 524 controller().LoadURL(GURL(kBadURL), content::Referrer(), |
551 content::PAGE_TRANSITION_TYPED, std::string()); | 525 content::PAGE_TRANSITION_TYPED, std::string()); |
552 this->ShowInterstitial(false, kBadURL); | 526 ShowInterstitial(false, kBadURL); |
553 SafeBrowsingBlockingPage* sb_interstitial = | 527 SafeBrowsingBlockingPage* sb_interstitial = |
554 this->GetSafeBrowsingBlockingPage(); | 528 GetSafeBrowsingBlockingPage(); |
555 ASSERT_TRUE(sb_interstitial); | 529 ASSERT_TRUE(sb_interstitial); |
556 | 530 |
557 // Proceed, then navigate back. | 531 // Proceed, then navigate back. |
558 this->ProceedThroughInterstitial(sb_interstitial); | 532 ProceedThroughInterstitial(sb_interstitial); |
559 this->Navigate(kBadURL, 2); // Commit the navigation. | 533 Navigate(kBadURL, 2); // Commit the navigation. |
560 this->GoBack(true); | 534 GoBack(true); |
561 | 535 |
562 // We are back on the good page. | 536 // We are back on the good page. |
563 sb_interstitial = this->GetSafeBrowsingBlockingPage(); | 537 sb_interstitial = GetSafeBrowsingBlockingPage(); |
564 ASSERT_FALSE(sb_interstitial); | 538 ASSERT_FALSE(sb_interstitial); |
565 ASSERT_EQ(2, this->controller().GetEntryCount()); | 539 ASSERT_EQ(2, controller().GetEntryCount()); |
566 EXPECT_EQ(kGoodURL, this->controller().GetActiveEntry()->GetURL().spec()); | 540 EXPECT_EQ(kGoodURL, controller().GetActiveEntry()->GetURL().spec()); |
567 | 541 |
568 // Navigate forward to the malware URL. | 542 // Navigate forward to the malware URL. |
569 this->web_contents()->GetController().GoForward(); | 543 web_contents()->GetController().GoForward(); |
570 this->ShowInterstitial(false, kBadURL); | 544 ShowInterstitial(false, kBadURL); |
571 sb_interstitial = this->GetSafeBrowsingBlockingPage(); | 545 sb_interstitial = GetSafeBrowsingBlockingPage(); |
572 ASSERT_TRUE(sb_interstitial); | 546 ASSERT_TRUE(sb_interstitial); |
573 | 547 |
574 // Let's proceed and make sure everything is OK (bug 17627). | 548 // Let's proceed and make sure everything is OK (bug 17627). |
575 this->ProceedThroughInterstitial(sb_interstitial); | 549 ProceedThroughInterstitial(sb_interstitial); |
576 this->Navigate(kBadURL, 2); // Commit the navigation. | 550 Navigate(kBadURL, 2); // Commit the navigation. |
577 sb_interstitial = this->GetSafeBrowsingBlockingPage(); | 551 sb_interstitial = GetSafeBrowsingBlockingPage(); |
578 ASSERT_FALSE(sb_interstitial); | 552 ASSERT_FALSE(sb_interstitial); |
579 ASSERT_EQ(2, this->controller().GetEntryCount()); | 553 ASSERT_EQ(2, controller().GetEntryCount()); |
580 EXPECT_EQ(kBadURL, this->controller().GetActiveEntry()->GetURL().spec()); | 554 EXPECT_EQ(kBadURL, controller().GetActiveEntry()->GetURL().spec()); |
581 | 555 |
582 // Two reports should have been sent. | 556 // Two reports should have been sent. |
583 EXPECT_EQ(2u, this->ui_manager_->GetDetails()->size()); | 557 EXPECT_EQ(2u, ui_manager_->GetDetails()->size()); |
584 this->ui_manager_->GetDetails()->clear(); | 558 ui_manager_->GetDetails()->clear(); |
585 } | 559 } |
586 | 560 |
587 // Tests that calling "don't proceed" after "proceed" has been called doesn't | 561 // Tests that calling "don't proceed" after "proceed" has been called doesn't |
588 // cause problems. http://crbug.com/30079 | 562 // cause problems. http://crbug.com/30079 |
589 TYPED_TEST(SafeBrowsingBlockingPageTest, ProceedThenDontProceed) { | 563 TEST_F(SafeBrowsingBlockingPageTest, ProceedThenDontProceed) { |
590 // Enable malware reports. | 564 // Enable malware reports. |
591 Profile* profile = Profile::FromBrowserContext( | 565 Profile* profile = Profile::FromBrowserContext( |
592 this->web_contents()->GetBrowserContext()); | 566 web_contents()->GetBrowserContext()); |
593 profile->GetPrefs()->SetBoolean( | 567 profile->GetPrefs()->SetBoolean( |
594 prefs::kSafeBrowsingExtendedReportingEnabled, true); | 568 prefs::kSafeBrowsingExtendedReportingEnabled, true); |
595 | 569 |
596 // Start a load. | 570 // Start a load. |
597 this->controller().LoadURL(GURL(kBadURL), content::Referrer(), | 571 controller().LoadURL(GURL(kBadURL), content::Referrer(), |
598 content::PAGE_TRANSITION_TYPED, std::string()); | 572 content::PAGE_TRANSITION_TYPED, std::string()); |
599 | 573 |
600 // Simulate the load causing a safe browsing interstitial to be shown. | 574 // Simulate the load causing a safe browsing interstitial to be shown. |
601 this->ShowInterstitial(false, kBadURL); | 575 ShowInterstitial(false, kBadURL); |
602 SafeBrowsingBlockingPage* sb_interstitial = | 576 SafeBrowsingBlockingPage* sb_interstitial = |
603 this->GetSafeBrowsingBlockingPage(); | 577 GetSafeBrowsingBlockingPage(); |
604 ASSERT_TRUE(sb_interstitial); | 578 ASSERT_TRUE(sb_interstitial); |
605 | 579 |
606 base::RunLoop().RunUntilIdle(); | 580 base::RunLoop().RunUntilIdle(); |
607 | 581 |
608 // Simulate the user clicking "proceed" then "don't proceed" (before the | 582 // Simulate the user clicking "proceed" then "don't proceed" (before the |
609 // interstitial is shown). | 583 // interstitial is shown). |
610 sb_interstitial->interstitial_page_->Proceed(); | 584 sb_interstitial->interstitial_page_->Proceed(); |
611 sb_interstitial->interstitial_page_->DontProceed(); | 585 sb_interstitial->interstitial_page_->DontProceed(); |
612 // Proceed() and DontProceed() post a task to update the | 586 // Proceed() and DontProceed() post a task to update the |
613 // SafeBrowsingService::Client. | 587 // SafeBrowsingService::Client. |
614 base::RunLoop().RunUntilIdle(); | 588 base::RunLoop().RunUntilIdle(); |
615 | 589 |
616 // The interstitial should be gone. | 590 // The interstitial should be gone. |
617 EXPECT_EQ(this->OK, this->user_response()); | 591 EXPECT_EQ(OK, user_response()); |
618 EXPECT_FALSE(this->GetSafeBrowsingBlockingPage()); | 592 EXPECT_FALSE(GetSafeBrowsingBlockingPage()); |
619 | 593 |
620 // Only one report should have been sent. | 594 // Only one report should have been sent. |
621 EXPECT_EQ(1u, this->ui_manager_->GetDetails()->size()); | 595 EXPECT_EQ(1u, ui_manager_->GetDetails()->size()); |
622 this->ui_manager_->GetDetails()->clear(); | 596 ui_manager_->GetDetails()->clear(); |
623 } | 597 } |
624 | 598 |
625 // Tests showing a blocking page for a malware page with reports disabled. | 599 // Tests showing a blocking page for a malware page with reports disabled. |
626 TYPED_TEST(SafeBrowsingBlockingPageTest, MalwareReportsDisabled) { | 600 TEST_F(SafeBrowsingBlockingPageTest, MalwareReportsDisabled) { |
627 // Disable malware reports. | 601 // Disable malware reports. |
628 Profile* profile = Profile::FromBrowserContext( | 602 Profile* profile = Profile::FromBrowserContext( |
629 this->web_contents()->GetBrowserContext()); | 603 web_contents()->GetBrowserContext()); |
630 profile->GetPrefs()->SetBoolean( | 604 profile->GetPrefs()->SetBoolean( |
631 prefs::kSafeBrowsingExtendedReportingEnabled, false); | 605 prefs::kSafeBrowsingExtendedReportingEnabled, false); |
632 | 606 |
633 // Start a load. | 607 // Start a load. |
634 this->controller().LoadURL(GURL(kBadURL), content::Referrer(), | 608 controller().LoadURL(GURL(kBadURL), content::Referrer(), |
635 content::PAGE_TRANSITION_TYPED, std::string()); | 609 content::PAGE_TRANSITION_TYPED, std::string()); |
636 | 610 |
637 // Simulate the load causing a safe browsing interstitial to be shown. | 611 // Simulate the load causing a safe browsing interstitial to be shown. |
638 this->ShowInterstitial(false, kBadURL); | 612 ShowInterstitial(false, kBadURL); |
639 SafeBrowsingBlockingPage* sb_interstitial = | 613 SafeBrowsingBlockingPage* sb_interstitial = |
640 this->GetSafeBrowsingBlockingPage(); | 614 GetSafeBrowsingBlockingPage(); |
641 ASSERT_TRUE(sb_interstitial); | 615 ASSERT_TRUE(sb_interstitial); |
642 | 616 |
643 base::RunLoop().RunUntilIdle(); | 617 base::RunLoop().RunUntilIdle(); |
644 | 618 |
645 // Simulate the user clicking "don't proceed". | 619 // Simulate the user clicking "don't proceed". |
646 this->DontProceedThroughInterstitial(sb_interstitial); | 620 DontProceedThroughInterstitial(sb_interstitial); |
647 | 621 |
648 // The interstitial should be gone. | 622 // The interstitial should be gone. |
649 EXPECT_EQ(this->CANCEL, this->user_response()); | 623 EXPECT_EQ(CANCEL, user_response()); |
650 EXPECT_FALSE(this->GetSafeBrowsingBlockingPage()); | 624 EXPECT_FALSE(GetSafeBrowsingBlockingPage()); |
651 | 625 |
652 // We did not proceed, the pending entry should be gone. | 626 // We did not proceed, the pending entry should be gone. |
653 EXPECT_FALSE(this->controller().GetPendingEntry()); | 627 EXPECT_FALSE(controller().GetPendingEntry()); |
654 | 628 |
655 // No report should have been sent. | 629 // No report should have been sent. |
656 EXPECT_EQ(0u, this->ui_manager_->GetDetails()->size()); | 630 EXPECT_EQ(0u, ui_manager_->GetDetails()->size()); |
657 this->ui_manager_->GetDetails()->clear(); | 631 ui_manager_->GetDetails()->clear(); |
658 } | 632 } |
659 | 633 |
660 // Test that toggling the checkbox has the anticipated effects. | 634 // Test that toggling the checkbox has the anticipated effects. |
661 TYPED_TEST(SafeBrowsingBlockingPageTest, MalwareReportsToggling) { | 635 TEST_F(SafeBrowsingBlockingPageTest, MalwareReportsToggling) { |
662 // Disable malware reports. | 636 // Disable malware reports. |
663 Profile* profile = Profile::FromBrowserContext( | 637 Profile* profile = Profile::FromBrowserContext( |
664 this->web_contents()->GetBrowserContext()); | 638 web_contents()->GetBrowserContext()); |
665 profile->GetPrefs()->SetBoolean( | 639 profile->GetPrefs()->SetBoolean( |
666 prefs::kSafeBrowsingExtendedReportingEnabled, false); | 640 prefs::kSafeBrowsingExtendedReportingEnabled, false); |
667 | 641 |
668 // Start a load. | 642 // Start a load. |
669 this->controller().LoadURL(GURL(kBadURL), content::Referrer(), | 643 controller().LoadURL(GURL(kBadURL), content::Referrer(), |
670 content::PAGE_TRANSITION_TYPED, std::string()); | 644 content::PAGE_TRANSITION_TYPED, std::string()); |
671 | 645 |
672 // Simulate the load causing a safe browsing interstitial to be shown. | 646 // Simulate the load causing a safe browsing interstitial to be shown. |
673 this->ShowInterstitial(false, kBadURL); | 647 ShowInterstitial(false, kBadURL); |
674 SafeBrowsingBlockingPage* sb_interstitial = | 648 SafeBrowsingBlockingPage* sb_interstitial = |
675 this->GetSafeBrowsingBlockingPage(); | 649 GetSafeBrowsingBlockingPage(); |
676 ASSERT_TRUE(sb_interstitial); | 650 ASSERT_TRUE(sb_interstitial); |
677 | 651 |
678 base::RunLoop().RunUntilIdle(); | 652 base::RunLoop().RunUntilIdle(); |
679 | 653 |
680 EXPECT_FALSE(profile->GetPrefs()->GetBoolean( | 654 EXPECT_FALSE(profile->GetPrefs()->GetBoolean( |
681 prefs::kSafeBrowsingExtendedReportingEnabled)); | 655 prefs::kSafeBrowsingExtendedReportingEnabled)); |
682 | 656 |
683 // Simulate the user check the report agreement checkbox. | 657 // Simulate the user check the report agreement checkbox. |
684 sb_interstitial->SetReportingPreference(true); | 658 sb_interstitial->SetReportingPreference(true); |
685 | 659 |
686 EXPECT_TRUE(profile->GetPrefs()->GetBoolean( | 660 EXPECT_TRUE(profile->GetPrefs()->GetBoolean( |
687 prefs::kSafeBrowsingExtendedReportingEnabled)); | 661 prefs::kSafeBrowsingExtendedReportingEnabled)); |
688 | 662 |
689 // Simulate the user uncheck the report agreement checkbox. | 663 // Simulate the user uncheck the report agreement checkbox. |
690 sb_interstitial->SetReportingPreference(false); | 664 sb_interstitial->SetReportingPreference(false); |
691 | 665 |
692 EXPECT_FALSE(profile->GetPrefs()->GetBoolean( | 666 EXPECT_FALSE(profile->GetPrefs()->GetBoolean( |
693 prefs::kSafeBrowsingExtendedReportingEnabled)); | 667 prefs::kSafeBrowsingExtendedReportingEnabled)); |
694 } | 668 } |
695 | 669 |
696 // Test that the transition from old to new preference works. | 670 // Test that the transition from old to new preference works. |
697 TYPED_TEST(SafeBrowsingBlockingPageTest, MalwareReportsTransitionEnabled) { | 671 TEST_F(SafeBrowsingBlockingPageTest, MalwareReportsTransitionEnabled) { |
698 // The old pref is enabled. | 672 // The old pref is enabled. |
699 Profile* profile = Profile::FromBrowserContext( | 673 Profile* profile = Profile::FromBrowserContext( |
700 this->web_contents()->GetBrowserContext()); | 674 web_contents()->GetBrowserContext()); |
701 profile->GetPrefs()->SetBoolean(prefs::kSafeBrowsingReportingEnabled, true); | 675 profile->GetPrefs()->SetBoolean(prefs::kSafeBrowsingReportingEnabled, true); |
702 | 676 |
703 // Start a load. | 677 // Start a load. |
704 this->controller().LoadURL(GURL(kBadURL), content::Referrer(), | 678 controller().LoadURL(GURL(kBadURL), content::Referrer(), |
705 content::PAGE_TRANSITION_TYPED, std::string()); | 679 content::PAGE_TRANSITION_TYPED, std::string()); |
706 | 680 |
707 // Simulate the load causing a safe browsing interstitial to be shown. | 681 // Simulate the load causing a safe browsing interstitial to be shown. |
708 this->ShowInterstitial(false, kBadURL); | 682 ShowInterstitial(false, kBadURL); |
709 SafeBrowsingBlockingPage* sb_interstitial = | 683 SafeBrowsingBlockingPage* sb_interstitial = |
710 this->GetSafeBrowsingBlockingPage(); | 684 GetSafeBrowsingBlockingPage(); |
711 ASSERT_TRUE(sb_interstitial); | 685 ASSERT_TRUE(sb_interstitial); |
712 | 686 |
713 base::RunLoop().RunUntilIdle(); | 687 base::RunLoop().RunUntilIdle(); |
714 | 688 |
715 // At this point, nothing should have changed yet. | 689 // At this point, nothing should have changed yet. |
716 EXPECT_FALSE(profile->GetPrefs()->GetBoolean( | 690 EXPECT_FALSE(profile->GetPrefs()->GetBoolean( |
717 prefs::kSafeBrowsingExtendedReportingEnabled)); | 691 prefs::kSafeBrowsingExtendedReportingEnabled)); |
718 | 692 |
719 this->ProceedThroughInterstitial(sb_interstitial); | 693 ProceedThroughInterstitial(sb_interstitial); |
720 | 694 |
721 // Since the user has proceeded without changing the checkbox, the new pref | 695 // Since the user has proceeded without changing the checkbox, the new pref |
722 // has been updated. | 696 // has been updated. |
723 EXPECT_TRUE(profile->GetPrefs()->GetBoolean( | 697 EXPECT_TRUE(profile->GetPrefs()->GetBoolean( |
724 prefs::kSafeBrowsingExtendedReportingEnabled)); | 698 prefs::kSafeBrowsingExtendedReportingEnabled)); |
725 } | 699 } |
726 | 700 |
727 // Test that the transition from old to new preference still respects the | 701 // Test that the transition from old to new preference still respects the |
728 // user's checkbox preferences. | 702 // user's checkbox preferences. |
729 TYPED_TEST(SafeBrowsingBlockingPageTest, MalwareReportsTransitionDisabled) { | 703 TEST_F(SafeBrowsingBlockingPageTest, MalwareReportsTransitionDisabled) { |
730 // The old pref is enabled. | 704 // The old pref is enabled. |
731 Profile* profile = Profile::FromBrowserContext( | 705 Profile* profile = Profile::FromBrowserContext( |
732 this->web_contents()->GetBrowserContext()); | 706 web_contents()->GetBrowserContext()); |
733 profile->GetPrefs()->SetBoolean(prefs::kSafeBrowsingReportingEnabled, true); | 707 profile->GetPrefs()->SetBoolean(prefs::kSafeBrowsingReportingEnabled, true); |
734 | 708 |
735 // Start a load. | 709 // Start a load. |
736 this->controller().LoadURL(GURL(kBadURL), content::Referrer(), | 710 controller().LoadURL(GURL(kBadURL), content::Referrer(), |
737 content::PAGE_TRANSITION_TYPED, std::string()); | 711 content::PAGE_TRANSITION_TYPED, std::string()); |
738 | 712 |
739 // Simulate the load causing a safe browsing interstitial to be shown. | 713 // Simulate the load causing a safe browsing interstitial to be shown. |
740 this->ShowInterstitial(false, kBadURL); | 714 ShowInterstitial(false, kBadURL); |
741 SafeBrowsingBlockingPage* sb_interstitial = | 715 SafeBrowsingBlockingPage* sb_interstitial = |
742 this->GetSafeBrowsingBlockingPage(); | 716 GetSafeBrowsingBlockingPage(); |
743 ASSERT_TRUE(sb_interstitial); | 717 ASSERT_TRUE(sb_interstitial); |
744 | 718 |
745 base::RunLoop().RunUntilIdle(); | 719 base::RunLoop().RunUntilIdle(); |
746 | 720 |
747 // At this point, nothing should have changed yet. | 721 // At this point, nothing should have changed yet. |
748 EXPECT_FALSE(profile->GetPrefs()->GetBoolean( | 722 EXPECT_FALSE(profile->GetPrefs()->GetBoolean( |
749 prefs::kSafeBrowsingExtendedReportingEnabled)); | 723 prefs::kSafeBrowsingExtendedReportingEnabled)); |
750 | 724 |
751 // Simulate the user uncheck the report agreement checkbox. | 725 // Simulate the user uncheck the report agreement checkbox. |
752 sb_interstitial->SetReportingPreference(false); | 726 sb_interstitial->SetReportingPreference(false); |
753 | 727 |
754 this->ProceedThroughInterstitial(sb_interstitial); | 728 ProceedThroughInterstitial(sb_interstitial); |
755 | 729 |
756 // The new pref is turned off. | 730 // The new pref is turned off. |
757 EXPECT_FALSE(profile->GetPrefs()->GetBoolean( | 731 EXPECT_FALSE(profile->GetPrefs()->GetBoolean( |
758 prefs::kSafeBrowsingExtendedReportingEnabled)); | 732 prefs::kSafeBrowsingExtendedReportingEnabled)); |
759 EXPECT_FALSE(profile->GetPrefs()->GetBoolean( | 733 EXPECT_FALSE(profile->GetPrefs()->GetBoolean( |
760 prefs::kSafeBrowsingReportingEnabled)); | 734 prefs::kSafeBrowsingReportingEnabled)); |
761 EXPECT_FALSE(profile->GetPrefs()->GetBoolean( | 735 EXPECT_FALSE(profile->GetPrefs()->GetBoolean( |
762 prefs::kSafeBrowsingDownloadFeedbackEnabled)); | 736 prefs::kSafeBrowsingDownloadFeedbackEnabled)); |
763 } | 737 } |
OLD | NEW |