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

Unified Diff: chrome/browser/ui/browser_browsertest.cc

Issue 1207943002: Trigger DidChangeVisisbleSSLState() after OverrideEntry() (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: test fixes Created 5 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
« no previous file with comments | « no previous file | content/browser/frame_host/interstitial_page_impl.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/browser_browsertest.cc
diff --git a/chrome/browser/ui/browser_browsertest.cc b/chrome/browser/ui/browser_browsertest.cc
index 58014d3a73268037f45bdd87dea4ee9fa5a56b28..ce1d01132a58843acf3a672ae59d80e43ee2aa26 100644
--- a/chrome/browser/ui/browser_browsertest.cc
+++ b/chrome/browser/ui/browser_browsertest.cc
@@ -369,6 +369,12 @@ class SecurityStyleTestObserver : public WebContentsObserver {
return latest_explanations_;
}
+ void ClearLatestSecurityStyleAndExplanations() {
+ latest_security_style_ = content::SECURITY_STYLE_UNKNOWN;
+ latest_explanations_.warning_explanations.clear();
msw 2015/06/29 20:02:07 nit: maybe just do latest_explanations_ = Security
+ latest_explanations_.broken_explanations.clear();
+ }
+
private:
content::SecurityStyle latest_security_style_;
content::SecurityStyleExplanations latest_explanations_;
@@ -376,6 +382,28 @@ class SecurityStyleTestObserver : public WebContentsObserver {
DISALLOW_COPY_AND_ASSIGN(SecurityStyleTestObserver);
};
+// Check that |observer|'s latest event was for an expired certificate
+// and that it saw the proper SecurityStyle and explanations.
+void CheckExpiredSecurityStyle(const SecurityStyleTestObserver& observer) {
+ EXPECT_EQ(content::SECURITY_STYLE_AUTHENTICATION_BROKEN,
+ observer.latest_security_style());
+
+ const content::SecurityStyleExplanations& expired_explanation =
+ observer.latest_explanations();
+ EXPECT_EQ(0u, expired_explanation.warning_explanations.size());
+ ASSERT_EQ(1u, expired_explanation.broken_explanations.size());
+
+ // Check that the summary and description are as expected.
+ EXPECT_EQ(l10n_util::GetStringUTF8(IDS_CERTIFICATE_CHAIN_ERROR),
+ expired_explanation.broken_explanations[0].summary);
+
+ base::string16 error_string =
+ base::UTF8ToUTF16(net::ErrorToString(net::ERR_CERT_DATE_INVALID));
+ EXPECT_EQ(l10n_util::GetStringFUTF8(
+ IDS_CERTIFICATE_CHAIN_ERROR_DESCRIPTION_FORMAT, error_string),
+ expired_explanation.broken_explanations[0].description);
+}
+
} // namespace
class BrowserTest : public ExtensionBrowserTest {
@@ -2860,12 +2888,16 @@ IN_PROC_BROWSER_TEST_F(BrowserTest, SecurityStyleChangedObserver) {
ui_test_utils::NavigateToURL(browser(), http_url);
EXPECT_EQ(content::SECURITY_STYLE_UNAUTHENTICATED,
observer.latest_security_style());
+ EXPECT_EQ(0u, observer.latest_explanations().warning_explanations.size());
+ EXPECT_EQ(0u, observer.latest_explanations().broken_explanations.size());
// Visit a valid HTTPS url.
GURL valid_https_url(https_test_server.GetURL(std::string()));
ui_test_utils::NavigateToURL(browser(), valid_https_url);
EXPECT_EQ(content::SECURITY_STYLE_AUTHENTICATED,
observer.latest_security_style());
+ EXPECT_EQ(0u, observer.latest_explanations().warning_explanations.size());
+ EXPECT_EQ(0u, observer.latest_explanations().broken_explanations.size());
// Visit an (otherwise valid) HTTPS page that displays mixed content.
std::string replacement_path;
@@ -2886,25 +2918,39 @@ IN_PROC_BROWSER_TEST_F(BrowserTest, SecurityStyleChangedObserver) {
mixed_content_explanation.warning_explanations[0].description);
EXPECT_EQ(0u, mixed_content_explanation.broken_explanations.size());
- // Visit a broken HTTPS url. Other conditions cannot be tested after
- // this one because once the interstitial is clicked through, all URLs
- // for this host will remain in a broken state.
+ // Visit a broken HTTPS url.
GURL expired_url(https_test_server_expired.GetURL(std::string()));
ui_test_utils::NavigateToURL(browser(), expired_url);
- ProceedThroughInterstitial(web_contents);
- EXPECT_EQ(content::SECURITY_STYLE_AUTHENTICATION_BROKEN,
+ // An interstitial should show, and an event for the lock icon on the
+ // interstitial should fire.
+ content::WaitForInterstitialAttach(web_contents);
+ EXPECT_TRUE(web_contents->ShowingInterstitialPage());
+ CheckExpiredSecurityStyle(observer);
+
+ // Before clicking through, navigate to a different page, and then go
+ // back to the interstitial.
+ ui_test_utils::NavigateToURL(browser(), valid_https_url);
+ EXPECT_EQ(content::SECURITY_STYLE_AUTHENTICATED,
observer.latest_security_style());
+ EXPECT_EQ(0u, observer.latest_explanations().warning_explanations.size());
+ EXPECT_EQ(0u, observer.latest_explanations().broken_explanations.size());
- const content::SecurityStyleExplanations& expired_explanation =
- observer.latest_explanations();
- EXPECT_EQ(0u, expired_explanation.warning_explanations.size());
- ASSERT_EQ(1u, expired_explanation.broken_explanations.size());
- EXPECT_EQ(l10n_util::GetStringUTF8(IDS_CERTIFICATE_CHAIN_ERROR),
- expired_explanation.broken_explanations[0].summary);
- base::string16 error_string =
- base::UTF8ToUTF16(net::ErrorToString(net::ERR_CERT_DATE_INVALID));
- EXPECT_EQ(l10n_util::GetStringFUTF8(
- IDS_CERTIFICATE_CHAIN_ERROR_DESCRIPTION_FORMAT, error_string),
- expired_explanation.broken_explanations[0].description);
+ // After going back to the interstitial, an event for a broken lock
+ // icon should fire again.
+ ui_test_utils::NavigateToURL(browser(), expired_url);
+ content::WaitForInterstitialAttach(web_contents);
+ EXPECT_TRUE(web_contents->ShowingInterstitialPage());
+ CheckExpiredSecurityStyle(observer);
+
+ // Since the next expected style is the same as the previous, clear
+ // the observer (to make sure that the event fires twice and we don't
+ // just see the previous event's style).
+ observer.ClearLatestSecurityStyleAndExplanations();
+
+ // Other conditions cannot be tested after clicking through because
+ // once the interstitial is clicked through, all URLs for this host
+ // will remain in a broken state.
+ ProceedThroughInterstitial(web_contents);
+ CheckExpiredSecurityStyle(observer);
}
« no previous file with comments | « no previous file | content/browser/frame_host/interstitial_page_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698