Index: chrome/browser/ssl/captive_portal_blocking_page_browsertest.cc |
diff --git a/chrome/browser/ssl/captive_portal_blocking_page_browsertest.cc b/chrome/browser/ssl/captive_portal_blocking_page_browsertest.cc |
index ec7402c4aab6ec90f242dfee36ab86105715f7cd..00bc1a9daaef36c43c000fb8a0ce58f559803345 100644 |
--- a/chrome/browser/ssl/captive_portal_blocking_page_browsertest.cc |
+++ b/chrome/browser/ssl/captive_portal_blocking_page_browsertest.cc |
@@ -11,6 +11,7 @@ |
#include "base/macros.h" |
#include "base/prefs/pref_service.h" |
#include "base/strings/stringprintf.h" |
+#include "chrome/browser/interstitials/security_interstitial_page_test_utils.h" |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/ui/browser.h" |
#include "chrome/browser/ui/tabs/tab_strip_model.h" |
@@ -23,6 +24,9 @@ |
#include "testing/gtest/include/gtest/gtest.h" |
#include "url/gurl.h" |
+using chrome_browser_interstitials::IsInterstitialDisplayingText; |
+using chrome_browser_interstitials::SecurityInterstitialIDNTest; |
+ |
namespace { |
// Partial text in the captive portal interstitial's main paragraph when the |
// login domain isn't displayed. |
@@ -30,23 +34,6 @@ const char kGenericLoginURLText[] = "its login page"; |
const char kBrokenSSL[] = "https://broken.ssl"; |
const char kWiFiSSID[] = "WiFiSSID"; |
-// Returns true if the interstitial contains |text| in its body. |
-bool IsInterstitialDisplayingText(content::InterstitialPage* interstitial, |
- const std::string& text) { |
- // It's valid for |text| to contain "\'", but simply look for "'" instead |
- // since this function is used for searching host names and a predefined |
- // string. |
- DCHECK(text.find("\'") == std::string::npos); |
- std::string command = base::StringPrintf( |
- "var hasText = document.body.textContent.indexOf('%s') >= 0;" |
- "window.domAutomationController.send(hasText ? 1 : 0);", |
- text.c_str()); |
- int result = 0; |
- EXPECT_TRUE(content::ExecuteScriptAndExtractInt( |
- interstitial->GetMainFrame(), command, &result)); |
- return result == 1; |
-} |
- |
enum ExpectWiFi { |
EXPECT_WIFI_NO, |
EXPECT_WIFI_YES |
@@ -220,29 +207,25 @@ IN_PROC_BROWSER_TEST_F(CaptivePortalBlockingPageTest, |
EXPECT_WIFI_YES, EXPECT_WIFI_SSID_NO, EXPECT_LOGIN_URL_NO); |
} |
-class CaptivePortalBlockingPageIDNTest : public CaptivePortalBlockingPageTest { |
-public: |
- // InProcessBrowserTest: |
- void SetUpOnMainThread() override { |
- // Clear AcceptLanguages to force punycode decoding. |
- browser()->profile()->GetPrefs()->SetString(prefs::kAcceptLanguages, |
- std::string()); |
+class CaptivePortalBlockingPageIDNTest : public SecurityInterstitialIDNTest { |
+ protected: |
+ // SecurityInterstitialIDNTest implementation |
+ SecurityInterstitialPage* CreateInterstitial( |
+ content::WebContents* contents, |
+ const GURL& request_url) const override { |
+ // Delegate is owned by the blocking page. |
+ FakeConnectionInfoDelegate* delegate = |
+ new FakeConnectionInfoDelegate(false, ""); |
+ // Blocking page is owned by the interstitial. |
+ CaptivePortalBlockingPage* blocking_page = new CaptivePortalBlockingPage( |
+ contents, GURL(kBrokenSSL), request_url, base::Callback<void(bool)>()); |
+ blocking_page->SetDelegateForTesting(delegate); |
+ return blocking_page; |
} |
}; |
-// Same as CaptivePortalBlockingPageTest.WiredNetwork_LoginURL, except the login |
-// domain is an IDN. |
+// Test that an IDN login domain is decoded properly. |
IN_PROC_BROWSER_TEST_F(CaptivePortalBlockingPageIDNTest, |
ShowLoginIDNIfPortalRedirectsDetectionURL) { |
- const char kHostname[] = |
- "xn--d1abbgf6aiiy.xn--p1ai"; |
- const char kHostnameJSUnicode[] = |
- "\\u043f\\u0440\\u0435\\u0437\\u0438\\u0434\\u0435\\u043d\\u0442." |
- "\\u0440\\u0444"; |
- std::string landing_url_spec = |
- base::StringPrintf("http://%s/landing_url", kHostname); |
- GURL landing_url(landing_url_spec); |
- |
- TestInterstitial(false, "", landing_url, EXPECT_WIFI_NO, EXPECT_WIFI_SSID_NO, |
- EXPECT_LOGIN_URL_YES, kHostnameJSUnicode); |
+ EXPECT_TRUE(VerifyIDNDecoded()); |
} |