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 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
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 Loading... | |
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( | 262 profile->GetPrefs()->SetBoolean( |
243 prefs::kSafeBrowsingExtendedReportingEnabled, true); | 263 prefs::kSafeBrowsingExtendedReportingEnabled, true); |
244 | 264 |
245 // Start a load. | 265 // Start a load. |
246 controller().LoadURL(GURL(kBadURL), content::Referrer(), | 266 this->controller().LoadURL(GURL(kBadURL), content::Referrer(), |
247 content::PAGE_TRANSITION_TYPED, std::string()); | 267 content::PAGE_TRANSITION_TYPED, std::string()); |
248 | 268 |
249 | 269 |
250 // Simulate the load causing a safe browsing interstitial to be shown. | 270 // Simulate the load causing a safe browsing interstitial to be shown. |
251 ShowInterstitial(false, kBadURL); | 271 this->ShowInterstitial(false, kBadURL); |
252 SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage(); | 272 SafeBrowsingBlockingPage* sb_interstitial = |
273 this->GetSafeBrowsingBlockingPage(); | |
253 ASSERT_TRUE(sb_interstitial); | 274 ASSERT_TRUE(sb_interstitial); |
254 | 275 |
255 base::RunLoop().RunUntilIdle(); | 276 base::RunLoop().RunUntilIdle(); |
256 | 277 |
257 // Simulate the user clicking "don't proceed". | 278 // Simulate the user clicking "don't proceed". |
258 DontProceedThroughInterstitial(sb_interstitial); | 279 this->DontProceedThroughInterstitial(sb_interstitial); |
259 | 280 |
260 // The interstitial should be gone. | 281 // The interstitial should be gone. |
261 EXPECT_EQ(CANCEL, user_response()); | 282 EXPECT_EQ(this->CANCEL, this->user_response()); |
262 EXPECT_FALSE(GetSafeBrowsingBlockingPage()); | 283 EXPECT_FALSE(this->GetSafeBrowsingBlockingPage()); |
263 | 284 |
264 // We did not proceed, the pending entry should be gone. | 285 // We did not proceed, the pending entry should be gone. |
265 EXPECT_FALSE(controller().GetPendingEntry()); | 286 EXPECT_FALSE(this->controller().GetPendingEntry()); |
266 | 287 |
267 // A report should have been sent. | 288 // A report should have been sent. |
268 EXPECT_EQ(1u, ui_manager_->GetDetails()->size()); | 289 EXPECT_EQ(1u, this->ui_manager_->GetDetails()->size()); |
269 ui_manager_->GetDetails()->clear(); | 290 this->ui_manager_->GetDetails()->clear(); |
270 } | 291 } |
271 | 292 |
272 // Tests showing a blocking page for a malware page and then proceeding. | 293 // Tests showing a blocking page for a malware page and then proceeding. |
273 TEST_F(SafeBrowsingBlockingPageTest, MalwarePageProceed) { | 294 TYPED_TEST(SafeBrowsingBlockingPageTest, MalwarePageProceed) { |
274 // Enable malware reports. | 295 // Enable malware reports. |
275 Profile* profile = Profile::FromBrowserContext( | 296 Profile* profile = Profile::FromBrowserContext( |
276 web_contents()->GetBrowserContext()); | 297 this->web_contents()->GetBrowserContext()); |
277 profile->GetPrefs()->SetBoolean( | 298 profile->GetPrefs()->SetBoolean( |
278 prefs::kSafeBrowsingExtendedReportingEnabled, true); | 299 prefs::kSafeBrowsingExtendedReportingEnabled, true); |
279 | 300 |
280 // Start a load. | 301 // Start a load. |
281 controller().LoadURL(GURL(kBadURL), content::Referrer(), | 302 this->controller().LoadURL(GURL(kBadURL), content::Referrer(), |
282 content::PAGE_TRANSITION_TYPED, std::string()); | 303 content::PAGE_TRANSITION_TYPED, std::string()); |
283 | 304 |
284 // Simulate the load causing a safe browsing interstitial to be shown. | 305 // Simulate the load causing a safe browsing interstitial to be shown. |
285 ShowInterstitial(false, kBadURL); | 306 this->ShowInterstitial(false, kBadURL); |
286 SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage(); | 307 SafeBrowsingBlockingPage* sb_interstitial = |
308 this->GetSafeBrowsingBlockingPage(); | |
287 ASSERT_TRUE(sb_interstitial); | 309 ASSERT_TRUE(sb_interstitial); |
288 | 310 |
289 // Simulate the user clicking "proceed". | 311 // Simulate the user clicking "proceed". |
290 ProceedThroughInterstitial(sb_interstitial); | 312 this->ProceedThroughInterstitial(sb_interstitial); |
291 | 313 |
292 // The interstitial is shown until the navigation commits. | 314 // The interstitial is shown until the navigation commits. |
293 ASSERT_TRUE(InterstitialPage::GetInterstitialPage(web_contents())); | 315 ASSERT_TRUE(InterstitialPage::GetInterstitialPage(this->web_contents())); |
294 // Commit the navigation. | 316 // Commit the navigation. |
295 Navigate(kBadURL, 1); | 317 this->Navigate(kBadURL, 1); |
296 // The interstitial should be gone now. | 318 // The interstitial should be gone now. |
297 ASSERT_FALSE(InterstitialPage::GetInterstitialPage(web_contents())); | 319 ASSERT_FALSE(InterstitialPage::GetInterstitialPage(this->web_contents())); |
298 | 320 |
299 // A report should have been sent. | 321 // A report should have been sent. |
300 EXPECT_EQ(1u, ui_manager_->GetDetails()->size()); | 322 EXPECT_EQ(1u, this->ui_manager_->GetDetails()->size()); |
301 ui_manager_->GetDetails()->clear(); | 323 this->ui_manager_->GetDetails()->clear(); |
302 } | 324 } |
303 | 325 |
304 // Tests showing a blocking page for a page that contains malware subresources | 326 // Tests showing a blocking page for a page that contains malware subresources |
305 // and not proceeding. | 327 // and not proceeding. |
306 TEST_F(SafeBrowsingBlockingPageTest, PageWithMalwareResourceDontProceed) { | 328 TYPED_TEST(SafeBrowsingBlockingPageTest, PageWithMalwareResourceDontProceed) { |
307 // Enable malware reports. | 329 // Enable malware reports. |
308 Profile* profile = Profile::FromBrowserContext( | 330 Profile* profile = Profile::FromBrowserContext( |
309 web_contents()->GetBrowserContext()); | 331 this->web_contents()->GetBrowserContext()); |
310 profile->GetPrefs()->SetBoolean( | 332 profile->GetPrefs()->SetBoolean( |
311 prefs::kSafeBrowsingExtendedReportingEnabled, true); | 333 prefs::kSafeBrowsingExtendedReportingEnabled, true); |
312 | 334 |
313 // Navigate somewhere. | 335 // Navigate somewhere. |
314 Navigate(kGoogleURL, 1); | 336 this->Navigate(kGoogleURL, 1); |
315 | 337 |
316 // Navigate somewhere else. | 338 // Navigate somewhere else. |
317 Navigate(kGoodURL, 2); | 339 this->Navigate(kGoodURL, 2); |
318 | 340 |
319 // Simulate that page loading a bad-resource triggering an interstitial. | 341 // Simulate that page loading a bad-resource triggering an interstitial. |
320 ShowInterstitial(true, kBadURL); | 342 this->ShowInterstitial(true, kBadURL); |
321 | 343 |
322 SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage(); | 344 SafeBrowsingBlockingPage* sb_interstitial = |
345 this->GetSafeBrowsingBlockingPage(); | |
323 ASSERT_TRUE(sb_interstitial); | 346 ASSERT_TRUE(sb_interstitial); |
324 | 347 |
325 // Simulate the user clicking "don't proceed". | 348 // Simulate the user clicking "don't proceed". |
326 DontProceedThroughSubresourceInterstitial(sb_interstitial); | 349 this->DontProceedThroughSubresourceInterstitial(sb_interstitial); |
327 EXPECT_EQ(CANCEL, user_response()); | 350 EXPECT_EQ(this->CANCEL, this->user_response()); |
328 EXPECT_FALSE(GetSafeBrowsingBlockingPage()); | 351 EXPECT_FALSE(this->GetSafeBrowsingBlockingPage()); |
329 | 352 |
330 // We did not proceed, we should be back to the first page, the 2nd one should | 353 // We did not proceed, we should be back to the first page, the 2nd one should |
331 // have been removed from the navigation controller. | 354 // have been removed from the navigation controller. |
332 ASSERT_EQ(1, controller().GetEntryCount()); | 355 ASSERT_EQ(1, this->controller().GetEntryCount()); |
333 EXPECT_EQ(kGoogleURL, controller().GetActiveEntry()->GetURL().spec()); | 356 EXPECT_EQ(kGoogleURL, this->controller().GetActiveEntry()->GetURL().spec()); |
334 | 357 |
335 // A report should have been sent. | 358 // A report should have been sent. |
336 EXPECT_EQ(1u, ui_manager_->GetDetails()->size()); | 359 EXPECT_EQ(1u, this->ui_manager_->GetDetails()->size()); |
337 ui_manager_->GetDetails()->clear(); | 360 this->ui_manager_->GetDetails()->clear(); |
338 } | 361 } |
339 | 362 |
340 // Tests showing a blocking page for a page that contains malware subresources | 363 // Tests showing a blocking page for a page that contains malware subresources |
341 // and proceeding. | 364 // and proceeding. |
342 TEST_F(SafeBrowsingBlockingPageTest, PageWithMalwareResourceProceed) { | 365 TYPED_TEST(SafeBrowsingBlockingPageTest, PageWithMalwareResourceProceed) { |
343 // Enable malware reports. | 366 // Enable malware reports. |
344 Profile* profile = Profile::FromBrowserContext( | 367 Profile* profile = Profile::FromBrowserContext( |
345 web_contents()->GetBrowserContext()); | 368 this->web_contents()->GetBrowserContext()); |
346 profile->GetPrefs()->SetBoolean( | 369 profile->GetPrefs()->SetBoolean( |
347 prefs::kSafeBrowsingExtendedReportingEnabled, true); | 370 prefs::kSafeBrowsingExtendedReportingEnabled, true); |
348 | 371 |
349 // Navigate somewhere. | 372 // Navigate somewhere. |
350 Navigate(kGoodURL, 1); | 373 this->Navigate(kGoodURL, 1); |
351 | 374 |
352 // Simulate that page loading a bad-resource triggering an interstitial. | 375 // Simulate that page loading a bad-resource triggering an interstitial. |
353 ShowInterstitial(true, kBadURL); | 376 this->ShowInterstitial(true, kBadURL); |
354 | 377 |
355 SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage(); | 378 SafeBrowsingBlockingPage* sb_interstitial = |
379 this->GetSafeBrowsingBlockingPage(); | |
356 ASSERT_TRUE(sb_interstitial); | 380 ASSERT_TRUE(sb_interstitial); |
357 | 381 |
358 // Simulate the user clicking "proceed". | 382 // Simulate the user clicking "proceed". |
359 ProceedThroughInterstitial(sb_interstitial); | 383 this->ProceedThroughInterstitial(sb_interstitial); |
360 EXPECT_EQ(OK, user_response()); | 384 EXPECT_EQ(this->OK, this->user_response()); |
361 EXPECT_FALSE(GetSafeBrowsingBlockingPage()); | 385 EXPECT_FALSE(this->GetSafeBrowsingBlockingPage()); |
362 | 386 |
363 // We did proceed, we should be back to showing the page. | 387 // We did proceed, we should be back to showing the page. |
364 ASSERT_EQ(1, controller().GetEntryCount()); | 388 ASSERT_EQ(1, this->controller().GetEntryCount()); |
365 EXPECT_EQ(kGoodURL, controller().GetActiveEntry()->GetURL().spec()); | 389 EXPECT_EQ(kGoodURL, this->controller().GetActiveEntry()->GetURL().spec()); |
366 | 390 |
367 // A report should have been sent. | 391 // A report should have been sent. |
368 EXPECT_EQ(1u, ui_manager_->GetDetails()->size()); | 392 EXPECT_EQ(1u, this->ui_manager_->GetDetails()->size()); |
369 ui_manager_->GetDetails()->clear(); | 393 this->ui_manager_->GetDetails()->clear(); |
370 } | 394 } |
371 | 395 |
372 // Tests showing a blocking page for a page that contains multiple malware | 396 // Tests showing a blocking page for a page that contains multiple malware |
373 // subresources and not proceeding. This just tests that the extra malware | 397 // subresources and not proceeding. This just tests that the extra malware |
374 // subresources (which trigger queued interstitial pages) do not break anything. | 398 // subresources (which trigger queued interstitial pages) do not break anything. |
375 TEST_F(SafeBrowsingBlockingPageTest, | 399 TYPED_TEST(SafeBrowsingBlockingPageTest, |
376 PageWithMultipleMalwareResourceDontProceed) { | 400 PageWithMultipleMalwareResourceDontProceed) { |
377 // Enable malware reports. | 401 // Enable malware reports. |
378 Profile* profile = Profile::FromBrowserContext( | 402 Profile* profile = Profile::FromBrowserContext( |
379 web_contents()->GetBrowserContext()); | 403 this->web_contents()->GetBrowserContext()); |
380 profile->GetPrefs()->SetBoolean( | 404 profile->GetPrefs()->SetBoolean( |
381 prefs::kSafeBrowsingExtendedReportingEnabled, true); | 405 prefs::kSafeBrowsingExtendedReportingEnabled, true); |
382 | 406 |
383 // Navigate somewhere. | 407 // Navigate somewhere. |
384 Navigate(kGoogleURL, 1); | 408 this->Navigate(kGoogleURL, 1); |
385 | 409 |
386 // Navigate somewhere else. | 410 // Navigate somewhere else. |
387 Navigate(kGoodURL, 2); | 411 this->Navigate(kGoodURL, 2); |
388 | 412 |
389 // Simulate that page loading a bad-resource triggering an interstitial. | 413 // Simulate that page loading a bad-resource triggering an interstitial. |
390 ShowInterstitial(true, kBadURL); | 414 this->ShowInterstitial(true, kBadURL); |
391 | 415 |
392 // More bad resources loading causing more interstitials. The new | 416 // More bad resources loading causing more interstitials. The new |
393 // interstitials should be queued. | 417 // interstitials should be queued. |
394 ShowInterstitial(true, kBadURL2); | 418 this->ShowInterstitial(true, kBadURL2); |
395 ShowInterstitial(true, kBadURL3); | 419 this->ShowInterstitial(true, kBadURL3); |
396 | 420 |
397 SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage(); | 421 SafeBrowsingBlockingPage* sb_interstitial = |
422 this->GetSafeBrowsingBlockingPage(); | |
398 ASSERT_TRUE(sb_interstitial); | 423 ASSERT_TRUE(sb_interstitial); |
399 | 424 |
400 // Simulate the user clicking "don't proceed". | 425 // Simulate the user clicking "don't proceed". |
401 DontProceedThroughSubresourceInterstitial(sb_interstitial); | 426 this->DontProceedThroughSubresourceInterstitial(sb_interstitial); |
402 EXPECT_EQ(CANCEL, user_response()); | 427 EXPECT_EQ(this->CANCEL, this->user_response()); |
403 EXPECT_FALSE(GetSafeBrowsingBlockingPage()); | 428 EXPECT_FALSE(this->GetSafeBrowsingBlockingPage()); |
404 | 429 |
405 // We did not proceed, we should be back to the first page, the 2nd one should | 430 // We did not proceed, we should be back to the first page, the 2nd one should |
406 // have been removed from the navigation controller. | 431 // have been removed from the navigation controller. |
407 ASSERT_EQ(1, controller().GetEntryCount()); | 432 ASSERT_EQ(1, this->controller().GetEntryCount()); |
408 EXPECT_EQ(kGoogleURL, controller().GetActiveEntry()->GetURL().spec()); | 433 EXPECT_EQ(kGoogleURL, this->controller().GetActiveEntry()->GetURL().spec()); |
409 | 434 |
410 // A report should have been sent. | 435 // A report should have been sent. |
411 EXPECT_EQ(1u, ui_manager_->GetDetails()->size()); | 436 EXPECT_EQ(1u, this->ui_manager_->GetDetails()->size()); |
412 ui_manager_->GetDetails()->clear(); | 437 this->ui_manager_->GetDetails()->clear(); |
413 } | 438 } |
414 | 439 |
415 // Tests showing a blocking page for a page that contains multiple malware | 440 // Tests showing a blocking page for a page that contains multiple malware |
416 // subresources and proceeding through the first interstitial, but not the next. | 441 // subresources and proceeding through the first interstitial, but not the next. |
417 TEST_F(SafeBrowsingBlockingPageTest, | 442 TYPED_TEST(SafeBrowsingBlockingPageTest, |
418 PageWithMultipleMalwareResourceProceedThenDontProceed) { | 443 PageWithMultipleMalwareResourceProceedThenDontProceed) { |
419 // Enable malware reports. | 444 // Enable malware reports. |
420 Profile* profile = Profile::FromBrowserContext( | 445 Profile* profile = Profile::FromBrowserContext( |
421 web_contents()->GetBrowserContext()); | 446 this->web_contents()->GetBrowserContext()); |
422 profile->GetPrefs()->SetBoolean( | 447 profile->GetPrefs()->SetBoolean( |
423 prefs::kSafeBrowsingExtendedReportingEnabled, true); | 448 prefs::kSafeBrowsingExtendedReportingEnabled, true); |
424 | 449 |
425 // Navigate somewhere. | 450 // Navigate somewhere. |
426 Navigate(kGoogleURL, 1); | 451 this->Navigate(kGoogleURL, 1); |
427 | 452 |
428 // Navigate somewhere else. | 453 // Navigate somewhere else. |
429 Navigate(kGoodURL, 2); | 454 this->Navigate(kGoodURL, 2); |
430 | 455 |
431 // Simulate that page loading a bad-resource triggering an interstitial. | 456 // Simulate that page loading a bad-resource triggering an interstitial. |
432 ShowInterstitial(true, kBadURL); | 457 this->ShowInterstitial(true, kBadURL); |
433 | 458 |
434 // More bad resources loading causing more interstitials. The new | 459 // More bad resources loading causing more interstitials. The new |
435 // interstitials should be queued. | 460 // interstitials should be queued. |
436 ShowInterstitial(true, kBadURL2); | 461 this->ShowInterstitial(true, kBadURL2); |
437 ShowInterstitial(true, kBadURL3); | 462 this->ShowInterstitial(true, kBadURL3); |
438 | 463 |
439 SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage(); | 464 SafeBrowsingBlockingPage* sb_interstitial = |
465 this->GetSafeBrowsingBlockingPage(); | |
440 ASSERT_TRUE(sb_interstitial); | 466 ASSERT_TRUE(sb_interstitial); |
441 | 467 |
442 // Proceed through the 1st interstitial. | 468 // Proceed through the 1st interstitial. |
443 ProceedThroughInterstitial(sb_interstitial); | 469 this->ProceedThroughInterstitial(sb_interstitial); |
444 EXPECT_EQ(OK, user_response()); | 470 EXPECT_EQ(this->OK, this->user_response()); |
445 | 471 |
446 // A report should have been sent. | 472 // A report should have been sent. |
447 EXPECT_EQ(1u, ui_manager_->GetDetails()->size()); | 473 EXPECT_EQ(1u, this->ui_manager_->GetDetails()->size()); |
448 ui_manager_->GetDetails()->clear(); | 474 this->ui_manager_->GetDetails()->clear(); |
449 | 475 |
450 ResetUserResponse(); | 476 this->ResetUserResponse(); |
451 | 477 |
452 // We should land to a 2nd interstitial (aggregating all the malware resources | 478 // We should land to a 2nd interstitial (aggregating all the malware resources |
453 // loaded while the 1st interstitial was showing). | 479 // loaded while the 1st interstitial was showing). |
454 sb_interstitial = GetSafeBrowsingBlockingPage(); | 480 sb_interstitial = this->GetSafeBrowsingBlockingPage(); |
455 ASSERT_TRUE(sb_interstitial); | 481 ASSERT_TRUE(sb_interstitial); |
456 | 482 |
457 // Don't proceed through the 2nd interstitial. | 483 // Don't proceed through the 2nd interstitial. |
458 DontProceedThroughSubresourceInterstitial(sb_interstitial); | 484 this->DontProceedThroughSubresourceInterstitial(sb_interstitial); |
459 EXPECT_EQ(CANCEL, user_response()); | 485 EXPECT_EQ(this->CANCEL, this->user_response()); |
460 EXPECT_FALSE(GetSafeBrowsingBlockingPage()); | 486 EXPECT_FALSE(this->GetSafeBrowsingBlockingPage()); |
461 | 487 |
462 // We did not proceed, we should be back to the first page, the 2nd one should | 488 // We did not proceed, we should be back to the first page, the 2nd one should |
463 // have been removed from the navigation controller. | 489 // have been removed from the navigation controller. |
464 ASSERT_EQ(1, controller().GetEntryCount()); | 490 ASSERT_EQ(1, this->controller().GetEntryCount()); |
465 EXPECT_EQ(kGoogleURL, controller().GetActiveEntry()->GetURL().spec()); | 491 EXPECT_EQ(kGoogleURL, this->controller().GetActiveEntry()->GetURL().spec()); |
466 | 492 |
467 // No report should have been sent -- we don't create a report the | 493 // No report should have been sent -- we don't create a report the |
468 // second time. | 494 // second time. |
469 EXPECT_EQ(0u, ui_manager_->GetDetails()->size()); | 495 EXPECT_EQ(0u, this->ui_manager_->GetDetails()->size()); |
470 ui_manager_->GetDetails()->clear(); | 496 this->ui_manager_->GetDetails()->clear(); |
471 } | 497 } |
472 | 498 |
473 // Tests showing a blocking page for a page that contains multiple malware | 499 // Tests showing a blocking page for a page that contains multiple malware |
474 // subresources and proceeding through the multiple interstitials. | 500 // subresources and proceeding through the multiple interstitials. |
475 TEST_F(SafeBrowsingBlockingPageTest, PageWithMultipleMalwareResourceProceed) { | 501 TYPED_TEST(SafeBrowsingBlockingPageTest, |
476 // Enable malware reports. | 502 PageWithMultipleMalwareResourceProceed) { |
477 Profile* profile = Profile::FromBrowserContext( | 503 // Enable malware reports. |
478 web_contents()->GetBrowserContext()); | 504 Profile* profile = Profile::FromBrowserContext( |
505 this->web_contents()->GetBrowserContext()); | |
479 profile->GetPrefs()->SetBoolean( | 506 profile->GetPrefs()->SetBoolean( |
480 prefs::kSafeBrowsingExtendedReportingEnabled, true); | 507 prefs::kSafeBrowsingExtendedReportingEnabled, true); |
481 | 508 |
482 // Navigate somewhere else. | 509 // Navigate somewhere else. |
483 Navigate(kGoodURL, 1); | 510 this->Navigate(kGoodURL, 1); |
484 | 511 |
485 // Simulate that page loading a bad-resource triggering an interstitial. | 512 // Simulate that page loading a bad-resource triggering an interstitial. |
486 ShowInterstitial(true, kBadURL); | 513 this->ShowInterstitial(true, kBadURL); |
487 | 514 |
488 // More bad resources loading causing more interstitials. The new | 515 // More bad resources loading causing more interstitials. The new |
489 // interstitials should be queued. | 516 // interstitials should be queued. |
490 ShowInterstitial(true, kBadURL2); | 517 this->ShowInterstitial(true, kBadURL2); |
491 ShowInterstitial(true, kBadURL3); | 518 this->ShowInterstitial(true, kBadURL3); |
492 | 519 |
493 SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage(); | 520 SafeBrowsingBlockingPage* sb_interstitial = |
521 this->GetSafeBrowsingBlockingPage(); | |
494 ASSERT_TRUE(sb_interstitial); | 522 ASSERT_TRUE(sb_interstitial); |
495 | 523 |
496 // Proceed through the 1st interstitial. | 524 // Proceed through the 1st interstitial. |
497 ProceedThroughInterstitial(sb_interstitial); | 525 this->ProceedThroughInterstitial(sb_interstitial); |
498 EXPECT_EQ(OK, user_response()); | 526 EXPECT_EQ(this->OK, this->user_response()); |
499 | 527 |
500 // A report should have been sent. | 528 // A report should have been sent. |
501 EXPECT_EQ(1u, ui_manager_->GetDetails()->size()); | 529 EXPECT_EQ(1u, this->ui_manager_->GetDetails()->size()); |
502 ui_manager_->GetDetails()->clear(); | 530 this->ui_manager_->GetDetails()->clear(); |
503 | 531 |
504 ResetUserResponse(); | 532 this->ResetUserResponse(); |
505 | 533 |
506 // We should land to a 2nd interstitial (aggregating all the malware resources | 534 // We should land to a 2nd interstitial (aggregating all the malware resources |
507 // loaded while the 1st interstitial was showing). | 535 // loaded while the 1st interstitial was showing). |
508 sb_interstitial = GetSafeBrowsingBlockingPage(); | 536 sb_interstitial = this->GetSafeBrowsingBlockingPage(); |
509 ASSERT_TRUE(sb_interstitial); | 537 ASSERT_TRUE(sb_interstitial); |
510 | 538 |
511 // Proceed through the 2nd interstitial. | 539 // Proceed through the 2nd interstitial. |
512 ProceedThroughInterstitial(sb_interstitial); | 540 this->ProceedThroughInterstitial(sb_interstitial); |
513 EXPECT_EQ(OK, user_response()); | 541 EXPECT_EQ(this->OK, this->user_response()); |
514 | 542 |
515 // We did proceed, we should be back to the initial page. | 543 // We did proceed, we should be back to the initial page. |
516 ASSERT_EQ(1, controller().GetEntryCount()); | 544 ASSERT_EQ(1, this->controller().GetEntryCount()); |
517 EXPECT_EQ(kGoodURL, controller().GetActiveEntry()->GetURL().spec()); | 545 EXPECT_EQ(kGoodURL, this->controller().GetActiveEntry()->GetURL().spec()); |
518 | 546 |
519 // No report should have been sent -- we don't create a report the | 547 // No report should have been sent -- we don't create a report the |
520 // second time. | 548 // second time. |
521 EXPECT_EQ(0u, ui_manager_->GetDetails()->size()); | 549 EXPECT_EQ(0u, this->ui_manager_->GetDetails()->size()); |
522 ui_manager_->GetDetails()->clear(); | 550 this->ui_manager_->GetDetails()->clear(); |
523 } | 551 } |
524 | 552 |
525 // Tests showing a blocking page then navigating back and forth to make sure the | 553 // Tests showing a blocking page then navigating back and forth to make sure the |
526 // controller entries are OK. http://crbug.com/17627 | 554 // controller entries are OK. http://crbug.com/17627 |
527 TEST_F(SafeBrowsingBlockingPageTest, NavigatingBackAndForth) { | 555 TYPED_TEST(SafeBrowsingBlockingPageTest, NavigatingBackAndForth) { |
528 // Enable malware reports. | 556 // Enable malware reports. |
529 Profile* profile = Profile::FromBrowserContext( | 557 Profile* profile = Profile::FromBrowserContext( |
530 web_contents()->GetBrowserContext()); | 558 this->web_contents()->GetBrowserContext()); |
531 profile->GetPrefs()->SetBoolean( | 559 profile->GetPrefs()->SetBoolean( |
532 prefs::kSafeBrowsingExtendedReportingEnabled, true); | 560 prefs::kSafeBrowsingExtendedReportingEnabled, true); |
533 | 561 |
534 // Navigate somewhere. | 562 // Navigate somewhere. |
535 Navigate(kGoodURL, 1); | 563 this->Navigate(kGoodURL, 1); |
536 | 564 |
537 // Now navigate to a bad page triggerring an interstitial. | 565 // Now navigate to a bad page triggerring an interstitial. |
538 controller().LoadURL(GURL(kBadURL), content::Referrer(), | 566 this->controller().LoadURL(GURL(kBadURL), content::Referrer(), |
539 content::PAGE_TRANSITION_TYPED, std::string()); | 567 content::PAGE_TRANSITION_TYPED, std::string()); |
540 ShowInterstitial(false, kBadURL); | 568 this->ShowInterstitial(false, kBadURL); |
541 SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage(); | 569 SafeBrowsingBlockingPage* sb_interstitial = |
570 this->GetSafeBrowsingBlockingPage(); | |
542 ASSERT_TRUE(sb_interstitial); | 571 ASSERT_TRUE(sb_interstitial); |
543 | 572 |
544 // Proceed, then navigate back. | 573 // Proceed, then navigate back. |
545 ProceedThroughInterstitial(sb_interstitial); | 574 this->ProceedThroughInterstitial(sb_interstitial); |
546 Navigate(kBadURL, 2); // Commit the navigation. | 575 this->Navigate(kBadURL, 2); // Commit the navigation. |
547 GoBack(true); | 576 this->GoBack(true); |
548 | 577 |
549 // We are back on the good page. | 578 // We are back on the good page. |
550 sb_interstitial = GetSafeBrowsingBlockingPage(); | 579 sb_interstitial = this->GetSafeBrowsingBlockingPage(); |
551 ASSERT_FALSE(sb_interstitial); | 580 ASSERT_FALSE(sb_interstitial); |
552 ASSERT_EQ(2, controller().GetEntryCount()); | 581 ASSERT_EQ(2, this->controller().GetEntryCount()); |
553 EXPECT_EQ(kGoodURL, controller().GetActiveEntry()->GetURL().spec()); | 582 EXPECT_EQ(kGoodURL, this->controller().GetActiveEntry()->GetURL().spec()); |
554 | 583 |
555 // Navigate forward to the malware URL. | 584 // Navigate forward to the malware URL. |
556 web_contents()->GetController().GoForward(); | 585 this->web_contents()->GetController().GoForward(); |
557 ShowInterstitial(false, kBadURL); | 586 this->ShowInterstitial(false, kBadURL); |
558 sb_interstitial = GetSafeBrowsingBlockingPage(); | 587 sb_interstitial = this->GetSafeBrowsingBlockingPage(); |
559 ASSERT_TRUE(sb_interstitial); | 588 ASSERT_TRUE(sb_interstitial); |
560 | 589 |
561 // Let's proceed and make sure everything is OK (bug 17627). | 590 // Let's proceed and make sure everything is OK (bug 17627). |
562 ProceedThroughInterstitial(sb_interstitial); | 591 this->ProceedThroughInterstitial(sb_interstitial); |
563 Navigate(kBadURL, 2); // Commit the navigation. | 592 this->Navigate(kBadURL, 2); // Commit the navigation. |
564 sb_interstitial = GetSafeBrowsingBlockingPage(); | 593 sb_interstitial = this->GetSafeBrowsingBlockingPage(); |
565 ASSERT_FALSE(sb_interstitial); | 594 ASSERT_FALSE(sb_interstitial); |
566 ASSERT_EQ(2, controller().GetEntryCount()); | 595 ASSERT_EQ(2, this->controller().GetEntryCount()); |
567 EXPECT_EQ(kBadURL, controller().GetActiveEntry()->GetURL().spec()); | 596 EXPECT_EQ(kBadURL, this->controller().GetActiveEntry()->GetURL().spec()); |
568 | 597 |
569 // Two reports should have been sent. | 598 // Two reports should have been sent. |
570 EXPECT_EQ(2u, ui_manager_->GetDetails()->size()); | 599 EXPECT_EQ(2u, this->ui_manager_->GetDetails()->size()); |
571 ui_manager_->GetDetails()->clear(); | 600 this->ui_manager_->GetDetails()->clear(); |
572 } | 601 } |
573 | 602 |
574 // Tests that calling "don't proceed" after "proceed" has been called doesn't | 603 // Tests that calling "don't proceed" after "proceed" has been called doesn't |
575 // cause problems. http://crbug.com/30079 | 604 // cause problems. http://crbug.com/30079 |
576 TEST_F(SafeBrowsingBlockingPageTest, ProceedThenDontProceed) { | 605 TYPED_TEST(SafeBrowsingBlockingPageTest, ProceedThenDontProceed) { |
577 // Enable malware reports. | 606 // Enable malware reports. |
578 Profile* profile = Profile::FromBrowserContext( | 607 Profile* profile = Profile::FromBrowserContext( |
579 web_contents()->GetBrowserContext()); | 608 this->web_contents()->GetBrowserContext()); |
580 profile->GetPrefs()->SetBoolean( | 609 profile->GetPrefs()->SetBoolean( |
581 prefs::kSafeBrowsingExtendedReportingEnabled, true); | 610 prefs::kSafeBrowsingExtendedReportingEnabled, true); |
582 | 611 |
583 // Start a load. | 612 // Start a load. |
584 controller().LoadURL(GURL(kBadURL), content::Referrer(), | 613 this->controller().LoadURL(GURL(kBadURL), content::Referrer(), |
585 content::PAGE_TRANSITION_TYPED, std::string()); | 614 content::PAGE_TRANSITION_TYPED, std::string()); |
586 | 615 |
587 // Simulate the load causing a safe browsing interstitial to be shown. | 616 // Simulate the load causing a safe browsing interstitial to be shown. |
588 ShowInterstitial(false, kBadURL); | 617 this->ShowInterstitial(false, kBadURL); |
589 SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage(); | 618 SafeBrowsingBlockingPage* sb_interstitial = |
619 this->GetSafeBrowsingBlockingPage(); | |
590 ASSERT_TRUE(sb_interstitial); | 620 ASSERT_TRUE(sb_interstitial); |
591 | 621 |
592 base::RunLoop().RunUntilIdle(); | 622 base::RunLoop().RunUntilIdle(); |
593 | 623 |
594 // Simulate the user clicking "proceed" then "don't proceed" (before the | 624 // Simulate the user clicking "proceed" then "don't proceed" (before the |
595 // interstitial is shown). | 625 // interstitial is shown). |
596 sb_interstitial->interstitial_page_->Proceed(); | 626 sb_interstitial->interstitial_page_->Proceed(); |
597 sb_interstitial->interstitial_page_->DontProceed(); | 627 sb_interstitial->interstitial_page_->DontProceed(); |
598 // Proceed() and DontProceed() post a task to update the | 628 // Proceed() and DontProceed() post a task to update the |
599 // SafeBrowsingService::Client. | 629 // SafeBrowsingService::Client. |
600 base::RunLoop().RunUntilIdle(); | 630 base::RunLoop().RunUntilIdle(); |
601 | 631 |
602 // The interstitial should be gone. | 632 // The interstitial should be gone. |
603 EXPECT_EQ(OK, user_response()); | 633 EXPECT_EQ(this->OK, this->user_response()); |
604 EXPECT_FALSE(GetSafeBrowsingBlockingPage()); | 634 EXPECT_FALSE(this->GetSafeBrowsingBlockingPage()); |
605 | 635 |
606 // Only one report should have been sent. | 636 // Only one report should have been sent. |
607 EXPECT_EQ(1u, ui_manager_->GetDetails()->size()); | 637 EXPECT_EQ(1u, this->ui_manager_->GetDetails()->size()); |
608 ui_manager_->GetDetails()->clear(); | 638 this->ui_manager_->GetDetails()->clear(); |
609 } | 639 } |
610 | 640 |
611 // Tests showing a blocking page for a malware page with reports disabled. | 641 // Tests showing a blocking page for a malware page with reports disabled. |
612 TEST_F(SafeBrowsingBlockingPageTest, MalwareReportsDisabled) { | 642 TYPED_TEST(SafeBrowsingBlockingPageTest, MalwareReportsDisabled) { |
613 // Disable malware reports. | 643 // Disable malware reports. |
614 Profile* profile = Profile::FromBrowserContext( | 644 Profile* profile = Profile::FromBrowserContext( |
615 web_contents()->GetBrowserContext()); | 645 this->web_contents()->GetBrowserContext()); |
616 profile->GetPrefs()->SetBoolean( | 646 profile->GetPrefs()->SetBoolean( |
617 prefs::kSafeBrowsingExtendedReportingEnabled, false); | 647 prefs::kSafeBrowsingExtendedReportingEnabled, false); |
618 | 648 |
619 // Start a load. | 649 // Start a load. |
620 controller().LoadURL(GURL(kBadURL), content::Referrer(), | 650 this->controller().LoadURL(GURL(kBadURL), content::Referrer(), |
621 content::PAGE_TRANSITION_TYPED, std::string()); | 651 content::PAGE_TRANSITION_TYPED, std::string()); |
622 | 652 |
623 // Simulate the load causing a safe browsing interstitial to be shown. | 653 // Simulate the load causing a safe browsing interstitial to be shown. |
624 ShowInterstitial(false, kBadURL); | 654 this->ShowInterstitial(false, kBadURL); |
625 SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage(); | 655 SafeBrowsingBlockingPage* sb_interstitial = |
656 this->GetSafeBrowsingBlockingPage(); | |
626 ASSERT_TRUE(sb_interstitial); | 657 ASSERT_TRUE(sb_interstitial); |
627 | 658 |
628 base::RunLoop().RunUntilIdle(); | 659 base::RunLoop().RunUntilIdle(); |
629 | 660 |
630 // Simulate the user clicking "don't proceed". | 661 // Simulate the user clicking "don't proceed". |
631 DontProceedThroughInterstitial(sb_interstitial); | 662 this->DontProceedThroughInterstitial(sb_interstitial); |
632 | 663 |
633 // The interstitial should be gone. | 664 // The interstitial should be gone. |
634 EXPECT_EQ(CANCEL, user_response()); | 665 EXPECT_EQ(this->CANCEL, this->user_response()); |
635 EXPECT_FALSE(GetSafeBrowsingBlockingPage()); | 666 EXPECT_FALSE(this->GetSafeBrowsingBlockingPage()); |
636 | 667 |
637 // We did not proceed, the pending entry should be gone. | 668 // We did not proceed, the pending entry should be gone. |
638 EXPECT_FALSE(controller().GetPendingEntry()); | 669 EXPECT_FALSE(this->controller().GetPendingEntry()); |
639 | 670 |
640 // No report should have been sent. | 671 // No report should have been sent. |
641 EXPECT_EQ(0u, ui_manager_->GetDetails()->size()); | 672 EXPECT_EQ(0u, this->ui_manager_->GetDetails()->size()); |
642 ui_manager_->GetDetails()->clear(); | 673 this->ui_manager_->GetDetails()->clear(); |
643 } | 674 } |
644 | 675 |
645 // Test that toggling the checkbox has the anticipated effects. | 676 // Test that toggling the checkbox has the anticipated effects. |
646 TEST_F(SafeBrowsingBlockingPageTest, MalwareReportsToggling) { | 677 TYPED_TEST(SafeBrowsingBlockingPageTest, MalwareReportsToggling) { |
647 // Disable malware reports. | 678 // Disable malware reports. |
648 Profile* profile = Profile::FromBrowserContext( | 679 Profile* profile = Profile::FromBrowserContext( |
649 web_contents()->GetBrowserContext()); | 680 this->web_contents()->GetBrowserContext()); |
650 profile->GetPrefs()->SetBoolean( | 681 profile->GetPrefs()->SetBoolean( |
651 prefs::kSafeBrowsingExtendedReportingEnabled, false); | 682 prefs::kSafeBrowsingExtendedReportingEnabled, false); |
652 | 683 |
653 // Start a load. | 684 // Start a load. |
654 controller().LoadURL(GURL(kBadURL), content::Referrer(), | 685 this->controller().LoadURL(GURL(kBadURL), content::Referrer(), |
655 content::PAGE_TRANSITION_TYPED, std::string()); | 686 content::PAGE_TRANSITION_TYPED, std::string()); |
656 | 687 |
657 // Simulate the load causing a safe browsing interstitial to be shown. | 688 // Simulate the load causing a safe browsing interstitial to be shown. |
658 ShowInterstitial(false, kBadURL); | 689 this->ShowInterstitial(false, kBadURL); |
659 SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage(); | 690 SafeBrowsingBlockingPage* sb_interstitial = |
691 this->GetSafeBrowsingBlockingPage(); | |
660 ASSERT_TRUE(sb_interstitial); | 692 ASSERT_TRUE(sb_interstitial); |
661 | 693 |
662 base::RunLoop().RunUntilIdle(); | 694 base::RunLoop().RunUntilIdle(); |
663 | 695 |
664 EXPECT_FALSE(profile->GetPrefs()->GetBoolean( | 696 EXPECT_FALSE(profile->GetPrefs()->GetBoolean( |
665 prefs::kSafeBrowsingExtendedReportingEnabled)); | 697 prefs::kSafeBrowsingExtendedReportingEnabled)); |
666 | 698 |
667 // Simulate the user check the report agreement checkbox. | 699 // Simulate the user check the report agreement checkbox. |
668 sb_interstitial->SetReportingPreference(true); | 700 sb_interstitial->SetReportingPreference(true); |
669 | 701 |
670 EXPECT_TRUE(profile->GetPrefs()->GetBoolean( | 702 EXPECT_TRUE(profile->GetPrefs()->GetBoolean( |
671 prefs::kSafeBrowsingExtendedReportingEnabled)); | 703 prefs::kSafeBrowsingExtendedReportingEnabled)); |
672 | 704 |
673 // Simulate the user uncheck the report agreement checkbox. | 705 // Simulate the user uncheck the report agreement checkbox. |
674 sb_interstitial->SetReportingPreference(false); | 706 sb_interstitial->SetReportingPreference(false); |
675 | 707 |
676 EXPECT_FALSE(profile->GetPrefs()->GetBoolean( | 708 EXPECT_FALSE(profile->GetPrefs()->GetBoolean( |
677 prefs::kSafeBrowsingExtendedReportingEnabled)); | 709 prefs::kSafeBrowsingExtendedReportingEnabled)); |
678 } | 710 } |
679 | 711 |
680 // Test that the transition from old to new preference works. | 712 // Test that the transition from old to new preference works. |
681 TEST_F(SafeBrowsingBlockingPageTest, MalwareReportsTransitionEnabled) { | 713 TYPED_TEST(SafeBrowsingBlockingPageTest, |
714 DISABLED_MalwareReportsTransitionEnabled) { | |
mattm
2014/06/17 18:38:48
and this got marked disabled?
felt
2014/06/17 18:40:14
This had to be disabled because the checkbox isn't
| |
682 // The old pref is enabled. | 715 // The old pref is enabled. |
683 Profile* profile = Profile::FromBrowserContext( | 716 Profile* profile = Profile::FromBrowserContext( |
684 web_contents()->GetBrowserContext()); | 717 this->web_contents()->GetBrowserContext()); |
685 profile->GetPrefs()->SetBoolean(prefs::kSafeBrowsingReportingEnabled, true); | 718 profile->GetPrefs()->SetBoolean(prefs::kSafeBrowsingReportingEnabled, true); |
686 | 719 |
687 // Start a load. | 720 // Start a load. |
688 controller().LoadURL(GURL(kBadURL), content::Referrer(), | 721 this->controller().LoadURL(GURL(kBadURL), content::Referrer(), |
689 content::PAGE_TRANSITION_TYPED, std::string()); | 722 content::PAGE_TRANSITION_TYPED, std::string()); |
690 | 723 |
691 // Simulate the load causing a safe browsing interstitial to be shown. | 724 // Simulate the load causing a safe browsing interstitial to be shown. |
692 ShowInterstitial(false, kBadURL); | 725 this->ShowInterstitial(false, kBadURL); |
693 SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage(); | 726 SafeBrowsingBlockingPage* sb_interstitial = |
727 this->GetSafeBrowsingBlockingPage(); | |
694 ASSERT_TRUE(sb_interstitial); | 728 ASSERT_TRUE(sb_interstitial); |
695 | 729 |
696 base::RunLoop().RunUntilIdle(); | 730 base::RunLoop().RunUntilIdle(); |
697 | 731 |
698 // At this point, nothing should have changed yet. | 732 // At this point, nothing should have changed yet. |
699 EXPECT_FALSE(profile->GetPrefs()->GetBoolean( | 733 EXPECT_FALSE(profile->GetPrefs()->GetBoolean( |
700 prefs::kSafeBrowsingExtendedReportingEnabled)); | 734 prefs::kSafeBrowsingExtendedReportingEnabled)); |
701 | 735 |
702 ProceedThroughInterstitial(sb_interstitial); | 736 this->ProceedThroughInterstitial(sb_interstitial); |
703 | 737 |
704 // Since the user has proceeded without changing the checkbox, the new pref | 738 // Since the user has proceeded without changing the checkbox, the new pref |
705 // has been updated. | 739 // has been updated. |
706 EXPECT_TRUE(profile->GetPrefs()->GetBoolean( | 740 EXPECT_TRUE(profile->GetPrefs()->GetBoolean( |
707 prefs::kSafeBrowsingExtendedReportingEnabled)); | 741 prefs::kSafeBrowsingExtendedReportingEnabled)); |
708 } | 742 } |
709 | 743 |
710 // Test that the transition from old to new preference still respects the | 744 // Test that the transition from old to new preference still respects the |
711 // user's checkbox preferences. | 745 // user's checkbox preferences. |
712 TEST_F(SafeBrowsingBlockingPageTest, MalwareReportsTransitionDisabled) { | 746 TYPED_TEST(SafeBrowsingBlockingPageTest, MalwareReportsTransitionDisabled) { |
713 // The old pref is enabled. | 747 // The old pref is enabled. |
714 Profile* profile = Profile::FromBrowserContext( | 748 Profile* profile = Profile::FromBrowserContext( |
715 web_contents()->GetBrowserContext()); | 749 this->web_contents()->GetBrowserContext()); |
716 profile->GetPrefs()->SetBoolean(prefs::kSafeBrowsingReportingEnabled, true); | 750 profile->GetPrefs()->SetBoolean(prefs::kSafeBrowsingReportingEnabled, true); |
717 | 751 |
718 // Start a load. | 752 // Start a load. |
719 controller().LoadURL(GURL(kBadURL), content::Referrer(), | 753 this->controller().LoadURL(GURL(kBadURL), content::Referrer(), |
720 content::PAGE_TRANSITION_TYPED, std::string()); | 754 content::PAGE_TRANSITION_TYPED, std::string()); |
721 | 755 |
722 // Simulate the load causing a safe browsing interstitial to be shown. | 756 // Simulate the load causing a safe browsing interstitial to be shown. |
723 ShowInterstitial(false, kBadURL); | 757 this->ShowInterstitial(false, kBadURL); |
724 SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage(); | 758 SafeBrowsingBlockingPage* sb_interstitial = |
759 this->GetSafeBrowsingBlockingPage(); | |
725 ASSERT_TRUE(sb_interstitial); | 760 ASSERT_TRUE(sb_interstitial); |
726 | 761 |
727 base::RunLoop().RunUntilIdle(); | 762 base::RunLoop().RunUntilIdle(); |
728 | 763 |
729 // At this point, nothing should have changed yet. | 764 // At this point, nothing should have changed yet. |
730 EXPECT_FALSE(profile->GetPrefs()->GetBoolean( | 765 EXPECT_FALSE(profile->GetPrefs()->GetBoolean( |
731 prefs::kSafeBrowsingExtendedReportingEnabled)); | 766 prefs::kSafeBrowsingExtendedReportingEnabled)); |
732 | 767 |
733 // Simulate the user uncheck the report agreement checkbox. | 768 // Simulate the user uncheck the report agreement checkbox. |
734 sb_interstitial->SetReportingPreference(false); | 769 sb_interstitial->SetReportingPreference(false); |
735 | 770 |
736 ProceedThroughInterstitial(sb_interstitial); | 771 this->ProceedThroughInterstitial(sb_interstitial); |
737 | 772 |
738 // The new pref is turned off. | 773 // The new pref is turned off. |
739 EXPECT_FALSE(profile->GetPrefs()->GetBoolean( | 774 EXPECT_FALSE(profile->GetPrefs()->GetBoolean( |
740 prefs::kSafeBrowsingExtendedReportingEnabled)); | 775 prefs::kSafeBrowsingExtendedReportingEnabled)); |
741 EXPECT_FALSE(profile->GetPrefs()->GetBoolean( | 776 EXPECT_FALSE(profile->GetPrefs()->GetBoolean( |
742 prefs::kSafeBrowsingReportingEnabled)); | 777 prefs::kSafeBrowsingReportingEnabled)); |
743 EXPECT_FALSE(profile->GetPrefs()->GetBoolean( | 778 EXPECT_FALSE(profile->GetPrefs()->GetBoolean( |
744 prefs::kSafeBrowsingDownloadFeedbackEnabled)); | 779 prefs::kSafeBrowsingDownloadFeedbackEnabled)); |
745 } | 780 } |
OLD | NEW |