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

Side by Side Diff: chrome/browser/safe_browsing/safe_browsing_blocking_page_unittest.cc

Issue 330753002: Browser and unit tests for the SB interstitial V3 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merged redundancy Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <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 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 const UnsafeResourceList& unsafe_resources) 55 const UnsafeResourceList& unsafe_resources)
56 : SafeBrowsingBlockingPageV2(manager, web_contents, unsafe_resources) { 56 : SafeBrowsingBlockingPageV2(manager, web_contents, unsafe_resources) {
57 // Don't delay details at all for the unittest. 57 // Don't delay details at all for the unittest.
58 malware_details_proceed_delay_ms_ = 0; 58 malware_details_proceed_delay_ms_ = 0;
59 59
60 // Don't create a view. 60 // Don't create a view.
61 interstitial_page()->DontCreateViewForTesting(); 61 interstitial_page()->DontCreateViewForTesting();
62 } 62 }
63 }; 63 };
64 64
65 // A SafeBrowingBlockingPage class that does not create windows.
66 class TestSafeBrowsingBlockingPageV3 : public SafeBrowsingBlockingPageV3 {
67 public:
68 TestSafeBrowsingBlockingPageV3(SafeBrowsingUIManager* manager,
69 WebContents* web_contents,
70 const UnsafeResourceList& unsafe_resources)
71 : SafeBrowsingBlockingPageV3(manager, web_contents, unsafe_resources) {
72 // Don't delay details at all for the unittest.
73 malware_details_proceed_delay_ms_ = 0;
74
75 // Don't create a view.
76 interstitial_page()->DontCreateViewForTesting();
77 }
78 };
79
65 class TestSafeBrowsingUIManager: public SafeBrowsingUIManager { 80 class TestSafeBrowsingUIManager: public SafeBrowsingUIManager {
66 public: 81 public:
67 explicit TestSafeBrowsingUIManager(SafeBrowsingService* service) 82 explicit TestSafeBrowsingUIManager(SafeBrowsingService* service)
68 : SafeBrowsingUIManager(service) { 83 : SafeBrowsingUIManager(service) {
69 } 84 }
70 85
71 virtual void SendSerializedMalwareDetails( 86 virtual void SendSerializedMalwareDetails(
72 const std::string& serialized) OVERRIDE { 87 const std::string& serialized) OVERRIDE {
73 details_.push_back(serialized); 88 details_.push_back(serialized);
74 } 89 }
75 90
76 std::list<std::string>* GetDetails() { 91 std::list<std::string>* GetDetails() {
77 return &details_; 92 return &details_;
78 } 93 }
79 94
80 private: 95 private:
81 virtual ~TestSafeBrowsingUIManager() {} 96 virtual ~TestSafeBrowsingUIManager() {}
82 97
83 std::list<std::string> details_; 98 std::list<std::string> details_;
84 }; 99 };
85 100
101 template <class SBInterstitialPage>
86 class TestSafeBrowsingBlockingPageFactory 102 class TestSafeBrowsingBlockingPageFactory
87 : public SafeBrowsingBlockingPageFactory { 103 : public SafeBrowsingBlockingPageFactory {
88 public: 104 public:
89 TestSafeBrowsingBlockingPageFactory() { } 105 TestSafeBrowsingBlockingPageFactory() { }
90 virtual ~TestSafeBrowsingBlockingPageFactory() { } 106 virtual ~TestSafeBrowsingBlockingPageFactory() { }
91 107
92 virtual SafeBrowsingBlockingPage* CreateSafeBrowsingPage( 108 virtual SafeBrowsingBlockingPage* CreateSafeBrowsingPage(
93 SafeBrowsingUIManager* manager, 109 SafeBrowsingUIManager* manager,
94 WebContents* web_contents, 110 WebContents* web_contents,
95 const SafeBrowsingBlockingPage::UnsafeResourceList& unsafe_resources) 111 const SafeBrowsingBlockingPage::UnsafeResourceList& unsafe_resources)
96 OVERRIDE { 112 OVERRIDE {
97 // TODO(mattm): remove this when SafeBrowsingBlockingPageV2 supports 113 // TODO(mattm): remove this when SafeBrowsingBlockingPageV2 supports
98 // multi-threat warnings. 114 // multi-threat warnings.
99 if (unsafe_resources.size() == 1 && 115 if (unsafe_resources.size() == 1 &&
100 (unsafe_resources[0].threat_type == SB_THREAT_TYPE_URL_MALWARE || 116 (unsafe_resources[0].threat_type == SB_THREAT_TYPE_URL_MALWARE ||
101 unsafe_resources[0].threat_type == SB_THREAT_TYPE_URL_PHISHING)) { 117 unsafe_resources[0].threat_type == SB_THREAT_TYPE_URL_PHISHING)) {
102 return new TestSafeBrowsingBlockingPageV2(manager, web_contents, 118 return new SBInterstitialPage(manager, web_contents, unsafe_resources);
103 unsafe_resources);
104 } 119 }
105 return new TestSafeBrowsingBlockingPageV1(manager, web_contents, 120 return new TestSafeBrowsingBlockingPageV1(manager, web_contents,
106 unsafe_resources); 121 unsafe_resources);
107 } 122 }
108 }; 123 };
109 124
110 } // namespace 125 } // namespace
111 126
127 template <class SBInterstitialPage>
112 class SafeBrowsingBlockingPageTest : public ChromeRenderViewHostTestHarness { 128 class SafeBrowsingBlockingPageTest : public ChromeRenderViewHostTestHarness {
113 public: 129 public:
114 // The decision the user made. 130 // The decision the user made.
115 enum UserResponse { 131 enum UserResponse {
116 PENDING, 132 PENDING,
117 OK, 133 OK,
118 CANCEL 134 CANCEL
119 }; 135 };
120 136
121 SafeBrowsingBlockingPageTest() { 137 SafeBrowsingBlockingPageTest() {
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 resource->url = url; 240 resource->url = url;
225 resource->is_subresource = is_subresource; 241 resource->is_subresource = is_subresource;
226 resource->threat_type = SB_THREAT_TYPE_URL_MALWARE; 242 resource->threat_type = SB_THREAT_TYPE_URL_MALWARE;
227 resource->render_process_host_id = 243 resource->render_process_host_id =
228 web_contents()->GetRenderProcessHost()->GetID(); 244 web_contents()->GetRenderProcessHost()->GetID();
229 resource->render_view_id = 245 resource->render_view_id =
230 web_contents()->GetRenderViewHost()->GetRoutingID(); 246 web_contents()->GetRenderViewHost()->GetRoutingID();
231 } 247 }
232 248
233 UserResponse user_response_; 249 UserResponse user_response_;
234 TestSafeBrowsingBlockingPageFactory factory_; 250 TestSafeBrowsingBlockingPageFactory<SBInterstitialPage> factory_;
235 }; 251 };
236 252
253 typedef ::testing::Types<TestSafeBrowsingBlockingPageV2,
254 TestSafeBrowsingBlockingPageV3> InterstitialTestTypes;
255 TYPED_TEST_CASE(SafeBrowsingBlockingPageTest, InterstitialTestTypes);
256
237 // Tests showing a blocking page for a malware page and not proceeding. 257 // Tests showing a blocking page for a malware page and not proceeding.
238 TEST_F(SafeBrowsingBlockingPageTest, MalwarePageDontProceed) { 258 TYPED_TEST(SafeBrowsingBlockingPageTest, MalwarePageDontProceed) {
239 // Enable malware details. 259 // Enable malware details.
240 Profile* profile = Profile::FromBrowserContext( 260 Profile* profile = Profile::FromBrowserContext(
241 web_contents()->GetBrowserContext()); 261 this->web_contents()->GetBrowserContext());
242 profile->GetPrefs()->SetBoolean(prefs::kSafeBrowsingReportingEnabled, true); 262 profile->GetPrefs()->SetBoolean(prefs::kSafeBrowsingReportingEnabled, true);
243 263
244 // Start a load. 264 // Start a load.
245 controller().LoadURL(GURL(kBadURL), content::Referrer(), 265 this->controller().LoadURL(GURL(kBadURL), content::Referrer(),
246 content::PAGE_TRANSITION_TYPED, std::string()); 266 content::PAGE_TRANSITION_TYPED, std::string());
247 267
248 268
249 // Simulate the load causing a safe browsing interstitial to be shown. 269 // Simulate the load causing a safe browsing interstitial to be shown.
250 ShowInterstitial(false, kBadURL); 270 this->ShowInterstitial(false, kBadURL);
251 SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage(); 271 SafeBrowsingBlockingPage* sb_interstitial =
272 this->GetSafeBrowsingBlockingPage();
252 ASSERT_TRUE(sb_interstitial); 273 ASSERT_TRUE(sb_interstitial);
253 274
254 base::RunLoop().RunUntilIdle(); 275 base::RunLoop().RunUntilIdle();
255 276
256 // Simulate the user clicking "don't proceed". 277 // Simulate the user clicking "don't proceed".
257 DontProceedThroughInterstitial(sb_interstitial); 278 this->DontProceedThroughInterstitial(sb_interstitial);
258 279
259 // The interstitial should be gone. 280 // The interstitial should be gone.
260 EXPECT_EQ(CANCEL, user_response()); 281 EXPECT_EQ(this->CANCEL, this->user_response());
261 EXPECT_FALSE(GetSafeBrowsingBlockingPage()); 282 EXPECT_FALSE(this->GetSafeBrowsingBlockingPage());
262 283
263 // We did not proceed, the pending entry should be gone. 284 // We did not proceed, the pending entry should be gone.
264 EXPECT_FALSE(controller().GetPendingEntry()); 285 EXPECT_FALSE(this->controller().GetPendingEntry());
265 286
266 // A report should have been sent. 287 // A report should have been sent.
267 EXPECT_EQ(1u, ui_manager_->GetDetails()->size()); 288 EXPECT_EQ(1u, this->ui_manager_->GetDetails()->size());
268 ui_manager_->GetDetails()->clear(); 289 this->ui_manager_->GetDetails()->clear();
269 } 290 }
270 291
271 // Tests showing a blocking page for a malware page and then proceeding. 292 // Tests showing a blocking page for a malware page and then proceeding.
272 TEST_F(SafeBrowsingBlockingPageTest, MalwarePageProceed) { 293 TYPED_TEST(SafeBrowsingBlockingPageTest, MalwarePageProceed) {
273 // Enable malware reports. 294 // Enable malware reports.
274 Profile* profile = Profile::FromBrowserContext( 295 Profile* profile = Profile::FromBrowserContext(
275 web_contents()->GetBrowserContext()); 296 this->web_contents()->GetBrowserContext());
276 profile->GetPrefs()->SetBoolean(prefs::kSafeBrowsingReportingEnabled, true); 297 profile->GetPrefs()->SetBoolean(prefs::kSafeBrowsingReportingEnabled, true);
277 298
278 // Start a load. 299 // Start a load.
279 controller().LoadURL(GURL(kBadURL), content::Referrer(), 300 this->controller().LoadURL(GURL(kBadURL), content::Referrer(),
280 content::PAGE_TRANSITION_TYPED, std::string()); 301 content::PAGE_TRANSITION_TYPED, std::string());
281 302
282 // Simulate the load causing a safe browsing interstitial to be shown. 303 // Simulate the load causing a safe browsing interstitial to be shown.
283 ShowInterstitial(false, kBadURL); 304 this->ShowInterstitial(false, kBadURL);
284 SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage(); 305 SafeBrowsingBlockingPage* sb_interstitial =
306 this->GetSafeBrowsingBlockingPage();
285 ASSERT_TRUE(sb_interstitial); 307 ASSERT_TRUE(sb_interstitial);
286 308
287 // Simulate the user clicking "proceed". 309 // Simulate the user clicking "proceed".
288 ProceedThroughInterstitial(sb_interstitial); 310 this->ProceedThroughInterstitial(sb_interstitial);
289 311
290 // The interstitial is shown until the navigation commits. 312 // The interstitial is shown until the navigation commits.
291 ASSERT_TRUE(InterstitialPage::GetInterstitialPage(web_contents())); 313 ASSERT_TRUE(InterstitialPage::GetInterstitialPage(this->web_contents()));
292 // Commit the navigation. 314 // Commit the navigation.
293 Navigate(kBadURL, 1); 315 this->Navigate(kBadURL, 1);
294 // The interstitial should be gone now. 316 // The interstitial should be gone now.
295 ASSERT_FALSE(InterstitialPage::GetInterstitialPage(web_contents())); 317 ASSERT_FALSE(InterstitialPage::GetInterstitialPage(this->web_contents()));
296 318
297 // A report should have been sent. 319 // A report should have been sent.
298 EXPECT_EQ(1u, ui_manager_->GetDetails()->size()); 320 EXPECT_EQ(1u, this->ui_manager_->GetDetails()->size());
299 ui_manager_->GetDetails()->clear(); 321 this->ui_manager_->GetDetails()->clear();
300 } 322 }
301 323
302 // Tests showing a blocking page for a page that contains malware subresources 324 // Tests showing a blocking page for a page that contains malware subresources
303 // and not proceeding. 325 // and not proceeding.
304 TEST_F(SafeBrowsingBlockingPageTest, PageWithMalwareResourceDontProceed) { 326 TYPED_TEST(SafeBrowsingBlockingPageTest, PageWithMalwareResourceDontProceed) {
305 // Enable malware reports. 327 // Enable malware reports.
306 Profile* profile = Profile::FromBrowserContext( 328 Profile* profile = Profile::FromBrowserContext(
307 web_contents()->GetBrowserContext()); 329 this->web_contents()->GetBrowserContext());
308 profile->GetPrefs()->SetBoolean(prefs::kSafeBrowsingReportingEnabled, true); 330 profile->GetPrefs()->SetBoolean(prefs::kSafeBrowsingReportingEnabled, true);
309 331
310 // Navigate somewhere. 332 // Navigate somewhere.
311 Navigate(kGoogleURL, 1); 333 this->Navigate(kGoogleURL, 1);
312 334
313 // Navigate somewhere else. 335 // Navigate somewhere else.
314 Navigate(kGoodURL, 2); 336 this->Navigate(kGoodURL, 2);
315 337
316 // Simulate that page loading a bad-resource triggering an interstitial. 338 // Simulate that page loading a bad-resource triggering an interstitial.
317 ShowInterstitial(true, kBadURL); 339 this->ShowInterstitial(true, kBadURL);
318 340
319 SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage(); 341 SafeBrowsingBlockingPage* sb_interstitial =
342 this->GetSafeBrowsingBlockingPage();
320 ASSERT_TRUE(sb_interstitial); 343 ASSERT_TRUE(sb_interstitial);
321 344
322 // Simulate the user clicking "don't proceed". 345 // Simulate the user clicking "don't proceed".
323 DontProceedThroughSubresourceInterstitial(sb_interstitial); 346 this->DontProceedThroughSubresourceInterstitial(sb_interstitial);
324 EXPECT_EQ(CANCEL, user_response()); 347 EXPECT_EQ(this->CANCEL, this->user_response());
325 EXPECT_FALSE(GetSafeBrowsingBlockingPage()); 348 EXPECT_FALSE(this->GetSafeBrowsingBlockingPage());
326 349
327 // We did not proceed, we should be back to the first page, the 2nd one should 350 // We did not proceed, we should be back to the first page, the 2nd one should
328 // have been removed from the navigation controller. 351 // have been removed from the navigation controller.
329 ASSERT_EQ(1, controller().GetEntryCount()); 352 ASSERT_EQ(1, this->controller().GetEntryCount());
330 EXPECT_EQ(kGoogleURL, controller().GetActiveEntry()->GetURL().spec()); 353 EXPECT_EQ(kGoogleURL, this->controller().GetActiveEntry()->GetURL().spec());
331 354
332 // A report should have been sent. 355 // A report should have been sent.
333 EXPECT_EQ(1u, ui_manager_->GetDetails()->size()); 356 EXPECT_EQ(1u, this->ui_manager_->GetDetails()->size());
334 ui_manager_->GetDetails()->clear(); 357 this->ui_manager_->GetDetails()->clear();
335 } 358 }
336 359
337 // Tests showing a blocking page for a page that contains malware subresources 360 // Tests showing a blocking page for a page that contains malware subresources
338 // and proceeding. 361 // and proceeding.
339 TEST_F(SafeBrowsingBlockingPageTest, PageWithMalwareResourceProceed) { 362 TYPED_TEST(SafeBrowsingBlockingPageTest, PageWithMalwareResourceProceed) {
340 // Enable malware reports. 363 // Enable malware reports.
341 Profile* profile = Profile::FromBrowserContext( 364 Profile* profile = Profile::FromBrowserContext(
342 web_contents()->GetBrowserContext()); 365 this->web_contents()->GetBrowserContext());
343 profile->GetPrefs()->SetBoolean(prefs::kSafeBrowsingReportingEnabled, true); 366 profile->GetPrefs()->SetBoolean(prefs::kSafeBrowsingReportingEnabled, true);
344 367
345 // Navigate somewhere. 368 // Navigate somewhere.
346 Navigate(kGoodURL, 1); 369 this->Navigate(kGoodURL, 1);
347 370
348 // Simulate that page loading a bad-resource triggering an interstitial. 371 // Simulate that page loading a bad-resource triggering an interstitial.
349 ShowInterstitial(true, kBadURL); 372 this->ShowInterstitial(true, kBadURL);
350 373
351 SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage(); 374 SafeBrowsingBlockingPage* sb_interstitial =
375 this->GetSafeBrowsingBlockingPage();
352 ASSERT_TRUE(sb_interstitial); 376 ASSERT_TRUE(sb_interstitial);
353 377
354 // Simulate the user clicking "proceed". 378 // Simulate the user clicking "proceed".
355 ProceedThroughInterstitial(sb_interstitial); 379 this->ProceedThroughInterstitial(sb_interstitial);
356 EXPECT_EQ(OK, user_response()); 380 EXPECT_EQ(this->OK, this->user_response());
357 EXPECT_FALSE(GetSafeBrowsingBlockingPage()); 381 EXPECT_FALSE(this->GetSafeBrowsingBlockingPage());
358 382
359 // We did proceed, we should be back to showing the page. 383 // We did proceed, we should be back to showing the page.
360 ASSERT_EQ(1, controller().GetEntryCount()); 384 ASSERT_EQ(1, this->controller().GetEntryCount());
361 EXPECT_EQ(kGoodURL, controller().GetActiveEntry()->GetURL().spec()); 385 EXPECT_EQ(kGoodURL, this->controller().GetActiveEntry()->GetURL().spec());
362 386
363 // A report should have been sent. 387 // A report should have been sent.
364 EXPECT_EQ(1u, ui_manager_->GetDetails()->size()); 388 EXPECT_EQ(1u, this->ui_manager_->GetDetails()->size());
365 ui_manager_->GetDetails()->clear(); 389 this->ui_manager_->GetDetails()->clear();
366 } 390 }
367 391
368 // Tests showing a blocking page for a page that contains multiple malware 392 // Tests showing a blocking page for a page that contains multiple malware
369 // subresources and not proceeding. This just tests that the extra malware 393 // subresources and not proceeding. This just tests that the extra malware
370 // subresources (which trigger queued interstitial pages) do not break anything. 394 // subresources (which trigger queued interstitial pages) do not break anything.
371 TEST_F(SafeBrowsingBlockingPageTest, 395 TYPED_TEST(SafeBrowsingBlockingPageTest,
372 PageWithMultipleMalwareResourceDontProceed) { 396 PageWithMultipleMalwareResourceDontProceed) {
373 // Enable malware reports. 397 // Enable malware reports.
374 Profile* profile = Profile::FromBrowserContext( 398 Profile* profile = Profile::FromBrowserContext(
375 web_contents()->GetBrowserContext()); 399 this->web_contents()->GetBrowserContext());
376 profile->GetPrefs()->SetBoolean(prefs::kSafeBrowsingReportingEnabled, true); 400 profile->GetPrefs()->SetBoolean(prefs::kSafeBrowsingReportingEnabled, true);
377 401
378 // Navigate somewhere. 402 // Navigate somewhere.
379 Navigate(kGoogleURL, 1); 403 this->Navigate(kGoogleURL, 1);
380 404
381 // Navigate somewhere else. 405 // Navigate somewhere else.
382 Navigate(kGoodURL, 2); 406 this->Navigate(kGoodURL, 2);
383 407
384 // Simulate that page loading a bad-resource triggering an interstitial. 408 // Simulate that page loading a bad-resource triggering an interstitial.
385 ShowInterstitial(true, kBadURL); 409 this->ShowInterstitial(true, kBadURL);
386 410
387 // More bad resources loading causing more interstitials. The new 411 // More bad resources loading causing more interstitials. The new
388 // interstitials should be queued. 412 // interstitials should be queued.
389 ShowInterstitial(true, kBadURL2); 413 this->ShowInterstitial(true, kBadURL2);
390 ShowInterstitial(true, kBadURL3); 414 this->ShowInterstitial(true, kBadURL3);
391 415
392 SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage(); 416 SafeBrowsingBlockingPage* sb_interstitial =
417 this->GetSafeBrowsingBlockingPage();
393 ASSERT_TRUE(sb_interstitial); 418 ASSERT_TRUE(sb_interstitial);
394 419
395 // Simulate the user clicking "don't proceed". 420 // Simulate the user clicking "don't proceed".
396 DontProceedThroughSubresourceInterstitial(sb_interstitial); 421 this->DontProceedThroughSubresourceInterstitial(sb_interstitial);
397 EXPECT_EQ(CANCEL, user_response()); 422 EXPECT_EQ(this->CANCEL, this->user_response());
398 EXPECT_FALSE(GetSafeBrowsingBlockingPage()); 423 EXPECT_FALSE(this->GetSafeBrowsingBlockingPage());
399 424
400 // We did not proceed, we should be back to the first page, the 2nd one should 425 // We did not proceed, we should be back to the first page, the 2nd one should
401 // have been removed from the navigation controller. 426 // have been removed from the navigation controller.
402 ASSERT_EQ(1, controller().GetEntryCount()); 427 ASSERT_EQ(1, this->controller().GetEntryCount());
403 EXPECT_EQ(kGoogleURL, controller().GetActiveEntry()->GetURL().spec()); 428 EXPECT_EQ(kGoogleURL, this->controller().GetActiveEntry()->GetURL().spec());
404 429
405 // A report should have been sent. 430 // A report should have been sent.
406 EXPECT_EQ(1u, ui_manager_->GetDetails()->size()); 431 EXPECT_EQ(1u, this->ui_manager_->GetDetails()->size());
407 ui_manager_->GetDetails()->clear(); 432 this->ui_manager_->GetDetails()->clear();
408 } 433 }
409 434
410 // Tests showing a blocking page for a page that contains multiple malware 435 // Tests showing a blocking page for a page that contains multiple malware
411 // subresources and proceeding through the first interstitial, but not the next. 436 // subresources and proceeding through the first interstitial, but not the next.
412 TEST_F(SafeBrowsingBlockingPageTest, 437 TYPED_TEST(SafeBrowsingBlockingPageTest,
413 PageWithMultipleMalwareResourceProceedThenDontProceed) { 438 PageWithMultipleMalwareResourceProceedThenDontProceed) {
414 // Enable malware reports. 439 // Enable malware reports.
415 Profile* profile = Profile::FromBrowserContext( 440 Profile* profile = Profile::FromBrowserContext(
416 web_contents()->GetBrowserContext()); 441 this->web_contents()->GetBrowserContext());
417 profile->GetPrefs()->SetBoolean(prefs::kSafeBrowsingReportingEnabled, true); 442 profile->GetPrefs()->SetBoolean(prefs::kSafeBrowsingReportingEnabled, true);
418 443
419 // Navigate somewhere. 444 // Navigate somewhere.
420 Navigate(kGoogleURL, 1); 445 this->Navigate(kGoogleURL, 1);
421 446
422 // Navigate somewhere else. 447 // Navigate somewhere else.
423 Navigate(kGoodURL, 2); 448 this->Navigate(kGoodURL, 2);
424 449
425 // Simulate that page loading a bad-resource triggering an interstitial. 450 // Simulate that page loading a bad-resource triggering an interstitial.
426 ShowInterstitial(true, kBadURL); 451 this->ShowInterstitial(true, kBadURL);
427 452
428 // More bad resources loading causing more interstitials. The new 453 // More bad resources loading causing more interstitials. The new
429 // interstitials should be queued. 454 // interstitials should be queued.
430 ShowInterstitial(true, kBadURL2); 455 this->ShowInterstitial(true, kBadURL2);
431 ShowInterstitial(true, kBadURL3); 456 this->ShowInterstitial(true, kBadURL3);
432 457
433 SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage(); 458 SafeBrowsingBlockingPage* sb_interstitial =
459 this->GetSafeBrowsingBlockingPage();
434 ASSERT_TRUE(sb_interstitial); 460 ASSERT_TRUE(sb_interstitial);
435 461
436 // Proceed through the 1st interstitial. 462 // Proceed through the 1st interstitial.
437 ProceedThroughInterstitial(sb_interstitial); 463 this->ProceedThroughInterstitial(sb_interstitial);
438 EXPECT_EQ(OK, user_response()); 464 EXPECT_EQ(this->OK, this->user_response());
439 465
440 // A report should have been sent. 466 // A report should have been sent.
441 EXPECT_EQ(1u, ui_manager_->GetDetails()->size()); 467 EXPECT_EQ(1u, this->ui_manager_->GetDetails()->size());
442 ui_manager_->GetDetails()->clear(); 468 this->ui_manager_->GetDetails()->clear();
443 469
444 ResetUserResponse(); 470 this->ResetUserResponse();
445 471
446 // We should land to a 2nd interstitial (aggregating all the malware resources 472 // We should land to a 2nd interstitial (aggregating all the malware resources
447 // loaded while the 1st interstitial was showing). 473 // loaded while the 1st interstitial was showing).
448 sb_interstitial = GetSafeBrowsingBlockingPage(); 474 sb_interstitial = this->GetSafeBrowsingBlockingPage();
449 ASSERT_TRUE(sb_interstitial); 475 ASSERT_TRUE(sb_interstitial);
450 476
451 // Don't proceed through the 2nd interstitial. 477 // Don't proceed through the 2nd interstitial.
452 DontProceedThroughSubresourceInterstitial(sb_interstitial); 478 this->DontProceedThroughSubresourceInterstitial(sb_interstitial);
453 EXPECT_EQ(CANCEL, user_response()); 479 EXPECT_EQ(this->CANCEL, this->user_response());
454 EXPECT_FALSE(GetSafeBrowsingBlockingPage()); 480 EXPECT_FALSE(this->GetSafeBrowsingBlockingPage());
455 481
456 // We did not proceed, we should be back to the first page, the 2nd one should 482 // We did not proceed, we should be back to the first page, the 2nd one should
457 // have been removed from the navigation controller. 483 // have been removed from the navigation controller.
458 ASSERT_EQ(1, controller().GetEntryCount()); 484 ASSERT_EQ(1, this->controller().GetEntryCount());
459 EXPECT_EQ(kGoogleURL, controller().GetActiveEntry()->GetURL().spec()); 485 EXPECT_EQ(kGoogleURL, this->controller().GetActiveEntry()->GetURL().spec());
460 486
461 // No report should have been sent -- we don't create a report the 487 // No report should have been sent -- we don't create a report the
462 // second time. 488 // second time.
463 EXPECT_EQ(0u, ui_manager_->GetDetails()->size()); 489 EXPECT_EQ(0u, this->ui_manager_->GetDetails()->size());
464 ui_manager_->GetDetails()->clear(); 490 this->ui_manager_->GetDetails()->clear();
465 } 491 }
466 492
467 // Tests showing a blocking page for a page that contains multiple malware 493 // Tests showing a blocking page for a page that contains multiple malware
468 // subresources and proceeding through the multiple interstitials. 494 // subresources and proceeding through the multiple interstitials.
469 TEST_F(SafeBrowsingBlockingPageTest, PageWithMultipleMalwareResourceProceed) { 495 TYPED_TEST(SafeBrowsingBlockingPageTest,
470 // Enable malware reports. 496 PageWithMultipleMalwareResourceProceed) {
471 Profile* profile = Profile::FromBrowserContext( 497 // Enable malware reports.
472 web_contents()->GetBrowserContext()); 498 Profile* profile = Profile::FromBrowserContext(
499 this->web_contents()->GetBrowserContext());
473 profile->GetPrefs()->SetBoolean(prefs::kSafeBrowsingReportingEnabled, true); 500 profile->GetPrefs()->SetBoolean(prefs::kSafeBrowsingReportingEnabled, true);
474 501
475 // Navigate somewhere else. 502 // Navigate somewhere else.
476 Navigate(kGoodURL, 1); 503 this->Navigate(kGoodURL, 1);
477 504
478 // Simulate that page loading a bad-resource triggering an interstitial. 505 // Simulate that page loading a bad-resource triggering an interstitial.
479 ShowInterstitial(true, kBadURL); 506 this->ShowInterstitial(true, kBadURL);
480 507
481 // More bad resources loading causing more interstitials. The new 508 // More bad resources loading causing more interstitials. The new
482 // interstitials should be queued. 509 // interstitials should be queued.
483 ShowInterstitial(true, kBadURL2); 510 this->ShowInterstitial(true, kBadURL2);
484 ShowInterstitial(true, kBadURL3); 511 this->ShowInterstitial(true, kBadURL3);
485 512
486 SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage(); 513 SafeBrowsingBlockingPage* sb_interstitial =
514 this->GetSafeBrowsingBlockingPage();
487 ASSERT_TRUE(sb_interstitial); 515 ASSERT_TRUE(sb_interstitial);
488 516
489 // Proceed through the 1st interstitial. 517 // Proceed through the 1st interstitial.
490 ProceedThroughInterstitial(sb_interstitial); 518 this->ProceedThroughInterstitial(sb_interstitial);
491 EXPECT_EQ(OK, user_response()); 519 EXPECT_EQ(this->OK, this->user_response());
492 520
493 // A report should have been sent. 521 // A report should have been sent.
494 EXPECT_EQ(1u, ui_manager_->GetDetails()->size()); 522 EXPECT_EQ(1u, this->ui_manager_->GetDetails()->size());
495 ui_manager_->GetDetails()->clear(); 523 this->ui_manager_->GetDetails()->clear();
496 524
497 ResetUserResponse(); 525 this->ResetUserResponse();
498 526
499 // We should land to a 2nd interstitial (aggregating all the malware resources 527 // We should land to a 2nd interstitial (aggregating all the malware resources
500 // loaded while the 1st interstitial was showing). 528 // loaded while the 1st interstitial was showing).
501 sb_interstitial = GetSafeBrowsingBlockingPage(); 529 sb_interstitial = this->GetSafeBrowsingBlockingPage();
502 ASSERT_TRUE(sb_interstitial); 530 ASSERT_TRUE(sb_interstitial);
503 531
504 // Proceed through the 2nd interstitial. 532 // Proceed through the 2nd interstitial.
505 ProceedThroughInterstitial(sb_interstitial); 533 this->ProceedThroughInterstitial(sb_interstitial);
506 EXPECT_EQ(OK, user_response()); 534 EXPECT_EQ(this->OK, this->user_response());
507 535
508 // We did proceed, we should be back to the initial page. 536 // We did proceed, we should be back to the initial page.
509 ASSERT_EQ(1, controller().GetEntryCount()); 537 ASSERT_EQ(1, this->controller().GetEntryCount());
510 EXPECT_EQ(kGoodURL, controller().GetActiveEntry()->GetURL().spec()); 538 EXPECT_EQ(kGoodURL, this->controller().GetActiveEntry()->GetURL().spec());
511 539
512 // No report should have been sent -- we don't create a report the 540 // No report should have been sent -- we don't create a report the
513 // second time. 541 // second time.
514 EXPECT_EQ(0u, ui_manager_->GetDetails()->size()); 542 EXPECT_EQ(0u, this->ui_manager_->GetDetails()->size());
515 ui_manager_->GetDetails()->clear(); 543 this->ui_manager_->GetDetails()->clear();
516 } 544 }
517 545
518 // Tests showing a blocking page then navigating back and forth to make sure the 546 // Tests showing a blocking page then navigating back and forth to make sure the
519 // controller entries are OK. http://crbug.com/17627 547 // controller entries are OK. http://crbug.com/17627
520 TEST_F(SafeBrowsingBlockingPageTest, NavigatingBackAndForth) { 548 TYPED_TEST(SafeBrowsingBlockingPageTest, NavigatingBackAndForth) {
521 // Enable malware reports. 549 // Enable malware reports.
522 Profile* profile = Profile::FromBrowserContext( 550 Profile* profile = Profile::FromBrowserContext(
523 web_contents()->GetBrowserContext()); 551 this->web_contents()->GetBrowserContext());
524 profile->GetPrefs()->SetBoolean(prefs::kSafeBrowsingReportingEnabled, true); 552 profile->GetPrefs()->SetBoolean(prefs::kSafeBrowsingReportingEnabled, true);
525 553
526 // Navigate somewhere. 554 // Navigate somewhere.
527 Navigate(kGoodURL, 1); 555 this->Navigate(kGoodURL, 1);
528 556
529 // Now navigate to a bad page triggerring an interstitial. 557 // Now navigate to a bad page triggerring an interstitial.
530 controller().LoadURL(GURL(kBadURL), content::Referrer(), 558 this->controller().LoadURL(GURL(kBadURL), content::Referrer(),
531 content::PAGE_TRANSITION_TYPED, std::string()); 559 content::PAGE_TRANSITION_TYPED, std::string());
532 ShowInterstitial(false, kBadURL); 560 this->ShowInterstitial(false, kBadURL);
533 SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage(); 561 SafeBrowsingBlockingPage* sb_interstitial =
562 this->GetSafeBrowsingBlockingPage();
534 ASSERT_TRUE(sb_interstitial); 563 ASSERT_TRUE(sb_interstitial);
535 564
536 // Proceed, then navigate back. 565 // Proceed, then navigate back.
537 ProceedThroughInterstitial(sb_interstitial); 566 this->ProceedThroughInterstitial(sb_interstitial);
538 Navigate(kBadURL, 2); // Commit the navigation. 567 this->Navigate(kBadURL, 2); // Commit the navigation.
539 GoBack(true); 568 this->GoBack(true);
540 569
541 // We are back on the good page. 570 // We are back on the good page.
542 sb_interstitial = GetSafeBrowsingBlockingPage(); 571 sb_interstitial = this->GetSafeBrowsingBlockingPage();
543 ASSERT_FALSE(sb_interstitial); 572 ASSERT_FALSE(sb_interstitial);
544 ASSERT_EQ(2, controller().GetEntryCount()); 573 ASSERT_EQ(2, this->controller().GetEntryCount());
545 EXPECT_EQ(kGoodURL, controller().GetActiveEntry()->GetURL().spec()); 574 EXPECT_EQ(kGoodURL, this->controller().GetActiveEntry()->GetURL().spec());
546 575
547 // Navigate forward to the malware URL. 576 // Navigate forward to the malware URL.
548 web_contents()->GetController().GoForward(); 577 this->web_contents()->GetController().GoForward();
549 ShowInterstitial(false, kBadURL); 578 this->ShowInterstitial(false, kBadURL);
550 sb_interstitial = GetSafeBrowsingBlockingPage(); 579 sb_interstitial = this->GetSafeBrowsingBlockingPage();
551 ASSERT_TRUE(sb_interstitial); 580 ASSERT_TRUE(sb_interstitial);
552 581
553 // Let's proceed and make sure everything is OK (bug 17627). 582 // Let's proceed and make sure everything is OK (bug 17627).
554 ProceedThroughInterstitial(sb_interstitial); 583 this->ProceedThroughInterstitial(sb_interstitial);
555 Navigate(kBadURL, 2); // Commit the navigation. 584 this->Navigate(kBadURL, 2); // Commit the navigation.
556 sb_interstitial = GetSafeBrowsingBlockingPage(); 585 sb_interstitial = this->GetSafeBrowsingBlockingPage();
557 ASSERT_FALSE(sb_interstitial); 586 ASSERT_FALSE(sb_interstitial);
558 ASSERT_EQ(2, controller().GetEntryCount()); 587 ASSERT_EQ(2, this->controller().GetEntryCount());
559 EXPECT_EQ(kBadURL, controller().GetActiveEntry()->GetURL().spec()); 588 EXPECT_EQ(kBadURL, this->controller().GetActiveEntry()->GetURL().spec());
560 589
561 // Two reports should have been sent. 590 // Two reports should have been sent.
562 EXPECT_EQ(2u, ui_manager_->GetDetails()->size()); 591 EXPECT_EQ(2u, this->ui_manager_->GetDetails()->size());
563 ui_manager_->GetDetails()->clear(); 592 this->ui_manager_->GetDetails()->clear();
564 } 593 }
565 594
566 // Tests that calling "don't proceed" after "proceed" has been called doesn't 595 // Tests that calling "don't proceed" after "proceed" has been called doesn't
567 // cause problems. http://crbug.com/30079 596 // cause problems. http://crbug.com/30079
568 TEST_F(SafeBrowsingBlockingPageTest, ProceedThenDontProceed) { 597 TYPED_TEST(SafeBrowsingBlockingPageTest, ProceedThenDontProceed) {
569 // Enable malware reports. 598 // Enable malware reports.
570 Profile* profile = Profile::FromBrowserContext( 599 Profile* profile = Profile::FromBrowserContext(
571 web_contents()->GetBrowserContext()); 600 this->web_contents()->GetBrowserContext());
572 profile->GetPrefs()->SetBoolean(prefs::kSafeBrowsingReportingEnabled, true); 601 profile->GetPrefs()->SetBoolean(prefs::kSafeBrowsingReportingEnabled, true);
573 602
574 // Start a load. 603 // Start a load.
575 controller().LoadURL(GURL(kBadURL), content::Referrer(), 604 this->controller().LoadURL(GURL(kBadURL), content::Referrer(),
576 content::PAGE_TRANSITION_TYPED, std::string()); 605 content::PAGE_TRANSITION_TYPED, std::string());
577 606
578 // Simulate the load causing a safe browsing interstitial to be shown. 607 // Simulate the load causing a safe browsing interstitial to be shown.
579 ShowInterstitial(false, kBadURL); 608 this->ShowInterstitial(false, kBadURL);
580 SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage(); 609 SafeBrowsingBlockingPage* sb_interstitial =
610 this->GetSafeBrowsingBlockingPage();
581 ASSERT_TRUE(sb_interstitial); 611 ASSERT_TRUE(sb_interstitial);
582 612
583 base::RunLoop().RunUntilIdle(); 613 base::RunLoop().RunUntilIdle();
584 614
585 // Simulate the user clicking "proceed" then "don't proceed" (before the 615 // Simulate the user clicking "proceed" then "don't proceed" (before the
586 // interstitial is shown). 616 // interstitial is shown).
587 sb_interstitial->interstitial_page_->Proceed(); 617 sb_interstitial->interstitial_page_->Proceed();
588 sb_interstitial->interstitial_page_->DontProceed(); 618 sb_interstitial->interstitial_page_->DontProceed();
589 // Proceed() and DontProceed() post a task to update the 619 // Proceed() and DontProceed() post a task to update the
590 // SafeBrowsingService::Client. 620 // SafeBrowsingService::Client.
591 base::RunLoop().RunUntilIdle(); 621 base::RunLoop().RunUntilIdle();
592 622
593 // The interstitial should be gone. 623 // The interstitial should be gone.
594 EXPECT_EQ(OK, user_response()); 624 EXPECT_EQ(this->OK, this->user_response());
595 EXPECT_FALSE(GetSafeBrowsingBlockingPage()); 625 EXPECT_FALSE(this->GetSafeBrowsingBlockingPage());
596 626
597 // Only one report should have been sent. 627 // Only one report should have been sent.
598 EXPECT_EQ(1u, ui_manager_->GetDetails()->size()); 628 EXPECT_EQ(1u, this->ui_manager_->GetDetails()->size());
599 ui_manager_->GetDetails()->clear(); 629 this->ui_manager_->GetDetails()->clear();
600 } 630 }
601 631
602 // Tests showing a blocking page for a malware page with reports disabled. 632 // Tests showing a blocking page for a malware page with reports disabled.
603 TEST_F(SafeBrowsingBlockingPageTest, MalwareReportsDisabled) { 633 TYPED_TEST(SafeBrowsingBlockingPageTest, MalwareReportsDisabled) {
604 // Disable malware reports. 634 // Disable malware reports.
605 Profile* profile = Profile::FromBrowserContext( 635 Profile* profile = Profile::FromBrowserContext(
606 web_contents()->GetBrowserContext()); 636 this->web_contents()->GetBrowserContext());
607 profile->GetPrefs()->SetBoolean(prefs::kSafeBrowsingReportingEnabled, false); 637 profile->GetPrefs()->SetBoolean(prefs::kSafeBrowsingReportingEnabled, false);
608 638
609 // Start a load. 639 // Start a load.
610 controller().LoadURL(GURL(kBadURL), content::Referrer(), 640 this->controller().LoadURL(GURL(kBadURL), content::Referrer(),
611 content::PAGE_TRANSITION_TYPED, std::string()); 641 content::PAGE_TRANSITION_TYPED, std::string());
612 642
613 // Simulate the load causing a safe browsing interstitial to be shown. 643 // Simulate the load causing a safe browsing interstitial to be shown.
614 ShowInterstitial(false, kBadURL); 644 this->ShowInterstitial(false, kBadURL);
615 SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage(); 645 SafeBrowsingBlockingPage* sb_interstitial =
646 this->GetSafeBrowsingBlockingPage();
616 ASSERT_TRUE(sb_interstitial); 647 ASSERT_TRUE(sb_interstitial);
617 648
618 base::RunLoop().RunUntilIdle(); 649 base::RunLoop().RunUntilIdle();
619 650
620 // Simulate the user clicking "don't proceed". 651 // Simulate the user clicking "don't proceed".
621 DontProceedThroughInterstitial(sb_interstitial); 652 this->DontProceedThroughInterstitial(sb_interstitial);
622 653
623 // The interstitial should be gone. 654 // The interstitial should be gone.
624 EXPECT_EQ(CANCEL, user_response()); 655 EXPECT_EQ(this->CANCEL, this->user_response());
625 EXPECT_FALSE(GetSafeBrowsingBlockingPage()); 656 EXPECT_FALSE(this->GetSafeBrowsingBlockingPage());
626 657
627 // We did not proceed, the pending entry should be gone. 658 // We did not proceed, the pending entry should be gone.
628 EXPECT_FALSE(controller().GetPendingEntry()); 659 EXPECT_FALSE(this->controller().GetPendingEntry());
629 660
630 // No report should have been sent. 661 // No report should have been sent.
631 EXPECT_EQ(0u, ui_manager_->GetDetails()->size()); 662 EXPECT_EQ(0u, this->ui_manager_->GetDetails()->size());
632 ui_manager_->GetDetails()->clear(); 663 this->ui_manager_->GetDetails()->clear();
633 } 664 }
634 665
635 // Test setting the malware report preferance 666 // Test setting the malware report preferance
636 TEST_F(SafeBrowsingBlockingPageTest, MalwareReports) { 667 TYPED_TEST(SafeBrowsingBlockingPageTest, MalwareReports) {
637 // Disable malware reports. 668 // Disable malware reports.
638 Profile* profile = Profile::FromBrowserContext( 669 Profile* profile = Profile::FromBrowserContext(
639 web_contents()->GetBrowserContext()); 670 this->web_contents()->GetBrowserContext());
640 profile->GetPrefs()->SetBoolean(prefs::kSafeBrowsingReportingEnabled, false); 671 profile->GetPrefs()->SetBoolean(prefs::kSafeBrowsingReportingEnabled, false);
641 672
642 // Start a load. 673 // Start a load.
643 controller().LoadURL(GURL(kBadURL), content::Referrer(), 674 this->controller().LoadURL(GURL(kBadURL), content::Referrer(),
644 content::PAGE_TRANSITION_TYPED, std::string()); 675 content::PAGE_TRANSITION_TYPED, std::string());
645 676
646 // Simulate the load causing a safe browsing interstitial to be shown. 677 // Simulate the load causing a safe browsing interstitial to be shown.
647 ShowInterstitial(false, kBadURL); 678 this->ShowInterstitial(false, kBadURL);
648 SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage(); 679 SafeBrowsingBlockingPage* sb_interstitial =
680 this->GetSafeBrowsingBlockingPage();
649 ASSERT_TRUE(sb_interstitial); 681 ASSERT_TRUE(sb_interstitial);
650 682
651 base::RunLoop().RunUntilIdle(); 683 base::RunLoop().RunUntilIdle();
652 684
653 EXPECT_FALSE(profile->GetPrefs()->GetBoolean( 685 EXPECT_FALSE(profile->GetPrefs()->GetBoolean(
654 prefs::kSafeBrowsingReportingEnabled)); 686 prefs::kSafeBrowsingReportingEnabled));
655 687
656 // Simulate the user check the report agreement checkbox. 688 // Simulate the user check the report agreement checkbox.
657 sb_interstitial->SetReportingPreference(true); 689 sb_interstitial->SetReportingPreference(true);
658 690
659 EXPECT_TRUE(profile->GetPrefs()->GetBoolean( 691 EXPECT_TRUE(profile->GetPrefs()->GetBoolean(
660 prefs::kSafeBrowsingReportingEnabled)); 692 prefs::kSafeBrowsingReportingEnabled));
661 693
662 // Simulate the user uncheck the report agreement checkbox. 694 // Simulate the user uncheck the report agreement checkbox.
663 sb_interstitial->SetReportingPreference(false); 695 sb_interstitial->SetReportingPreference(false);
664 696
665 EXPECT_FALSE(profile->GetPrefs()->GetBoolean( 697 EXPECT_FALSE(profile->GetPrefs()->GetBoolean(
666 prefs::kSafeBrowsingReportingEnabled)); 698 prefs::kSafeBrowsingReportingEnabled));
667 } 699 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698