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

Unified Diff: chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc

Issue 2955503002: Make interstitial links open in a new tab (Closed)
Patch Set: Mock out help center URL in SafeBrowsingBlockingPageTest Created 3 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc
diff --git a/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc b/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc
index dc3f6d722288f88ae490741a783d25070d77a73b..bd2e6e52ae24bb5e4d4ed905b5fa7c199e2b25d3 100644
--- a/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc
+++ b/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc
@@ -42,6 +42,7 @@
#include "components/safe_browsing_db/database_manager.h"
#include "components/safe_browsing_db/test_database_manager.h"
#include "components/safe_browsing_db/util.h"
+#include "components/security_interstitials/content/security_interstitial_controller_client.h"
#include "components/security_interstitials/core/controller_client.h"
#include "components/security_interstitials/core/metrics_helper.h"
#include "components/security_interstitials/core/urls.h"
@@ -57,6 +58,7 @@
#include "content/public/browser/web_contents.h"
#include "content/public/test/browser_test_utils.h"
#include "content/public/test/test_browser_thread.h"
+#include "content/public/test/test_navigation_observer.h"
#include "content/public/test/test_utils.h"
#include "net/cert/cert_verify_result.h"
#include "net/cert/mock_cert_verifier.h"
@@ -729,6 +731,25 @@ class SafeBrowsingBlockingPageBrowserTest
->hit_report_sent();
}
+ void MockHelpCenterUrl(InterstitialPage* interstitial_page) {
estark 2017/06/27 00:36:21 nit: maybe add a brief comment above this method t
sperigo 2017/06/27 17:31:58 Done.
+ ASSERT_TRUE(https_server_.Start());
+ scoped_refptr<net::X509Certificate> cert(https_server_.GetCertificate());
+ net::CertVerifyResult verify_result;
+ verify_result.is_issued_by_known_root = true;
+ verify_result.verified_cert = cert;
+ verify_result.cert_status = 0;
+ mock_cert_verifier()->AddResultForCert(cert.get(), verify_result, net::OK);
+
+ SafeBrowsingBlockingPage* sb_interstitial =
+ static_cast<SafeBrowsingBlockingPage*>(
+ interstitial_page->GetDelegateForTesting());
+ security_interstitials::SecurityInterstitialControllerClient* client =
+ sb_interstitial->controller();
+
+ const GURL mock_help_center_url = https_server_.GetURL("/title1.html");
estark 2017/06/27 00:36:21 nit: const GURL& or just inline it below: SetBaseH
sperigo 2017/06/27 17:31:58 Done.
+ client->SetBaseHelpCenterUrlForTesting(mock_help_center_url);
+ }
+
protected:
TestThreatDetailsFactory details_factory_;
@@ -795,12 +816,33 @@ IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, DontProceed) {
IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, VisitWhitePaper) {
SetupWarningAndNavigate(browser());
+ EXPECT_EQ(1, browser()->tab_strip_model()->count());
+ WebContents* interstitial_tab =
estark 2017/06/27 00:36:21 nit: ASSERT_TRUE(interstitial_tab) after this line
sperigo 2017/06/27 17:31:58 Done.
+ browser()->tab_strip_model()->GetActiveWebContents();
+
EXPECT_EQ(VISIBLE, GetVisibility("whitepaper-link"));
- EXPECT_TRUE(ClickAndWaitForDetach("whitepaper-link"));
+ content::TestNavigationObserver nav_observer(nullptr);
+ nav_observer.StartWatchingNewWebContents();
+ EXPECT_TRUE(Click("whitepaper-link"));
- AssertNoInterstitial(false); // Assert the interstitial is gone
- EXPECT_EQ(GetWhitePaperUrl(),
- browser()->tab_strip_model()->GetActiveWebContents()->GetURL());
+ nav_observer.Wait();
+
+ EXPECT_EQ(2, browser()->tab_strip_model()->count());
+ EXPECT_EQ(1, browser()->tab_strip_model()->active_index());
+
+ AssertNoInterstitial(false); // Assert the interstitial is not present in
estark 2017/06/27 00:36:21 nit: comment formatting is a little weird, you can
sperigo 2017/06/27 17:31:59 Done.
+ // the foreground tab.
+
+ // Foreground tab displays the help center.
+ WebContents* new_tab = browser()->tab_strip_model()->GetActiveWebContents();
estark 2017/06/27 00:36:21 nit: ASSERT_TRUE(new_tab) after this line to make
sperigo 2017/06/27 17:31:58 Done.
+ EXPECT_EQ(GetWhitePaperUrl(), new_tab->GetURL());
+
+ // Interstitial should still display in the background tab.
+ browser()->tab_strip_model()->ActivateTabAt(0, true);
+ EXPECT_EQ(0, browser()->tab_strip_model()->active_index());
+ EXPECT_EQ(interstitial_tab,
+ browser()->tab_strip_model()->GetActiveWebContents());
+ EXPECT_TRUE(YesInterstitial());
}
IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, Proceed) {
@@ -1109,17 +1151,34 @@ IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest,
IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, LearnMore) {
SetupWarningAndNavigate(browser());
- EXPECT_TRUE(ClickAndWaitForDetach("learn-more-link"));
- AssertNoInterstitial(false); // Assert the interstitial is gone
- // We are in the help page.
- EXPECT_EQ(
- GURL("https://support.google.com/chrome/answer/99020").GetWithEmptyPath(),
- browser()
- ->tab_strip_model()
- ->GetActiveWebContents()
- ->GetURL()
- .GetWithEmptyPath());
+ WebContents* interstitial_tab =
+ browser()->tab_strip_model()->GetActiveWebContents();
+ ASSERT_TRUE(interstitial_tab);
+
+ MockHelpCenterUrl(interstitial_tab->GetInterstitialPage());
+
+ EXPECT_EQ(1, browser()->tab_strip_model()->count());
+
+ content::TestNavigationObserver nav_observer(nullptr);
+ nav_observer.StartWatchingNewWebContents();
+ SendCommand(security_interstitials::CMD_OPEN_HELP_CENTER);
+ nav_observer.Wait();
+
+ // A new tab has been opened.
+ EXPECT_EQ(2, browser()->tab_strip_model()->count());
+
+ // Interstitial does not display in the foreground tab.
+ EXPECT_EQ(1, browser()->tab_strip_model()->active_index());
+ WebContents* new_tab = browser()->tab_strip_model()->GetWebContentsAt(1);
estark 2017/06/27 00:36:21 same nit about ASSERT_TRUE(new_tab)
sperigo 2017/06/27 17:31:58 Done.
+ EXPECT_FALSE(new_tab->ShowingInterstitialPage());
+
+ // Interstitial still displays in the background tab.
+ browser()->tab_strip_model()->ActivateTabAt(0, true);
+ EXPECT_EQ(0, browser()->tab_strip_model()->active_index());
+ EXPECT_EQ(interstitial_tab,
+ browser()->tab_strip_model()->GetActiveWebContents());
+ EXPECT_TRUE(YesInterstitial());
}
IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest,

Powered by Google App Engine
This is Rietveld 408576698