OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "base/time.h" | 5 #include "base/time.h" |
6 #include "chrome/browser/browser.h" | 6 #include "chrome/browser/browser.h" |
7 #include "chrome/browser/pref_service.h" | 7 #include "chrome/browser/pref_service.h" |
8 #include "chrome/browser/profile.h" | 8 #include "chrome/browser/profile.h" |
9 #include "chrome/browser/tab_contents/interstitial_page.h" | 9 #include "chrome/browser/tab_contents/interstitial_page.h" |
10 #include "chrome/browser/tab_contents/navigation_entry.h" | 10 #include "chrome/browser/tab_contents/navigation_entry.h" |
(...skipping 16 matching lines...) Expand all Loading... |
27 | 27 |
28 scoped_refptr<HTTPSTestServer> GoodCertServer() { | 28 scoped_refptr<HTTPSTestServer> GoodCertServer() { |
29 return HTTPSTestServer::CreateGoodServer(kDocRoot); | 29 return HTTPSTestServer::CreateGoodServer(kDocRoot); |
30 } | 30 } |
31 | 31 |
32 scoped_refptr<HTTPSTestServer> BadCertServer() { | 32 scoped_refptr<HTTPSTestServer> BadCertServer() { |
33 return HTTPSTestServer::CreateExpiredServer(kDocRoot); | 33 return HTTPSTestServer::CreateExpiredServer(kDocRoot); |
34 } | 34 } |
35 | 35 |
36 void CheckAuthenticatedState(TabContents* tab, | 36 void CheckAuthenticatedState(TabContents* tab, |
37 bool displayed_mixed_content) { | 37 bool mixed_content) { |
38 NavigationEntry* entry = tab->controller().GetActiveEntry(); | 38 NavigationEntry* entry = tab->controller().GetActiveEntry(); |
39 ASSERT_TRUE(entry); | 39 ASSERT_TRUE(entry); |
40 EXPECT_EQ(NavigationEntry::NORMAL_PAGE, entry->page_type()); | 40 EXPECT_EQ(NavigationEntry::NORMAL_PAGE, entry->page_type()); |
41 EXPECT_EQ(SECURITY_STYLE_AUTHENTICATED, entry->ssl().security_style()); | 41 EXPECT_EQ(SECURITY_STYLE_AUTHENTICATED, entry->ssl().security_style()); |
42 EXPECT_EQ(0, entry->ssl().cert_status() & net::CERT_STATUS_ALL_ERRORS); | 42 EXPECT_EQ(0, entry->ssl().cert_status() & net::CERT_STATUS_ALL_ERRORS); |
43 EXPECT_EQ(displayed_mixed_content, entry->ssl().displayed_mixed_content()); | 43 EXPECT_EQ(mixed_content, entry->ssl().has_mixed_content()); |
44 EXPECT_FALSE(entry->ssl().ran_mixed_content()); | |
45 } | 44 } |
46 | 45 |
47 void CheckUnauthenticatedState(TabContents* tab) { | 46 void CheckUnauthenticatedState(TabContents* tab) { |
48 NavigationEntry* entry = tab->controller().GetActiveEntry(); | 47 NavigationEntry* entry = tab->controller().GetActiveEntry(); |
49 ASSERT_TRUE(entry); | 48 ASSERT_TRUE(entry); |
50 EXPECT_EQ(NavigationEntry::NORMAL_PAGE, entry->page_type()); | 49 EXPECT_EQ(NavigationEntry::NORMAL_PAGE, entry->page_type()); |
51 EXPECT_EQ(SECURITY_STYLE_UNAUTHENTICATED, entry->ssl().security_style()); | 50 EXPECT_EQ(SECURITY_STYLE_UNAUTHENTICATED, entry->ssl().security_style()); |
52 EXPECT_EQ(0, entry->ssl().cert_status() & net::CERT_STATUS_ALL_ERRORS); | 51 EXPECT_EQ(0, entry->ssl().cert_status() & net::CERT_STATUS_ALL_ERRORS); |
53 EXPECT_FALSE(entry->ssl().displayed_mixed_content()); | 52 EXPECT_FALSE(entry->ssl().has_mixed_content()); |
54 EXPECT_FALSE(entry->ssl().ran_mixed_content()); | |
55 } | 53 } |
56 | 54 |
57 void CheckAuthenticationBrokenState(TabContents* tab, | 55 void CheckAuthenticationBrokenState(TabContents* tab, |
58 int error, | 56 int error, |
59 bool ran_mixed_content, | |
60 bool interstitial) { | 57 bool interstitial) { |
61 NavigationEntry* entry = tab->controller().GetActiveEntry(); | 58 NavigationEntry* entry = tab->controller().GetActiveEntry(); |
62 ASSERT_TRUE(entry); | 59 ASSERT_TRUE(entry); |
63 EXPECT_EQ(interstitial ? NavigationEntry::INTERSTITIAL_PAGE : | 60 EXPECT_EQ(interstitial ? NavigationEntry::INTERSTITIAL_PAGE : |
64 NavigationEntry::NORMAL_PAGE, | 61 NavigationEntry::NORMAL_PAGE, |
65 entry->page_type()); | 62 entry->page_type()); |
66 EXPECT_EQ(SECURITY_STYLE_AUTHENTICATION_BROKEN, | 63 EXPECT_EQ(SECURITY_STYLE_AUTHENTICATION_BROKEN, |
67 entry->ssl().security_style()); | 64 entry->ssl().security_style()); |
68 // CERT_STATUS_UNABLE_TO_CHECK_REVOCATION doesn't lower the security style | 65 // CERT_STATUS_UNABLE_TO_CHECK_REVOCATION doesn't lower the security style |
69 // to SECURITY_STYLE_AUTHENTICATION_BROKEN. | 66 // to SECURITY_STYLE_AUTHENTICATION_BROKEN. |
70 ASSERT_NE(net::CERT_STATUS_UNABLE_TO_CHECK_REVOCATION, error); | 67 ASSERT_NE(net::CERT_STATUS_UNABLE_TO_CHECK_REVOCATION, error); |
71 EXPECT_EQ(error, entry->ssl().cert_status() & net::CERT_STATUS_ALL_ERRORS); | 68 EXPECT_EQ(error, entry->ssl().cert_status() & net::CERT_STATUS_ALL_ERRORS); |
72 EXPECT_FALSE(entry->ssl().displayed_mixed_content()); | 69 EXPECT_FALSE(entry->ssl().has_mixed_content()); |
73 EXPECT_EQ(ran_mixed_content, entry->ssl().ran_mixed_content()); | |
74 } | 70 } |
75 | 71 |
76 void CheckWorkerLoadResult(TabContents* tab, bool expectLoaded) { | 72 void CheckWorkerLoadResult(TabContents* tab, bool expectLoaded) { |
77 // Workers are async and we don't have notifications for them passing | 73 // Workers are async and we don't have notifications for them passing |
78 // messages since they do it between renderer and worker processes. | 74 // messages since they do it between renderer and worker processes. |
79 // So have a polling loop, check every 200ms, timeout at 30s. | 75 // So have a polling loop, check every 200ms, timeout at 30s. |
80 const int timeout_ms = 200; | 76 const int timeout_ms = 200; |
81 base::Time timeToQuit = base::Time::Now() + | 77 base::Time timeToQuit = base::Time::Now() + |
82 base::TimeDelta::FromMilliseconds(30000); | 78 base::TimeDelta::FromMilliseconds(30000); |
83 | 79 |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
157 | 153 |
158 // Visits a page with https error and proceed: | 154 // Visits a page with https error and proceed: |
159 IN_PROC_BROWSER_TEST_F(SSLUITest, TestHTTPSExpiredCertAndProceed) { | 155 IN_PROC_BROWSER_TEST_F(SSLUITest, TestHTTPSExpiredCertAndProceed) { |
160 scoped_refptr<HTTPSTestServer> bad_https_server = BadCertServer(); | 156 scoped_refptr<HTTPSTestServer> bad_https_server = BadCertServer(); |
161 ASSERT_TRUE(bad_https_server.get() != NULL); | 157 ASSERT_TRUE(bad_https_server.get() != NULL); |
162 | 158 |
163 ui_test_utils::NavigateToURL(browser(), | 159 ui_test_utils::NavigateToURL(browser(), |
164 bad_https_server->TestServerPage("files/ssl/google.html")); | 160 bad_https_server->TestServerPage("files/ssl/google.html")); |
165 | 161 |
166 TabContents* tab = browser()->GetSelectedTabContents(); | 162 TabContents* tab = browser()->GetSelectedTabContents(); |
167 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false, | 163 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, |
168 true); // Interstitial showing | 164 true); // Interstitial showing |
169 | 165 |
170 ProceedThroughInterstitial(tab); | 166 ProceedThroughInterstitial(tab); |
171 | 167 |
172 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false, | 168 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, |
173 false); // No interstitial showing | 169 false); // No interstitial showing |
174 } | 170 } |
175 | 171 |
176 // Visits a page with https error and don't proceed (and ensure we can still | 172 // Visits a page with https error and don't proceed (and ensure we can still |
177 // navigate at that point): | 173 // navigate at that point): |
178 // Marked as flaky, see bug 40932. | 174 // Marked as flaky, see bug 40932. |
179 // Disabled, flakily exceeds test timeout, http://crbug.com/43575. | 175 // Disabled, flakily exceeds test timeout, http://crbug.com/43575. |
180 IN_PROC_BROWSER_TEST_F(SSLUITest, DISABLED_TestHTTPSExpiredCertAndDontProceed) { | 176 IN_PROC_BROWSER_TEST_F(SSLUITest, DISABLED_TestHTTPSExpiredCertAndDontProceed) { |
181 scoped_refptr<HTTPTestServer> http_server = PlainServer(); | 177 scoped_refptr<HTTPTestServer> http_server = PlainServer(); |
182 ASSERT_TRUE(http_server.get() != NULL); | 178 ASSERT_TRUE(http_server.get() != NULL); |
(...skipping 18 matching lines...) Expand all Loading... |
201 GURL::Replacements replacements; | 197 GURL::Replacements replacements; |
202 std::string new_host("localhost"); | 198 std::string new_host("localhost"); |
203 replacements.SetHostStr(new_host); | 199 replacements.SetHostStr(new_host); |
204 cross_site_url = cross_site_url.ReplaceComponents(replacements); | 200 cross_site_url = cross_site_url.ReplaceComponents(replacements); |
205 | 201 |
206 // Now go to a bad HTTPS page. | 202 // Now go to a bad HTTPS page. |
207 ui_test_utils::NavigateToURL(browser(), cross_site_url); | 203 ui_test_utils::NavigateToURL(browser(), cross_site_url); |
208 | 204 |
209 // An interstitial should be showing. | 205 // An interstitial should be showing. |
210 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_COMMON_NAME_INVALID, | 206 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_COMMON_NAME_INVALID, |
211 false, true); | 207 true); // Interstitial showing. |
212 | 208 |
213 // Simulate user clicking "Take me back". | 209 // Simulate user clicking "Take me back". |
214 InterstitialPage* interstitial_page = tab->interstitial_page(); | 210 InterstitialPage* interstitial_page = tab->interstitial_page(); |
215 ASSERT_TRUE(interstitial_page); | 211 ASSERT_TRUE(interstitial_page); |
216 interstitial_page->DontProceed(); | 212 interstitial_page->DontProceed(); |
217 | 213 |
218 // We should be back to the original good page. | 214 // We should be back to the original good page. |
219 CheckAuthenticatedState(tab, false); | 215 CheckAuthenticatedState(tab, false); |
220 | 216 |
221 // Try to navigate to a new page. (to make sure bug 5800 is fixed). | 217 // Try to navigate to a new page. (to make sure bug 5800 is fixed). |
(...skipping 12 matching lines...) Expand all Loading... |
234 // First navigate to an HTTP page. | 230 // First navigate to an HTTP page. |
235 ui_test_utils::NavigateToURL(browser(), | 231 ui_test_utils::NavigateToURL(browser(), |
236 http_server->TestServerPage("files/ssl/google.html")); | 232 http_server->TestServerPage("files/ssl/google.html")); |
237 TabContents* tab = browser()->GetSelectedTabContents(); | 233 TabContents* tab = browser()->GetSelectedTabContents(); |
238 NavigationEntry* entry = tab->controller().GetActiveEntry(); | 234 NavigationEntry* entry = tab->controller().GetActiveEntry(); |
239 ASSERT_TRUE(entry); | 235 ASSERT_TRUE(entry); |
240 | 236 |
241 // Now go to a bad HTTPS page that shows an interstitial. | 237 // Now go to a bad HTTPS page that shows an interstitial. |
242 ui_test_utils::NavigateToURL(browser(), | 238 ui_test_utils::NavigateToURL(browser(), |
243 bad_https_server->TestServerPage("files/ssl/google.html")); | 239 bad_https_server->TestServerPage("files/ssl/google.html")); |
244 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false, | 240 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, |
245 true); // Interstitial showing | 241 true); // Interstitial showing |
246 | 242 |
247 // Simulate user clicking on back button (crbug.com/39248). | 243 // Simulate user clicking on back button (crbug.com/39248). |
248 browser()->GoBack(CURRENT_TAB); | 244 browser()->GoBack(CURRENT_TAB); |
249 | 245 |
250 // We should be back at the original good page. | 246 // We should be back at the original good page. |
251 EXPECT_FALSE(browser()->GetSelectedTabContents()->interstitial_page()); | 247 EXPECT_FALSE(browser()->GetSelectedTabContents()->interstitial_page()); |
252 CheckUnauthenticatedState(tab); | 248 CheckUnauthenticatedState(tab); |
253 } | 249 } |
254 | 250 |
255 // Visits a page with https error and then goes back using GoToOffset. | 251 // Visits a page with https error and then goes back using GoToOffset. |
256 // Marked as flaky, see bug 40932. | 252 // Marked as flaky, see bug 40932. |
257 IN_PROC_BROWSER_TEST_F(SSLUITest, FLAKY_TestHTTPSExpiredCertAndGoBackViaMenu) { | 253 IN_PROC_BROWSER_TEST_F(SSLUITest, FLAKY_TestHTTPSExpiredCertAndGoBackViaMenu) { |
258 scoped_refptr<HTTPTestServer> http_server = PlainServer(); | 254 scoped_refptr<HTTPTestServer> http_server = PlainServer(); |
259 ASSERT_TRUE(http_server.get() != NULL); | 255 ASSERT_TRUE(http_server.get() != NULL); |
260 scoped_refptr<HTTPSTestServer> bad_https_server = BadCertServer(); | 256 scoped_refptr<HTTPSTestServer> bad_https_server = BadCertServer(); |
261 ASSERT_TRUE(bad_https_server.get() != NULL); | 257 ASSERT_TRUE(bad_https_server.get() != NULL); |
262 | 258 |
263 // First navigate to an HTTP page. | 259 // First navigate to an HTTP page. |
264 ui_test_utils::NavigateToURL(browser(), | 260 ui_test_utils::NavigateToURL(browser(), |
265 http_server->TestServerPage("files/ssl/google.html")); | 261 http_server->TestServerPage("files/ssl/google.html")); |
266 TabContents* tab = browser()->GetSelectedTabContents(); | 262 TabContents* tab = browser()->GetSelectedTabContents(); |
267 NavigationEntry* entry = tab->controller().GetActiveEntry(); | 263 NavigationEntry* entry = tab->controller().GetActiveEntry(); |
268 ASSERT_TRUE(entry); | 264 ASSERT_TRUE(entry); |
269 | 265 |
270 // Now go to a bad HTTPS page that shows an interstitial. | 266 // Now go to a bad HTTPS page that shows an interstitial. |
271 ui_test_utils::NavigateToURL(browser(), | 267 ui_test_utils::NavigateToURL(browser(), |
272 bad_https_server->TestServerPage("files/ssl/google.html")); | 268 bad_https_server->TestServerPage("files/ssl/google.html")); |
273 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false, | 269 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, |
274 true); // Interstitial showing | 270 true); // Interstitial showing |
275 | 271 |
276 // Simulate user clicking and holding on back button (crbug.com/37215). | 272 // Simulate user clicking and holding on back button (crbug.com/37215). |
277 tab->controller().GoToOffset(-1); | 273 tab->controller().GoToOffset(-1); |
278 | 274 |
279 // We should be back at the original good page. | 275 // We should be back at the original good page. |
280 EXPECT_FALSE(browser()->GetSelectedTabContents()->interstitial_page()); | 276 EXPECT_FALSE(browser()->GetSelectedTabContents()->interstitial_page()); |
281 CheckUnauthenticatedState(tab); | 277 CheckUnauthenticatedState(tab); |
282 } | 278 } |
283 | 279 |
(...skipping 19 matching lines...) Expand all Loading... |
303 // Now go back so that a page is in the forward history. | 299 // Now go back so that a page is in the forward history. |
304 tab->controller().GoBack(); | 300 tab->controller().GoBack(); |
305 ui_test_utils::WaitForNavigation(&(tab->controller())); | 301 ui_test_utils::WaitForNavigation(&(tab->controller())); |
306 ASSERT_TRUE(tab->controller().CanGoForward()); | 302 ASSERT_TRUE(tab->controller().CanGoForward()); |
307 NavigationEntry* entry3 = tab->controller().GetActiveEntry(); | 303 NavigationEntry* entry3 = tab->controller().GetActiveEntry(); |
308 ASSERT_TRUE(entry1 == entry3); | 304 ASSERT_TRUE(entry1 == entry3); |
309 | 305 |
310 // Now go to a bad HTTPS page that shows an interstitial. | 306 // Now go to a bad HTTPS page that shows an interstitial. |
311 ui_test_utils::NavigateToURL(browser(), | 307 ui_test_utils::NavigateToURL(browser(), |
312 bad_https_server->TestServerPage("files/ssl/google.html")); | 308 bad_https_server->TestServerPage("files/ssl/google.html")); |
313 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false, | 309 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, |
314 true); // Interstitial showing | 310 true); // Interstitial showing |
315 | 311 |
316 // Simulate user clicking and holding on forward button. | 312 // Simulate user clicking and holding on forward button. |
317 tab->controller().GoToOffset(1); | 313 tab->controller().GoToOffset(1); |
318 ui_test_utils::WaitForNavigation(&(tab->controller())); | 314 ui_test_utils::WaitForNavigation(&(tab->controller())); |
319 | 315 |
320 // We should be showing the second good page. | 316 // We should be showing the second good page. |
321 EXPECT_FALSE(browser()->GetSelectedTabContents()->interstitial_page()); | 317 EXPECT_FALSE(browser()->GetSelectedTabContents()->interstitial_page()); |
322 CheckUnauthenticatedState(tab); | 318 CheckUnauthenticatedState(tab); |
323 EXPECT_FALSE(tab->controller().CanGoForward()); | 319 EXPECT_FALSE(tab->controller().CanGoForward()); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
365 &(browser()->GetSelectedTabContents()->controller())); | 361 &(browser()->GetSelectedTabContents()->controller())); |
366 | 362 |
367 // We should have an interstitial page showing. | 363 // We should have an interstitial page showing. |
368 ASSERT_TRUE(browser()->GetSelectedTabContents()->interstitial_page()); | 364 ASSERT_TRUE(browser()->GetSelectedTabContents()->interstitial_page()); |
369 } | 365 } |
370 | 366 |
371 // | 367 // |
372 // Mixed contents | 368 // Mixed contents |
373 // | 369 // |
374 | 370 |
375 // Visits a page that displays mixed content. | 371 // Visits a page with mixed content. |
376 IN_PROC_BROWSER_TEST_F(SSLUITest, TestDisplaysMixedContent) { | 372 IN_PROC_BROWSER_TEST_F(SSLUITest, TestMixedContents) { |
377 scoped_refptr<HTTPSTestServer> https_server = GoodCertServer(); | 373 scoped_refptr<HTTPSTestServer> https_server = GoodCertServer(); |
378 ASSERT_TRUE(https_server.get() != NULL); | 374 ASSERT_TRUE(https_server.get() != NULL); |
379 scoped_refptr<HTTPTestServer> http_server = PlainServer(); | 375 scoped_refptr<HTTPTestServer> http_server = PlainServer(); |
380 ASSERT_TRUE(http_server.get() != NULL); | 376 ASSERT_TRUE(http_server.get() != NULL); |
381 | 377 |
382 // Load a page that displays mixed content. | 378 // Load a page with mixed-content, the default behavior is to show the mixed |
| 379 // content. |
383 ui_test_utils::NavigateToURL(browser(), https_server->TestServerPage( | 380 ui_test_utils::NavigateToURL(browser(), https_server->TestServerPage( |
384 "files/ssl/page_displays_mixed_content.html")); | 381 "files/ssl/page_with_mixed_contents.html")); |
385 | 382 |
386 CheckAuthenticatedState(browser()->GetSelectedTabContents(), true); | 383 CheckAuthenticatedState(browser()->GetSelectedTabContents(), true); |
387 } | 384 } |
388 | 385 |
389 // Visits a page that runs mixed content and tries to suppress the mixed content | 386 // Visits a page with an http script that tries to suppress our mixed content |
390 // warnings by randomizing location.hash. | 387 // warnings by randomize location.hash. |
391 // Based on http://crbug.com/8706 | 388 // Based on http://crbug.com/8706 |
392 IN_PROC_BROWSER_TEST_F(SSLUITest, TestRunsMixedContentRandomizeHash) { | 389 IN_PROC_BROWSER_TEST_F(SSLUITest, TestMixedContentsRandomizeHash) { |
393 scoped_refptr<HTTPSTestServer> https_server = GoodCertServer(); | 390 scoped_refptr<HTTPSTestServer> https_server = GoodCertServer(); |
394 ASSERT_TRUE(https_server.get() != NULL); | 391 ASSERT_TRUE(https_server.get() != NULL); |
395 scoped_refptr<HTTPTestServer> http_server = PlainServer(); | 392 scoped_refptr<HTTPTestServer> http_server = PlainServer(); |
396 ASSERT_TRUE(http_server.get() != NULL); | 393 ASSERT_TRUE(http_server.get() != NULL); |
397 | 394 |
398 ui_test_utils::NavigateToURL(browser(), | 395 ui_test_utils::NavigateToURL(browser(), |
399 https_server->TestServerPage("files/ssl/page_runs_mixed_content.html")); | 396 https_server->TestServerPage("files/ssl/page_with_http_script.html")); |
400 | 397 |
401 CheckAuthenticationBrokenState(browser()->GetSelectedTabContents(), 0, true, | 398 CheckAuthenticatedState(browser()->GetSelectedTabContents(), true); |
402 false); | |
403 } | 399 } |
404 | 400 |
405 // Visits a page with unsafe content and make sure that: | 401 // Visits a page with unsafe content and make sure that: |
406 // - frames content is replaced with warning | 402 // - frames content is replaced with warning |
407 // - images and scripts are filtered out entirely | 403 // - images and scripts are filtered out entirely |
408 // Marked as flaky, see bug 40932. | 404 // Marked as flaky, see bug 40932. |
409 IN_PROC_BROWSER_TEST_F(SSLUITest, FLAKY_TestUnsafeContents) { | 405 IN_PROC_BROWSER_TEST_F(SSLUITest, FLAKY_TestUnsafeContents) { |
410 scoped_refptr<HTTPSTestServer> good_https_server = GoodCertServer(); | 406 scoped_refptr<HTTPSTestServer> good_https_server = GoodCertServer(); |
411 ASSERT_TRUE(good_https_server.get() != NULL); | 407 ASSERT_TRUE(good_https_server.get() != NULL); |
412 scoped_refptr<HTTPSTestServer> bad_https_server = BadCertServer(); | 408 scoped_refptr<HTTPSTestServer> bad_https_server = BadCertServer(); |
(...skipping 18 matching lines...) Expand all Loading... |
431 EXPECT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractInt( | 427 EXPECT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractInt( |
432 tab->render_view_host(), std::wstring(), | 428 tab->render_view_host(), std::wstring(), |
433 L"window.domAutomationController.send(ImageWidth());", &img_width)); | 429 L"window.domAutomationController.send(ImageWidth());", &img_width)); |
434 // In order to check that the image was not loaded, we check its width. | 430 // In order to check that the image was not loaded, we check its width. |
435 // The actual image (Google logo) is 114 pixels wide, we assume the broken | 431 // The actual image (Google logo) is 114 pixels wide, we assume the broken |
436 // image is less than 100. | 432 // image is less than 100. |
437 EXPECT_LT(img_width, 100); | 433 EXPECT_LT(img_width, 100); |
438 | 434 |
439 bool js_result = false; | 435 bool js_result = false; |
440 EXPECT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( | 436 EXPECT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( |
441 tab->render_view_host(), std::wstring(), | 437 tab->render_view_host(), L"", |
442 L"window.domAutomationController.send(IsFooSet());", &js_result)); | 438 L"window.domAutomationController.send(IsFooSet());", &js_result)); |
443 EXPECT_FALSE(js_result); | 439 EXPECT_FALSE(js_result); |
444 } | 440 } |
445 | 441 |
446 // Visits a page with mixed content loaded by JS (after the initial page load). | 442 // Visits a page with mixed content loaded by JS (after the initial page load). |
447 IN_PROC_BROWSER_TEST_F(SSLUITest, TestDisplaysMixedContentLoadedFromJS) { | 443 IN_PROC_BROWSER_TEST_F(SSLUITest, TestMixedContentsLoadedFromJS) { |
448 scoped_refptr<HTTPSTestServer> https_server = GoodCertServer(); | 444 scoped_refptr<HTTPSTestServer> https_server = GoodCertServer(); |
449 ASSERT_TRUE(https_server.get() != NULL); | 445 ASSERT_TRUE(https_server.get() != NULL); |
450 scoped_refptr<HTTPTestServer> http_server = PlainServer(); | 446 scoped_refptr<HTTPTestServer> http_server = PlainServer(); |
451 ASSERT_TRUE(http_server.get() != NULL); | 447 ASSERT_TRUE(http_server.get() != NULL); |
452 | 448 |
453 ui_test_utils::NavigateToURL(browser(), https_server->TestServerPage( | 449 ui_test_utils::NavigateToURL(browser(), https_server->TestServerPage( |
454 "files/ssl/page_with_dynamic_mixed_contents.html")); | 450 "files/ssl/page_with_dynamic_mixed_contents.html")); |
455 | 451 |
456 TabContents* tab = browser()->GetSelectedTabContents(); | 452 TabContents* tab = browser()->GetSelectedTabContents(); |
457 CheckAuthenticatedState(tab, false); | 453 CheckAuthenticatedState(tab, false); |
458 | 454 |
459 // Load the insecure image. | 455 // Load the insecure image. |
460 bool js_result = false; | 456 bool js_result = false; |
461 EXPECT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( | 457 EXPECT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( |
462 tab->render_view_host(), std::wstring(), L"loadBadImage();", &js_result)); | 458 tab->render_view_host(), std::wstring(), L"loadBadImage();", &js_result)); |
463 EXPECT_TRUE(js_result); | 459 EXPECT_TRUE(js_result); |
464 | 460 |
465 // We should now have mixed-contents. | 461 // We should now have mixed-contents. |
466 CheckAuthenticatedState(tab, true); | 462 CheckAuthenticatedState(tab, true); |
467 } | 463 } |
468 | 464 |
469 // Visits two pages from the same origin: one that displays mixed content and | 465 // Visits two pages from the same origin: one with mixed content and one |
470 // one that doesn't. The test checks that we do not propagate the mixed content | 466 // without. The test checks that we propagate the mixed content state from one |
471 // state from one to the other. | 467 // to the other. |
472 IN_PROC_BROWSER_TEST_F(SSLUITest, TestDisplaysMixedContentTwoTabs) { | 468 // TODO(jcampan): http://crbug.com/15072 this test fails. |
| 469 IN_PROC_BROWSER_TEST_F(SSLUITest, DISABLED_TestMixedContentsTwoTabs) { |
473 scoped_refptr<HTTPSTestServer> https_server = GoodCertServer(); | 470 scoped_refptr<HTTPSTestServer> https_server = GoodCertServer(); |
474 ASSERT_TRUE(https_server.get() != NULL); | 471 ASSERT_TRUE(https_server.get() != NULL); |
475 scoped_refptr<HTTPTestServer> http_server = PlainServer(); | 472 scoped_refptr<HTTPTestServer> http_server = PlainServer(); |
476 ASSERT_TRUE(http_server.get() != NULL); | 473 ASSERT_TRUE(http_server.get() != NULL); |
477 | 474 |
478 ui_test_utils::NavigateToURL(browser(), | 475 ui_test_utils::NavigateToURL(browser(), |
479 https_server->TestServerPage("files/ssl/blank_page.html")); | 476 https_server->TestServerPage("files/ssl/blank_page.html")); |
480 | 477 |
481 TabContents* tab1 = browser()->GetSelectedTabContents(); | 478 TabContents* tab1 = browser()->GetSelectedTabContents(); |
482 | 479 |
483 // This tab should be fine. | 480 // This tab should be fine. |
484 CheckAuthenticatedState(tab1, false); | 481 CheckAuthenticatedState(tab1, false); |
485 | 482 |
486 // Create a new tab. | 483 // Create a new tab. |
487 GURL url = https_server->TestServerPage( | 484 GURL url = |
488 "files/ssl/page_displays_mixed_content.html"); | 485 https_server->TestServerPage("files/ssl/page_with_http_script.html"); |
489 TabContents* tab2 = browser()->AddTabWithURL(url, GURL(), | 486 TabContents* tab2 = browser()->AddTabWithURL(url, GURL(), |
490 PageTransition::TYPED, 0, Browser::ADD_SELECTED, tab1->GetSiteInstance(), | 487 PageTransition::TYPED, 0, Browser::ADD_SELECTED, NULL, std::string()); |
491 std::string()); | |
492 ui_test_utils::WaitForNavigation(&(tab2->controller())); | 488 ui_test_utils::WaitForNavigation(&(tab2->controller())); |
493 | 489 |
494 // The new tab has mixed content. | 490 // The new tab has mixed content. |
495 CheckAuthenticatedState(tab2, true); | 491 CheckAuthenticatedState(tab2, true); |
496 | 492 |
497 // The original tab should not be contaminated. | |
498 CheckAuthenticatedState(tab1, false); | |
499 } | |
500 | |
501 // Visits two pages from the same origin: one that runs mixed content and one | |
502 // that doesn't. The test checks that we propagate the mixed content state from | |
503 // one to the other. | |
504 IN_PROC_BROWSER_TEST_F(SSLUITest, TestRunsMixedContentTwoTabs) { | |
505 scoped_refptr<HTTPSTestServer> https_server = GoodCertServer(); | |
506 ASSERT_TRUE(https_server.get() != NULL); | |
507 scoped_refptr<HTTPTestServer> http_server = PlainServer(); | |
508 ASSERT_TRUE(http_server.get() != NULL); | |
509 | |
510 ui_test_utils::NavigateToURL(browser(), | |
511 https_server->TestServerPage("files/ssl/blank_page.html")); | |
512 | |
513 TabContents* tab1 = browser()->GetSelectedTabContents(); | |
514 | |
515 // This tab should be fine. | |
516 CheckAuthenticatedState(tab1, false); | |
517 | |
518 // Create a new tab. | |
519 GURL url = | |
520 https_server->TestServerPage("files/ssl/page_runs_mixed_content.html"); | |
521 TabContents* tab2 = browser()->AddTabWithURL(url, GURL(), | |
522 PageTransition::TYPED, 0, Browser::ADD_SELECTED, tab1->GetSiteInstance(), | |
523 std::string()); | |
524 ui_test_utils::WaitForNavigation(&(tab2->controller())); | |
525 | |
526 // The new tab has mixed content. | |
527 CheckAuthenticationBrokenState(tab2, 0, true, false); | |
528 | |
529 // Which means the origin for the first tab has also been contaminated with | 493 // Which means the origin for the first tab has also been contaminated with |
530 // mixed content. | 494 // mixed content. |
531 CheckAuthenticationBrokenState(tab1, 0, true, false); | 495 CheckAuthenticatedState(tab1, true); |
532 } | 496 } |
533 | 497 |
534 // Visits a page with an image over http. Visits another page over https | 498 // Visits a page with an image over http. Visits another page over https |
535 // referencing that same image over http (hoping it is coming from the webcore | 499 // referencing that same image over http (hoping it is coming from the webcore |
536 // memory cache). | 500 // memory cache). |
537 IN_PROC_BROWSER_TEST_F(SSLUITest, TestDisplaysCachedMixedContent) { | 501 IN_PROC_BROWSER_TEST_F(SSLUITest, TestCachedMixedContents) { |
538 scoped_refptr<HTTPSTestServer> https_server = GoodCertServer(); | 502 scoped_refptr<HTTPSTestServer> https_server = GoodCertServer(); |
539 ASSERT_TRUE(https_server.get() != NULL); | 503 ASSERT_TRUE(https_server.get() != NULL); |
540 scoped_refptr<HTTPTestServer> http_server = PlainServer(); | 504 scoped_refptr<HTTPTestServer> http_server = PlainServer(); |
541 ASSERT_TRUE(http_server.get() != NULL); | 505 ASSERT_TRUE(http_server.get() != NULL); |
542 | 506 |
543 ui_test_utils::NavigateToURL(browser(), http_server->TestServerPage( | 507 ui_test_utils::NavigateToURL(browser(), http_server->TestServerPage( |
544 "files/ssl/page_displays_mixed_content.html")); | 508 "files/ssl/page_with_mixed_contents.html")); |
545 TabContents* tab = browser()->GetSelectedTabContents(); | 509 TabContents* tab = browser()->GetSelectedTabContents(); |
546 CheckUnauthenticatedState(tab); | 510 CheckUnauthenticatedState(tab); |
547 | 511 |
548 // Load again but over SSL. It should be marked as displaying mixed content | 512 // Load again but over SSL. It should have mixed-contents (even though the |
549 // (even though the image comes from the WebCore memory cache). | 513 // image comes from the WebCore memory cache). |
550 ui_test_utils::NavigateToURL(browser(), https_server->TestServerPage( | 514 ui_test_utils::NavigateToURL(browser(), https_server->TestServerPage( |
551 "files/ssl/page_displays_mixed_content.html")); | 515 "files/ssl/page_with_mixed_contents.html")); |
552 CheckAuthenticatedState(tab, true); | 516 CheckAuthenticatedState(tab, true); |
553 } | 517 } |
554 | 518 |
555 // Visits a page with script over http. Visits another page over https | |
556 // referencing that same script over http (hoping it is coming from the webcore | |
557 // memory cache). | |
558 IN_PROC_BROWSER_TEST_F(SSLUITest, TestRunsCachedMixedContent) { | |
559 scoped_refptr<HTTPSTestServer> https_server = GoodCertServer(); | |
560 ASSERT_TRUE(https_server.get() != NULL); | |
561 scoped_refptr<HTTPTestServer> http_server = PlainServer(); | |
562 ASSERT_TRUE(http_server.get() != NULL); | |
563 | |
564 ui_test_utils::NavigateToURL(browser(), | |
565 http_server->TestServerPage("files/ssl/page_runs_mixed_content.html")); | |
566 TabContents* tab = browser()->GetSelectedTabContents(); | |
567 CheckUnauthenticatedState(tab); | |
568 | |
569 // Load again but over SSL. It should be marked as displaying mixed content | |
570 // (even though the image comes from the WebCore memory cache). | |
571 ui_test_utils::NavigateToURL(browser(), | |
572 https_server->TestServerPage("files/ssl/page_runs_mixed_content.html")); | |
573 CheckAuthenticationBrokenState(tab, 0, true, false); | |
574 } | |
575 | |
576 // This test ensures the CN invalid status does not 'stick' to a certificate | 519 // This test ensures the CN invalid status does not 'stick' to a certificate |
577 // (see bug #1044942) and that it depends on the host-name. | 520 // (see bug #1044942) and that it depends on the host-name. |
578 IN_PROC_BROWSER_TEST_F(SSLUITest, TestCNInvalidStickiness) { | 521 IN_PROC_BROWSER_TEST_F(SSLUITest, TestCNInvalidStickiness) { |
579 const std::string kLocalHost = "localhost"; | 522 const std::string kLocalHost = "localhost"; |
580 scoped_refptr<HTTPSTestServer> https_server = | 523 scoped_refptr<HTTPSTestServer> https_server = |
581 HTTPSTestServer::CreateMismatchedServer(kDocRoot); | 524 HTTPSTestServer::CreateMismatchedServer(kDocRoot); |
582 ASSERT_TRUE(https_server.get() != NULL); | 525 ASSERT_TRUE(https_server.get() != NULL); |
583 | 526 |
584 // First we hit the server with hostname, this generates an invalid policy | 527 // First we hit the server with hostname, this generates an invalid policy |
585 // error. | 528 // error. |
586 ui_test_utils::NavigateToURL(browser(), | 529 ui_test_utils::NavigateToURL(browser(), |
587 https_server->TestServerPage("files/ssl/google.html")); | 530 https_server->TestServerPage("files/ssl/google.html")); |
588 | 531 |
589 // We get an interstitial page as a result. | 532 // We get an interstitial page as a result. |
590 TabContents* tab = browser()->GetSelectedTabContents(); | 533 TabContents* tab = browser()->GetSelectedTabContents(); |
591 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_COMMON_NAME_INVALID, | 534 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_COMMON_NAME_INVALID, |
592 false, true); // Interstitial showing. | 535 true); // Interstitial showing. |
593 | 536 |
594 ProceedThroughInterstitial(tab); | 537 ProceedThroughInterstitial(tab); |
595 | 538 |
596 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_COMMON_NAME_INVALID, | 539 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_COMMON_NAME_INVALID, |
597 false, false); // No interstitial showing. | 540 false); // No interstitial showing. |
598 | 541 |
599 // Now we try again with the right host name this time. | 542 // Now we try again with the right host name this time. |
600 | 543 |
601 // Let's change the host-name in the url. | 544 // Let's change the host-name in the url. |
602 GURL url = https_server->TestServerPage("files/ssl/google.html"); | 545 GURL url = https_server->TestServerPage("files/ssl/google.html"); |
603 std::string::size_type hostname_index = url.spec().find(kLocalHost); | 546 std::string::size_type hostname_index = url.spec().find(kLocalHost); |
604 ASSERT_TRUE(hostname_index != std::string::npos); // Test sanity check. | 547 ASSERT_TRUE(hostname_index != std::string::npos); // Test sanity check. |
605 std::string new_url; | 548 std::string new_url; |
606 new_url.append(url.spec().substr(0, hostname_index)); | 549 new_url.append(url.spec().substr(0, hostname_index)); |
607 new_url.append(net::TestServerLauncher::kHostName); | 550 new_url.append(net::TestServerLauncher::kHostName); |
608 new_url.append(url.spec().substr(hostname_index + kLocalHost.size())); | 551 new_url.append(url.spec().substr(hostname_index + kLocalHost.size())); |
609 | 552 |
610 ui_test_utils::NavigateToURL(browser(), GURL(new_url)); | 553 ui_test_utils::NavigateToURL(browser(), GURL(new_url)); |
611 | 554 |
612 // Security state should be OK. | 555 // Security state should be OK. |
613 CheckAuthenticatedState(tab, false); | 556 CheckAuthenticatedState(tab, false); |
614 | 557 |
615 // Now try again the broken one to make sure it is still broken. | 558 // Now try again the broken one to make sure it is still broken. |
616 ui_test_utils::NavigateToURL(browser(), | 559 ui_test_utils::NavigateToURL(browser(), |
617 https_server->TestServerPage("files/ssl/google.html")); | 560 https_server->TestServerPage("files/ssl/google.html")); |
618 | 561 |
619 // Since we OKed the interstitial last time, we get right to the page. | 562 // Since we OKed the interstitial last time, we get right to the page. |
620 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_COMMON_NAME_INVALID, | 563 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_COMMON_NAME_INVALID, |
621 false, false); // No interstitial showing. | 564 false); // No interstitial showing. |
622 } | 565 } |
623 | 566 |
624 // Test that navigating to a #ref does not change a bad security state. | 567 // Test that navigating to a #ref does not change a bad security state. |
625 IN_PROC_BROWSER_TEST_F(SSLUITest, TestRefNavigation) { | 568 IN_PROC_BROWSER_TEST_F(SSLUITest, TestRefNavigation) { |
626 scoped_refptr<HTTPSTestServer> bad_https_server = BadCertServer(); | 569 scoped_refptr<HTTPSTestServer> bad_https_server = BadCertServer(); |
627 ASSERT_TRUE(bad_https_server.get() != NULL); | 570 ASSERT_TRUE(bad_https_server.get() != NULL); |
628 | 571 |
629 ui_test_utils::NavigateToURL(browser(), | 572 ui_test_utils::NavigateToURL(browser(), |
630 bad_https_server->TestServerPage("files/ssl/page_with_refs.html")); | 573 bad_https_server->TestServerPage("files/ssl/page_with_refs.html")); |
631 | 574 |
632 TabContents* tab = browser()->GetSelectedTabContents(); | 575 TabContents* tab = browser()->GetSelectedTabContents(); |
633 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false, | 576 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, |
634 true); // Interstitial showing. | 577 true); // Interstitial showing. |
635 | 578 |
636 ProceedThroughInterstitial(tab); | 579 ProceedThroughInterstitial(tab); |
637 | 580 |
638 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false, | 581 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, |
639 false); // No interstitial showing. | 582 false); // No interstitial showing. |
640 | 583 |
641 // Now navigate to a ref in the page, the security state should not have | 584 // Now navigate to a ref in the page, the security state should not have |
642 // changed. | 585 // changed. |
643 ui_test_utils::NavigateToURL(browser(), | 586 ui_test_utils::NavigateToURL(browser(), |
644 bad_https_server->TestServerPage("files/ssl/page_with_refs.html#jp")); | 587 bad_https_server->TestServerPage("files/ssl/page_with_refs.html#jp")); |
645 | 588 |
646 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false, | 589 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, |
647 false); // No interstitial showing. | 590 false); // No interstitial showing. |
648 } | 591 } |
649 | 592 |
650 // Tests that closing a page that has a unsafe pop-up does not crash the | 593 // Tests that closing a page that has a unsafe pop-up does not crash the |
651 // browser (bug #1966). | 594 // browser (bug #1966). |
652 // TODO(jcampan): http://crbug.com/2136 disabled because the popup is not | 595 // TODO(jcampan): http://crbug.com/2136 disabled because the popup is not |
653 // opened as it is not initiated by a user gesture. | 596 // opened as it is not initiated by a user gesture. |
654 IN_PROC_BROWSER_TEST_F(SSLUITest, DISABLED_TestCloseTabWithUnsafePopup) { | 597 IN_PROC_BROWSER_TEST_F(SSLUITest, DISABLED_TestCloseTabWithUnsafePopup) { |
655 scoped_refptr<HTTPTestServer> http_server = PlainServer(); | 598 scoped_refptr<HTTPTestServer> http_server = PlainServer(); |
656 ASSERT_TRUE(http_server.get() != NULL); | 599 ASSERT_TRUE(http_server.get() != NULL); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
692 scoped_refptr<HTTPSTestServer> bad_https_server = BadCertServer(); | 635 scoped_refptr<HTTPSTestServer> bad_https_server = BadCertServer(); |
693 ASSERT_TRUE(bad_https_server.get() != NULL); | 636 ASSERT_TRUE(bad_https_server.get() != NULL); |
694 | 637 |
695 GURL url1 = bad_https_server->TestServerPage("server-redirect?"); | 638 GURL url1 = bad_https_server->TestServerPage("server-redirect?"); |
696 GURL url2 = good_https_server->TestServerPage("files/ssl/google.html"); | 639 GURL url2 = good_https_server->TestServerPage("files/ssl/google.html"); |
697 | 640 |
698 ui_test_utils::NavigateToURL(browser(), GURL(url1.spec() + url2.spec())); | 641 ui_test_utils::NavigateToURL(browser(), GURL(url1.spec() + url2.spec())); |
699 | 642 |
700 TabContents* tab = browser()->GetSelectedTabContents(); | 643 TabContents* tab = browser()->GetSelectedTabContents(); |
701 | 644 |
702 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false, | 645 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, |
703 true); // Interstitial showing. | 646 true); // Interstitial showing. |
704 | 647 |
705 ProceedThroughInterstitial(tab); | 648 ProceedThroughInterstitial(tab); |
706 | 649 |
707 // We have been redirected to the good page. | 650 // We have been redirected to the good page. |
708 CheckAuthenticatedState(tab, false); | 651 CheckAuthenticatedState(tab, false); |
709 } | 652 } |
710 | 653 |
711 // Visit a page over good https that is a redirect to a page with bad https. | 654 // Visit a page over good https that is a redirect to a page with bad https. |
712 // Marked as flaky, see bug 40932. | 655 // Marked as flaky, see bug 40932. |
713 IN_PROC_BROWSER_TEST_F(SSLUITest, FLAKY_TestRedirectGoodToBadHTTPS) { | 656 IN_PROC_BROWSER_TEST_F(SSLUITest, FLAKY_TestRedirectGoodToBadHTTPS) { |
714 scoped_refptr<HTTPSTestServer> good_https_server = GoodCertServer(); | 657 scoped_refptr<HTTPSTestServer> good_https_server = GoodCertServer(); |
715 ASSERT_TRUE(good_https_server.get() != NULL); | 658 ASSERT_TRUE(good_https_server.get() != NULL); |
716 scoped_refptr<HTTPSTestServer> bad_https_server = BadCertServer(); | 659 scoped_refptr<HTTPSTestServer> bad_https_server = BadCertServer(); |
717 ASSERT_TRUE(bad_https_server.get() != NULL); | 660 ASSERT_TRUE(bad_https_server.get() != NULL); |
718 | 661 |
719 GURL url1 = good_https_server->TestServerPage("server-redirect?"); | 662 GURL url1 = good_https_server->TestServerPage("server-redirect?"); |
720 GURL url2 = bad_https_server->TestServerPage("files/ssl/google.html"); | 663 GURL url2 = bad_https_server->TestServerPage("files/ssl/google.html"); |
721 ui_test_utils::NavigateToURL(browser(), GURL(url1.spec() + url2.spec())); | 664 ui_test_utils::NavigateToURL(browser(), GURL(url1.spec() + url2.spec())); |
722 | 665 |
723 TabContents* tab = browser()->GetSelectedTabContents(); | 666 TabContents* tab = browser()->GetSelectedTabContents(); |
724 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false, | 667 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, |
725 true); // Interstitial showing. | 668 true); // Interstitial showing. |
726 | 669 |
727 ProceedThroughInterstitial(tab); | 670 ProceedThroughInterstitial(tab); |
728 | 671 |
729 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false, | 672 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, |
730 false); // No interstitial showing. | 673 false); // No interstitial showing. |
731 } | 674 } |
732 | 675 |
733 // Visit a page over http that is a redirect to a page with good HTTPS. | 676 // Visit a page over http that is a redirect to a page with good HTTPS. |
734 IN_PROC_BROWSER_TEST_F(SSLUITest, TestRedirectHTTPToGoodHTTPS) { | 677 IN_PROC_BROWSER_TEST_F(SSLUITest, TestRedirectHTTPToGoodHTTPS) { |
735 scoped_refptr<HTTPTestServer> http_server = PlainServer(); | 678 scoped_refptr<HTTPTestServer> http_server = PlainServer(); |
736 ASSERT_TRUE(http_server.get() != NULL); | 679 ASSERT_TRUE(http_server.get() != NULL); |
737 scoped_refptr<HTTPSTestServer> good_https_server = GoodCertServer(); | 680 scoped_refptr<HTTPSTestServer> good_https_server = GoodCertServer(); |
738 ASSERT_TRUE(good_https_server.get() != NULL); | 681 ASSERT_TRUE(good_https_server.get() != NULL); |
739 | 682 |
(...skipping 16 matching lines...) Expand all Loading... |
756 scoped_refptr<HTTPSTestServer> bad_https_server = BadCertServer(); | 699 scoped_refptr<HTTPSTestServer> bad_https_server = BadCertServer(); |
757 ASSERT_TRUE(bad_https_server.get() != NULL); | 700 ASSERT_TRUE(bad_https_server.get() != NULL); |
758 | 701 |
759 TabContents* tab = browser()->GetSelectedTabContents(); | 702 TabContents* tab = browser()->GetSelectedTabContents(); |
760 | 703 |
761 GURL http_url = http_server->TestServerPage("server-redirect?"); | 704 GURL http_url = http_server->TestServerPage("server-redirect?"); |
762 GURL bad_https_url = | 705 GURL bad_https_url = |
763 bad_https_server->TestServerPage("files/ssl/google.html"); | 706 bad_https_server->TestServerPage("files/ssl/google.html"); |
764 ui_test_utils::NavigateToURL(browser(), | 707 ui_test_utils::NavigateToURL(browser(), |
765 GURL(http_url.spec() + bad_https_url.spec())); | 708 GURL(http_url.spec() + bad_https_url.spec())); |
766 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false, | 709 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, |
767 true); // Interstitial showing. | 710 true); // Interstitial showing. |
768 | 711 |
769 ProceedThroughInterstitial(tab); | 712 ProceedThroughInterstitial(tab); |
770 | 713 |
771 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false, | 714 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, |
772 false); // No interstitial showing. | 715 false); // No interstitial showing. |
773 } | 716 } |
774 | 717 |
775 // Visit a page over https that is a redirect to a page with http (to make sure | 718 // Visit a page over https that is a redirect to a page with http (to make sure |
776 // we don't keep the secure state). | 719 // we don't keep the secure state). |
777 // Marked as flaky, see bug 40932. | 720 // Marked as flaky, see bug 40932. |
778 IN_PROC_BROWSER_TEST_F(SSLUITest, FLAKY_TestRedirectHTTPSToHTTP) { | 721 IN_PROC_BROWSER_TEST_F(SSLUITest, FLAKY_TestRedirectHTTPSToHTTP) { |
779 scoped_refptr<HTTPTestServer> http_server = PlainServer(); | 722 scoped_refptr<HTTPTestServer> http_server = PlainServer(); |
780 ASSERT_TRUE(http_server.get() != NULL); | 723 ASSERT_TRUE(http_server.get() != NULL); |
781 scoped_refptr<HTTPSTestServer> https_server = GoodCertServer(); | 724 scoped_refptr<HTTPSTestServer> https_server = GoodCertServer(); |
(...skipping 20 matching lines...) Expand all Loading... |
802 | 745 |
803 // | 746 // |
804 // Frame navigation | 747 // Frame navigation |
805 // | 748 // |
806 | 749 |
807 // From a good HTTPS top frame: | 750 // From a good HTTPS top frame: |
808 // - navigate to an OK HTTPS frame | 751 // - navigate to an OK HTTPS frame |
809 // - navigate to a bad HTTPS (expect unsafe content and filtered frame), then | 752 // - navigate to a bad HTTPS (expect unsafe content and filtered frame), then |
810 // back | 753 // back |
811 // - navigate to HTTP (expect mixed content), then back | 754 // - navigate to HTTP (expect mixed content), then back |
812 IN_PROC_BROWSER_TEST_F(SSLUITest, FLAKY_TestGoodFrameNavigation) { | 755 IN_PROC_BROWSER_TEST_F(SSLUITest, DISABLED_TestGoodFrameNavigation) { |
813 scoped_refptr<HTTPTestServer> http_server = PlainServer(); | 756 scoped_refptr<HTTPTestServer> http_server = PlainServer(); |
814 ASSERT_TRUE(http_server.get() != NULL); | 757 ASSERT_TRUE(http_server.get() != NULL); |
815 scoped_refptr<HTTPSTestServer> good_https_server = GoodCertServer(); | 758 scoped_refptr<HTTPSTestServer> good_https_server = GoodCertServer(); |
816 ASSERT_TRUE(good_https_server.get() != NULL); | 759 ASSERT_TRUE(good_https_server.get() != NULL); |
817 scoped_refptr<HTTPSTestServer> bad_https_server = BadCertServer(); | 760 scoped_refptr<HTTPSTestServer> bad_https_server = BadCertServer(); |
818 ASSERT_TRUE(bad_https_server.get() != NULL); | 761 ASSERT_TRUE(bad_https_server.get() != NULL); |
819 | 762 |
820 TabContents* tab = browser()->GetSelectedTabContents(); | 763 TabContents* tab = browser()->GetSelectedTabContents(); |
821 ui_test_utils::NavigateToURL(browser(), | 764 ui_test_utils::NavigateToURL(browser(), |
822 good_https_server->TestServerPage("files/ssl/top_frame.html")); | 765 good_https_server->TestServerPage("files/ssl/top_frame.html")); |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
883 // Marked as flaky, see bug 40932. | 826 // Marked as flaky, see bug 40932. |
884 IN_PROC_BROWSER_TEST_F(SSLUITest, FLAKY_TestBadFrameNavigation) { | 827 IN_PROC_BROWSER_TEST_F(SSLUITest, FLAKY_TestBadFrameNavigation) { |
885 scoped_refptr<HTTPSTestServer> good_https_server = GoodCertServer(); | 828 scoped_refptr<HTTPSTestServer> good_https_server = GoodCertServer(); |
886 ASSERT_TRUE(good_https_server.get() != NULL); | 829 ASSERT_TRUE(good_https_server.get() != NULL); |
887 scoped_refptr<HTTPSTestServer> bad_https_server = BadCertServer(); | 830 scoped_refptr<HTTPSTestServer> bad_https_server = BadCertServer(); |
888 ASSERT_TRUE(bad_https_server.get() != NULL); | 831 ASSERT_TRUE(bad_https_server.get() != NULL); |
889 | 832 |
890 TabContents* tab = browser()->GetSelectedTabContents(); | 833 TabContents* tab = browser()->GetSelectedTabContents(); |
891 ui_test_utils::NavigateToURL(browser(), | 834 ui_test_utils::NavigateToURL(browser(), |
892 bad_https_server->TestServerPage("files/ssl/top_frame.html")); | 835 bad_https_server->TestServerPage("files/ssl/top_frame.html")); |
893 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false, | 836 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, |
894 true); // Interstitial showing | 837 true); // Interstitial showing |
895 | 838 |
896 ProceedThroughInterstitial(tab); | 839 ProceedThroughInterstitial(tab); |
897 | 840 |
898 // Navigate to a good frame. | 841 // Navigate to a good frame. |
899 bool success = false; | 842 bool success = false; |
900 EXPECT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( | 843 EXPECT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( |
901 tab->render_view_host(), std::wstring(), | 844 tab->render_view_host(), std::wstring(), |
902 L"window.domAutomationController.send(clickLink('goodHTTPSLink'));", | 845 L"window.domAutomationController.send(clickLink('goodHTTPSLink'));", |
903 &success)); | 846 &success)); |
904 EXPECT_TRUE(success); | 847 EXPECT_TRUE(success); |
905 ui_test_utils::WaitForNavigation(&tab->controller()); | 848 ui_test_utils::WaitForNavigation(&tab->controller()); |
906 | 849 |
907 // We should still be authentication broken. | 850 // We should still be authentication broken. |
908 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false, | 851 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false); |
909 false); | |
910 } | 852 } |
911 | 853 |
912 // From an HTTP top frame, navigate to good and bad HTTPS (security state should | 854 // From an HTTP top frame, navigate to good and bad HTTPS (security state should |
913 // stay unauthenticated). | 855 // stay unauthenticated). |
914 // Marked as flaky, see bug 40932. | 856 // Marked as flaky, see bug 40932. |
915 // Disabled, flakily exceeds test timeout, http://crbug.com/43437. | 857 // Disabled, flakily exceeds test timeout, http://crbug.com/43437. |
916 IN_PROC_BROWSER_TEST_F(SSLUITest, DISABLED_TestUnauthenticatedFrameNavigation) { | 858 IN_PROC_BROWSER_TEST_F(SSLUITest, DISABLED_TestUnauthenticatedFrameNavigation) { |
917 scoped_refptr<HTTPTestServer> http_server = PlainServer(); | 859 scoped_refptr<HTTPTestServer> http_server = PlainServer(); |
918 ASSERT_TRUE(http_server.get() != NULL); | 860 ASSERT_TRUE(http_server.get() != NULL); |
919 scoped_refptr<HTTPSTestServer> good_https_server = GoodCertServer(); | 861 scoped_refptr<HTTPSTestServer> good_https_server = GoodCertServer(); |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
983 scoped_refptr<HTTPSTestServer> good_https_server = GoodCertServer(); | 925 scoped_refptr<HTTPSTestServer> good_https_server = GoodCertServer(); |
984 ASSERT_TRUE(good_https_server.get() != NULL); | 926 ASSERT_TRUE(good_https_server.get() != NULL); |
985 scoped_refptr<HTTPSTestServer> bad_https_server = BadCertServer(); | 927 scoped_refptr<HTTPSTestServer> bad_https_server = BadCertServer(); |
986 ASSERT_TRUE(bad_https_server.get() != NULL); | 928 ASSERT_TRUE(bad_https_server.get() != NULL); |
987 | 929 |
988 // Navigate to an unsafe site. Proceed with interstitial page to indicate | 930 // Navigate to an unsafe site. Proceed with interstitial page to indicate |
989 // the user approves the bad certificate. | 931 // the user approves the bad certificate. |
990 ui_test_utils::NavigateToURL(browser(), | 932 ui_test_utils::NavigateToURL(browser(), |
991 bad_https_server->TestServerPage("files/ssl/blank_page.html")); | 933 bad_https_server->TestServerPage("files/ssl/blank_page.html")); |
992 TabContents* tab = browser()->GetSelectedTabContents(); | 934 TabContents* tab = browser()->GetSelectedTabContents(); |
993 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false, | 935 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, |
994 true); // Interstitial showing | 936 true); // Interstitial showing |
995 ProceedThroughInterstitial(tab); | 937 ProceedThroughInterstitial(tab); |
996 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false, | 938 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, |
997 false); // No Interstitial | 939 false); // No Interstitial |
998 | 940 |
999 // Navigate to safe page that has Worker loading unsafe content. | 941 // Navigate to safe page that has Worker loading unsafe content. |
1000 // Expect content to load but be marked as auth broken due to running mixed | 942 // Expect content to load but 'mixed' indicators show up. |
1001 // content. | |
1002 ui_test_utils::NavigateToURL(browser(), good_https_server->TestServerPage( | 943 ui_test_utils::NavigateToURL(browser(), good_https_server->TestServerPage( |
1003 "files/ssl/page_with_unsafe_worker.html")); | 944 "files/ssl/page_with_unsafe_worker.html")); |
1004 CheckWorkerLoadResult(tab, true); // Worker loads mixed content | 945 CheckWorkerLoadResult(tab, true); // Worker loads mixed content |
1005 CheckAuthenticationBrokenState(tab, 0, true, false); | 946 CheckAuthenticatedState(tab, true); |
1006 } | 947 } |
1007 | 948 |
1008 // TODO(jcampan): more tests to do below. | 949 // TODO(jcampan): more tests to do below. |
1009 | 950 |
1010 // Visit a page over https that contains a frame with a redirect. | 951 // Visit a page over https that contains a frame with a redirect. |
1011 | 952 |
1012 // XMLHttpRequest mixed in synchronous mode. | 953 // XMLHttpRequest mixed in synchronous mode. |
1013 | 954 |
1014 // XMLHttpRequest mixed in asynchronous mode. | 955 // XMLHttpRequest mixed in asynchronous mode. |
1015 | 956 |
1016 // XMLHttpRequest over bad ssl in synchronous mode. | 957 // XMLHttpRequest over bad ssl in synchronous mode. |
1017 | 958 |
1018 // XMLHttpRequest over OK ssl in synchronous mode. | 959 // XMLHttpRequest over OK ssl in synchronous mode. |
OLD | NEW |