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 // This test creates a fake safebrowsing service, where we can inject known- | 5 // This test creates a fake safebrowsing service, where we can inject known- |
6 // threat urls. It then uses a real browser to go to these urls, and sends | 6 // threat urls. It then uses a real browser to go to these urls, and sends |
7 // "goback" or "proceed" commands and verifies they work. | 7 // "goback" or "proceed" commands and verifies they work. |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
11 #include "base/prefs/pref_service.h" | 11 #include "base/prefs/pref_service.h" |
| 12 #include "base/strings/string_number_conversions.h" |
12 #include "base/strings/utf_string_conversions.h" | 13 #include "base/strings/utf_string_conversions.h" |
13 #include "base/values.h" | 14 #include "base/values.h" |
14 #include "chrome/browser/browser_process.h" | 15 #include "chrome/browser/browser_process.h" |
15 #include "chrome/browser/profiles/profile.h" | 16 #include "chrome/browser/profiles/profile.h" |
16 #include "chrome/browser/safe_browsing/database_manager.h" | 17 #include "chrome/browser/safe_browsing/database_manager.h" |
17 #include "chrome/browser/safe_browsing/malware_details.h" | 18 #include "chrome/browser/safe_browsing/malware_details.h" |
18 #include "chrome/browser/safe_browsing/safe_browsing_blocking_page.h" | 19 #include "chrome/browser/safe_browsing/safe_browsing_blocking_page.h" |
19 #include "chrome/browser/safe_browsing/safe_browsing_service.h" | 20 #include "chrome/browser/safe_browsing/safe_browsing_service.h" |
20 #include "chrome/browser/safe_browsing/safe_browsing_util.h" | 21 #include "chrome/browser/safe_browsing/safe_browsing_util.h" |
21 #include "chrome/browser/safe_browsing/ui_manager.h" | 22 #include "chrome/browser/safe_browsing/ui_manager.h" |
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
393 GURL SetupThreatIframeWarningAndNavigate() { | 394 GURL SetupThreatIframeWarningAndNavigate() { |
394 GURL url = test_server()->GetURL(kMalwarePage); | 395 GURL url = test_server()->GetURL(kMalwarePage); |
395 GURL iframe_url = test_server()->GetURL(kMalwareIframe); | 396 GURL iframe_url = test_server()->GetURL(kMalwareIframe); |
396 SetURLThreatType(iframe_url, GetParam()); | 397 SetURLThreatType(iframe_url, GetParam()); |
397 | 398 |
398 ui_test_utils::NavigateToURL(browser(), url); | 399 ui_test_utils::NavigateToURL(browser(), url); |
399 EXPECT_TRUE(WaitForReady()); | 400 EXPECT_TRUE(WaitForReady()); |
400 return url; | 401 return url; |
401 } | 402 } |
402 | 403 |
403 void SendCommand(const std::string& command) { | 404 void SendCommand( |
| 405 SecurityInterstitialPage::SecurityInterstitialCommands command) { |
404 WebContents* contents = | 406 WebContents* contents = |
405 browser()->tab_strip_model()->GetActiveWebContents(); | 407 browser()->tab_strip_model()->GetActiveWebContents(); |
406 // We use InterstitialPage::GetInterstitialPage(tab) instead of | 408 // We use InterstitialPage::GetInterstitialPage(tab) instead of |
407 // tab->GetInterstitialPage() because the tab doesn't have a pointer | 409 // tab->GetInterstitialPage() because the tab doesn't have a pointer |
408 // to its interstital page until it gets a command from the renderer | 410 // to its interstital page until it gets a command from the renderer |
409 // that it has indeed displayed it -- and this sometimes happens after | 411 // that it has indeed displayed it -- and this sometimes happens after |
410 // NavigateToURL returns. | 412 // NavigateToURL returns. |
411 SafeBrowsingBlockingPage* interstitial_page = | 413 SafeBrowsingBlockingPage* interstitial_page = |
412 static_cast<SafeBrowsingBlockingPage*>( | 414 static_cast<SafeBrowsingBlockingPage*>( |
413 InterstitialPage::GetInterstitialPage(contents)-> | 415 InterstitialPage::GetInterstitialPage(contents)-> |
414 GetDelegateForTesting()); | 416 GetDelegateForTesting()); |
415 ASSERT_TRUE(interstitial_page); | 417 ASSERT_TRUE(interstitial_page); |
416 ASSERT_EQ(SafeBrowsingBlockingPage::kTypeForTesting, | 418 ASSERT_EQ(SafeBrowsingBlockingPage::kTypeForTesting, |
417 interstitial_page->GetTypeForTesting()); | 419 interstitial_page->GetTypeForTesting()); |
418 interstitial_page->CommandReceived(command); | 420 interstitial_page->CommandReceived(base::IntToString(command)); |
419 } | 421 } |
420 | 422 |
421 void DontProceedThroughInterstitial() { | 423 void DontProceedThroughInterstitial() { |
422 WebContents* contents = | 424 WebContents* contents = |
423 browser()->tab_strip_model()->GetActiveWebContents(); | 425 browser()->tab_strip_model()->GetActiveWebContents(); |
424 InterstitialPage* interstitial_page = InterstitialPage::GetInterstitialPage( | 426 InterstitialPage* interstitial_page = InterstitialPage::GetInterstitialPage( |
425 contents); | 427 contents); |
426 ASSERT_TRUE(interstitial_page); | 428 ASSERT_TRUE(interstitial_page); |
427 interstitial_page->DontProceed(); | 429 interstitial_page->DontProceed(); |
428 } | 430 } |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
493 content::WaitForInterstitialAttach(contents); | 495 content::WaitForInterstitialAttach(contents); |
494 // Cancel the redirect request while interstitial page is open. | 496 // Cancel the redirect request while interstitial page is open. |
495 browser()->tab_strip_model()->ActivateTabAt(0, true); | 497 browser()->tab_strip_model()->ActivateTabAt(0, true); |
496 ui_test_utils::NavigateToURL(browser(), GURL("javascript:stopWin()")); | 498 ui_test_utils::NavigateToURL(browser(), GURL("javascript:stopWin()")); |
497 browser()->tab_strip_model()->ActivateTabAt(1, true); | 499 browser()->tab_strip_model()->ActivateTabAt(1, true); |
498 // Simulate the user clicking "proceed", there should be no crash. Since | 500 // Simulate the user clicking "proceed", there should be no crash. Since |
499 // clicking proceed may do nothing (see comment in RedirectCanceled | 501 // clicking proceed may do nothing (see comment in RedirectCanceled |
500 // below, and crbug.com/76460), we use SendCommand to trigger the callback | 502 // below, and crbug.com/76460), we use SendCommand to trigger the callback |
501 // directly rather than using ClickAndWaitForDetach since there might not | 503 // directly rather than using ClickAndWaitForDetach since there might not |
502 // be a notification to wait for. | 504 // be a notification to wait for. |
503 SendCommand("\"proceed\""); | 505 SendCommand(SecurityInterstitialPage::CMD_PROCEED); |
504 } | 506 } |
505 | 507 |
506 content::RenderViewHost* GetRenderViewHost() { | 508 content::RenderViewHost* GetRenderViewHost() { |
507 InterstitialPage* interstitial = InterstitialPage::GetInterstitialPage( | 509 InterstitialPage* interstitial = InterstitialPage::GetInterstitialPage( |
508 browser()->tab_strip_model()->GetActiveWebContents()); | 510 browser()->tab_strip_model()->GetActiveWebContents()); |
509 if (!interstitial) | 511 if (!interstitial) |
510 return NULL; | 512 return NULL; |
511 return interstitial->GetMainFrame()->GetRenderViewHost(); | 513 return interstitial->GetMainFrame()->GetRenderViewHost(); |
512 } | 514 } |
513 | 515 |
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
725 | 727 |
726 SetupWarningAndNavigate(); | 728 SetupWarningAndNavigate(); |
727 | 729 |
728 EXPECT_EQ(VISIBLE, GetVisibility("primary-button")); | 730 EXPECT_EQ(VISIBLE, GetVisibility("primary-button")); |
729 EXPECT_EQ(HIDDEN, GetVisibility("details")); | 731 EXPECT_EQ(HIDDEN, GetVisibility("details")); |
730 EXPECT_EQ(HIDDEN, GetVisibility("proceed-link")); | 732 EXPECT_EQ(HIDDEN, GetVisibility("proceed-link")); |
731 EXPECT_EQ(HIDDEN, GetVisibility("final-paragraph")); | 733 EXPECT_EQ(HIDDEN, GetVisibility("final-paragraph")); |
732 EXPECT_TRUE(Click("details-button")); | 734 EXPECT_TRUE(Click("details-button")); |
733 EXPECT_EQ(HIDDEN, GetVisibility("proceed-link")); | 735 EXPECT_EQ(HIDDEN, GetVisibility("proceed-link")); |
734 EXPECT_EQ(HIDDEN, GetVisibility("final-paragraph")); | 736 EXPECT_EQ(HIDDEN, GetVisibility("final-paragraph")); |
735 SendCommand("proceed"); | 737 SendCommand(SecurityInterstitialPage::CMD_PROCEED); |
736 | 738 |
737 // The "proceed" command should go back instead, if proceeding is disabled. | 739 // The "proceed" command should go back instead, if proceeding is disabled. |
738 AssertNoInterstitial(true); | 740 AssertNoInterstitial(true); |
739 EXPECT_EQ(GURL(url::kAboutBlankURL), // Back to "about:blank" | 741 EXPECT_EQ(GURL(url::kAboutBlankURL), // Back to "about:blank" |
740 browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); | 742 browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); |
741 } | 743 } |
742 | 744 |
743 // Verifies that the reporting checkbox is hidden on non-HTTP pages. | 745 // Verifies that the reporting checkbox is hidden on non-HTTP pages. |
744 // TODO(mattm): Should also verify that no report is sent, but there isn't a | 746 // TODO(mattm): Should also verify that no report is sent, but there isn't a |
745 // good way to do that in the current design. | 747 // good way to do that in the current design. |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
787 ? "/transparencyreport/safebrowsing/" | 789 ? "/transparencyreport/safebrowsing/" |
788 : "/safebrowsing/diagnostic", | 790 : "/safebrowsing/diagnostic", |
789 browser()->tab_strip_model()->GetActiveWebContents()->GetURL().path()); | 791 browser()->tab_strip_model()->GetActiveWebContents()->GetURL().path()); |
790 } | 792 } |
791 | 793 |
792 INSTANTIATE_TEST_CASE_P(SafeBrowsingBlockingPageBrowserTestWithThreatType, | 794 INSTANTIATE_TEST_CASE_P(SafeBrowsingBlockingPageBrowserTestWithThreatType, |
793 SafeBrowsingBlockingPageBrowserTest, | 795 SafeBrowsingBlockingPageBrowserTest, |
794 testing::Values(SB_THREAT_TYPE_URL_MALWARE, | 796 testing::Values(SB_THREAT_TYPE_URL_MALWARE, |
795 SB_THREAT_TYPE_URL_PHISHING, | 797 SB_THREAT_TYPE_URL_PHISHING, |
796 SB_THREAT_TYPE_URL_UNWANTED)); | 798 SB_THREAT_TYPE_URL_UNWANTED)); |
OLD | NEW |