| 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 #include "content/browser/site_per_process_browsertest.h" | 5 #include "content/browser/site_per_process_browsertest.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <algorithm> | 10 #include <algorithm> |
| (...skipping 15 matching lines...) Expand all Loading... |
| 26 #include "content/browser/frame_host/interstitial_page_impl.h" | 26 #include "content/browser/frame_host/interstitial_page_impl.h" |
| 27 #include "content/browser/frame_host/navigator.h" | 27 #include "content/browser/frame_host/navigator.h" |
| 28 #include "content/browser/frame_host/render_frame_proxy_host.h" | 28 #include "content/browser/frame_host/render_frame_proxy_host.h" |
| 29 #include "content/browser/frame_host/render_widget_host_view_child_frame.h" | 29 #include "content/browser/frame_host/render_widget_host_view_child_frame.h" |
| 30 #include "content/browser/gpu/compositor_util.h" | 30 #include "content/browser/gpu/compositor_util.h" |
| 31 #include "content/browser/loader/resource_dispatcher_host_impl.h" | 31 #include "content/browser/loader/resource_dispatcher_host_impl.h" |
| 32 #include "content/browser/renderer_host/input/synthetic_tap_gesture.h" | 32 #include "content/browser/renderer_host/input/synthetic_tap_gesture.h" |
| 33 #include "content/browser/renderer_host/render_view_host_impl.h" | 33 #include "content/browser/renderer_host/render_view_host_impl.h" |
| 34 #include "content/browser/renderer_host/render_widget_host_input_event_router.h" | 34 #include "content/browser/renderer_host/render_widget_host_input_event_router.h" |
| 35 #include "content/browser/renderer_host/render_widget_host_view_aura.h" | 35 #include "content/browser/renderer_host/render_widget_host_view_aura.h" |
| 36 #include "content/browser/web_contents/web_contents_impl.h" |
| 36 #include "content/common/child_process_messages.h" | 37 #include "content/common/child_process_messages.h" |
| 37 #include "content/common/frame_messages.h" | 38 #include "content/common/frame_messages.h" |
| 38 #include "content/common/input/synthetic_tap_gesture_params.h" | 39 #include "content/common/input/synthetic_tap_gesture_params.h" |
| 39 #include "content/common/input_messages.h" | 40 #include "content/common/input_messages.h" |
| 40 #include "content/common/view_messages.h" | 41 #include "content/common/view_messages.h" |
| 41 #include "content/public/browser/cert_store.h" | 42 #include "content/public/browser/cert_store.h" |
| 42 #include "content/public/browser/interstitial_page_delegate.h" | 43 #include "content/public/browser/interstitial_page_delegate.h" |
| 43 #include "content/public/browser/notification_observer.h" | 44 #include "content/public/browser/notification_observer.h" |
| 44 #include "content/public/browser/notification_service.h" | 45 #include "content/public/browser/notification_service.h" |
| 45 #include "content/public/browser/notification_types.h" | 46 #include "content/public/browser/notification_types.h" |
| (...skipping 6235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6281 #else | 6282 #else |
| 6282 #define MAYBE_PassiveMixedContentInIframe PassiveMixedContentInIframe | 6283 #define MAYBE_PassiveMixedContentInIframe PassiveMixedContentInIframe |
| 6283 #endif | 6284 #endif |
| 6284 IN_PROC_BROWSER_TEST_F(SitePerProcessIgnoreCertErrorsBrowserTest, | 6285 IN_PROC_BROWSER_TEST_F(SitePerProcessIgnoreCertErrorsBrowserTest, |
| 6285 MAYBE_PassiveMixedContentInIframe) { | 6286 MAYBE_PassiveMixedContentInIframe) { |
| 6286 net::EmbeddedTestServer https_server(net::EmbeddedTestServer::TYPE_HTTPS); | 6287 net::EmbeddedTestServer https_server(net::EmbeddedTestServer::TYPE_HTTPS); |
| 6287 https_server.ServeFilesFromSourceDirectory("content/test/data"); | 6288 https_server.ServeFilesFromSourceDirectory("content/test/data"); |
| 6288 ASSERT_TRUE(https_server.Start()); | 6289 ASSERT_TRUE(https_server.Start()); |
| 6289 SetupCrossSiteRedirector(&https_server); | 6290 SetupCrossSiteRedirector(&https_server); |
| 6290 | 6291 |
| 6292 WebContentsImpl* web_contents = |
| 6293 static_cast<WebContentsImpl*>(shell()->web_contents()); |
| 6294 |
| 6291 GURL iframe_url( | 6295 GURL iframe_url( |
| 6292 https_server.GetURL("/mixed-content/basic-passive-in-iframe.html")); | 6296 https_server.GetURL("/mixed-content/basic-passive-in-iframe.html")); |
| 6293 EXPECT_TRUE(NavigateToURL(shell(), iframe_url)); | 6297 EXPECT_TRUE(NavigateToURL(shell(), iframe_url)); |
| 6294 EXPECT_TRUE(shell()->web_contents()->DisplayedInsecureContent()); | 6298 EXPECT_TRUE(web_contents->DisplayedInsecureContent()); |
| 6295 | 6299 |
| 6296 // When the subframe navigates, the WebContents should still be marked | 6300 // When the subframe navigates, the WebContents should still be marked |
| 6297 // as having displayed insecure content. | 6301 // as having displayed insecure content. |
| 6298 GURL navigate_url(https_server.GetURL("/title1.html")); | 6302 GURL navigate_url(https_server.GetURL("/title1.html")); |
| 6299 FrameTreeNode* root = web_contents()->GetFrameTree()->root(); | 6303 FrameTreeNode* root = web_contents->GetFrameTree()->root(); |
| 6300 NavigateFrameToURL(root->child_at(0), navigate_url); | 6304 NavigateFrameToURL(root->child_at(0), navigate_url); |
| 6301 EXPECT_TRUE(shell()->web_contents()->DisplayedInsecureContent()); | 6305 EXPECT_TRUE(web_contents->DisplayedInsecureContent()); |
| 6302 | 6306 |
| 6303 // When the main frame navigates, it should no longer be marked as | 6307 // When the main frame navigates, it should no longer be marked as |
| 6304 // displaying insecure content. | 6308 // displaying insecure content. |
| 6305 EXPECT_TRUE( | 6309 EXPECT_TRUE( |
| 6306 NavigateToURL(shell(), https_server.GetURL("b.com", "/title1.html"))); | 6310 NavigateToURL(shell(), https_server.GetURL("b.com", "/title1.html"))); |
| 6307 EXPECT_FALSE(shell()->web_contents()->DisplayedInsecureContent()); | 6311 EXPECT_FALSE(web_contents->DisplayedInsecureContent()); |
| 6308 } | 6312 } |
| 6309 | 6313 |
| 6310 // Tests that, when a parent frame is set to strictly block mixed | 6314 // Tests that, when a parent frame is set to strictly block mixed |
| 6311 // content via Content Security Policy, child OOPIFs cannot display | 6315 // content via Content Security Policy, child OOPIFs cannot display |
| 6312 // mixed content. | 6316 // mixed content. |
| 6313 IN_PROC_BROWSER_TEST_F(SitePerProcessIgnoreCertErrorsBrowserTest, | 6317 IN_PROC_BROWSER_TEST_F(SitePerProcessIgnoreCertErrorsBrowserTest, |
| 6314 PassiveMixedContentInIframeWithStrictBlocking) { | 6318 PassiveMixedContentInIframeWithStrictBlocking) { |
| 6315 net::EmbeddedTestServer https_server(net::EmbeddedTestServer::TYPE_HTTPS); | 6319 net::EmbeddedTestServer https_server(net::EmbeddedTestServer::TYPE_HTTPS); |
| 6316 https_server.ServeFilesFromSourceDirectory("content/test/data"); | 6320 https_server.ServeFilesFromSourceDirectory("content/test/data"); |
| 6317 ASSERT_TRUE(https_server.Start()); | 6321 ASSERT_TRUE(https_server.Start()); |
| 6318 SetupCrossSiteRedirector(&https_server); | 6322 SetupCrossSiteRedirector(&https_server); |
| 6319 | 6323 |
| 6324 WebContentsImpl* web_contents = |
| 6325 static_cast<WebContentsImpl*>(shell()->web_contents()); |
| 6326 |
| 6320 GURL iframe_url_with_strict_blocking(https_server.GetURL( | 6327 GURL iframe_url_with_strict_blocking(https_server.GetURL( |
| 6321 "/mixed-content/basic-passive-in-iframe-with-strict-blocking.html")); | 6328 "/mixed-content/basic-passive-in-iframe-with-strict-blocking.html")); |
| 6322 EXPECT_TRUE(NavigateToURL(shell(), iframe_url_with_strict_blocking)); | 6329 EXPECT_TRUE(NavigateToURL(shell(), iframe_url_with_strict_blocking)); |
| 6323 EXPECT_FALSE(shell()->web_contents()->DisplayedInsecureContent()); | 6330 EXPECT_FALSE(web_contents->DisplayedInsecureContent()); |
| 6324 | 6331 |
| 6325 FrameTreeNode* root = web_contents()->GetFrameTree()->root(); | 6332 FrameTreeNode* root = web_contents->GetFrameTree()->root(); |
| 6326 EXPECT_EQ(blink::kBlockAllMixedContent, | 6333 EXPECT_EQ(blink::kBlockAllMixedContent, |
| 6327 root->current_replication_state().insecure_request_policy); | 6334 root->current_replication_state().insecure_request_policy); |
| 6328 EXPECT_EQ( | 6335 EXPECT_EQ( |
| 6329 blink::kBlockAllMixedContent, | 6336 blink::kBlockAllMixedContent, |
| 6330 root->child_at(0)->current_replication_state().insecure_request_policy); | 6337 root->child_at(0)->current_replication_state().insecure_request_policy); |
| 6331 | 6338 |
| 6332 // When the subframe navigates, it should still be marked as enforcing | 6339 // When the subframe navigates, it should still be marked as enforcing |
| 6333 // strict mixed content. | 6340 // strict mixed content. |
| 6334 GURL navigate_url(https_server.GetURL("/title1.html")); | 6341 GURL navigate_url(https_server.GetURL("/title1.html")); |
| 6335 NavigateFrameToURL(root->child_at(0), navigate_url); | 6342 NavigateFrameToURL(root->child_at(0), navigate_url); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 6349 | 6356 |
| 6350 // Tests that, when a parent frame is set to upgrade insecure requests | 6357 // Tests that, when a parent frame is set to upgrade insecure requests |
| 6351 // via Content Security Policy, child OOPIFs will upgrade as well. | 6358 // via Content Security Policy, child OOPIFs will upgrade as well. |
| 6352 IN_PROC_BROWSER_TEST_F(SitePerProcessIgnoreCertErrorsBrowserTest, | 6359 IN_PROC_BROWSER_TEST_F(SitePerProcessIgnoreCertErrorsBrowserTest, |
| 6353 PassiveMixedContentInIframeWithUpgrade) { | 6360 PassiveMixedContentInIframeWithUpgrade) { |
| 6354 net::EmbeddedTestServer https_server(net::EmbeddedTestServer::TYPE_HTTPS); | 6361 net::EmbeddedTestServer https_server(net::EmbeddedTestServer::TYPE_HTTPS); |
| 6355 https_server.ServeFilesFromSourceDirectory("content/test/data"); | 6362 https_server.ServeFilesFromSourceDirectory("content/test/data"); |
| 6356 ASSERT_TRUE(https_server.Start()); | 6363 ASSERT_TRUE(https_server.Start()); |
| 6357 SetupCrossSiteRedirector(&https_server); | 6364 SetupCrossSiteRedirector(&https_server); |
| 6358 | 6365 |
| 6366 WebContentsImpl* web_contents = |
| 6367 static_cast<WebContentsImpl*>(shell()->web_contents()); |
| 6368 |
| 6359 GURL iframe_url_with_upgrade(https_server.GetURL( | 6369 GURL iframe_url_with_upgrade(https_server.GetURL( |
| 6360 "/mixed-content/basic-passive-in-iframe-with-upgrade.html")); | 6370 "/mixed-content/basic-passive-in-iframe-with-upgrade.html")); |
| 6361 EXPECT_TRUE(NavigateToURL(shell(), iframe_url_with_upgrade)); | 6371 EXPECT_TRUE(NavigateToURL(shell(), iframe_url_with_upgrade)); |
| 6362 EXPECT_FALSE(shell()->web_contents()->DisplayedInsecureContent()); | 6372 EXPECT_FALSE(web_contents->DisplayedInsecureContent()); |
| 6363 | 6373 |
| 6364 FrameTreeNode* root = web_contents()->GetFrameTree()->root(); | 6374 FrameTreeNode* root = web_contents->GetFrameTree()->root(); |
| 6365 EXPECT_EQ(blink::kUpgradeInsecureRequests, | 6375 EXPECT_EQ(blink::kUpgradeInsecureRequests, |
| 6366 root->current_replication_state().insecure_request_policy); | 6376 root->current_replication_state().insecure_request_policy); |
| 6367 EXPECT_EQ( | 6377 EXPECT_EQ( |
| 6368 blink::kUpgradeInsecureRequests, | 6378 blink::kUpgradeInsecureRequests, |
| 6369 root->child_at(0)->current_replication_state().insecure_request_policy); | 6379 root->child_at(0)->current_replication_state().insecure_request_policy); |
| 6370 | 6380 |
| 6371 // When the subframe navigates, it should still be marked as upgrading | 6381 // When the subframe navigates, it should still be marked as upgrading |
| 6372 // insecure requests. | 6382 // insecure requests. |
| 6373 GURL navigate_url(https_server.GetURL("/title1.html")); | 6383 GURL navigate_url(https_server.GetURL("/title1.html")); |
| 6374 NavigateFrameToURL(root->child_at(0), navigate_url); | 6384 NavigateFrameToURL(root->child_at(0), navigate_url); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 6403 FrameTreeNode* root = web_contents()->GetFrameTree()->root(); | 6413 FrameTreeNode* root = web_contents()->GetFrameTree()->root(); |
| 6404 ASSERT_EQ(1U, root->child_count()); | 6414 ASSERT_EQ(1U, root->child_count()); |
| 6405 FrameTreeNode* mixed_child = root->child_at(0)->child_at(0); | 6415 FrameTreeNode* mixed_child = root->child_at(0)->child_at(0); |
| 6406 ASSERT_TRUE(mixed_child); | 6416 ASSERT_TRUE(mixed_child); |
| 6407 // The child iframe attempted to create a mixed iframe; this should | 6417 // The child iframe attempted to create a mixed iframe; this should |
| 6408 // have been blocked, so the mixed iframe should not have committed a | 6418 // have been blocked, so the mixed iframe should not have committed a |
| 6409 // load. | 6419 // load. |
| 6410 EXPECT_FALSE(mixed_child->has_committed_real_load()); | 6420 EXPECT_FALSE(mixed_child->has_committed_real_load()); |
| 6411 } | 6421 } |
| 6412 | 6422 |
| 6413 // Test that subresources with certificate errors that are NOT redundant | 6423 // Test that subresources with certificate errors get reported to the |
| 6414 // with the main page DO get reported to the browser. That is, if | 6424 // browser. That is, if https://example.test frames https://a.com which |
| 6415 // https://nonredundant.test frames https://a.com which loads an image | 6425 // loads an image with certificate errors, the browser should be |
| 6416 // with certificate errors, the browser should be notified about the | 6426 // notified about the subresource with certificate errors and downgrade |
| 6417 // subresource with certificate errors and downgrade the UI | 6427 // the UI appropriately. |
| 6418 // appropriately. | |
| 6419 IN_PROC_BROWSER_TEST_F(SitePerProcessIgnoreCertErrorsBrowserTest, | 6428 IN_PROC_BROWSER_TEST_F(SitePerProcessIgnoreCertErrorsBrowserTest, |
| 6420 SubresourceWithNonRedundantCertificateErrors) { | 6429 SubresourceWithCertificateErrors) { |
| 6421 net::EmbeddedTestServer https_server(net::EmbeddedTestServer::TYPE_HTTPS); | 6430 net::EmbeddedTestServer https_server(net::EmbeddedTestServer::TYPE_HTTPS); |
| 6422 https_server.ServeFilesFromSourceDirectory("content/test/data"); | 6431 https_server.ServeFilesFromSourceDirectory("content/test/data"); |
| 6423 ASSERT_TRUE(https_server.Start()); | 6432 ASSERT_TRUE(https_server.Start()); |
| 6424 SetupCrossSiteRedirector(&https_server); | 6433 SetupCrossSiteRedirector(&https_server); |
| 6425 | 6434 |
| 6426 GURL url(https_server.GetURL( | 6435 GURL url(https_server.GetURL( |
| 6427 "nonredundant.test", | 6436 "example.test", |
| 6428 "/mixed-content/non-redundant-cert-error-in-iframe.html")); | 6437 "/mixed-content/non-redundant-cert-error-in-iframe.html")); |
| 6429 EXPECT_TRUE(NavigateToURL(shell(), url)); | 6438 EXPECT_TRUE(NavigateToURL(shell(), url)); |
| 6430 | 6439 |
| 6431 NavigationEntry* entry = | 6440 NavigationEntry* entry = |
| 6432 shell()->web_contents()->GetController().GetLastCommittedEntry(); | 6441 shell()->web_contents()->GetController().GetLastCommittedEntry(); |
| 6433 ASSERT_TRUE(entry); | 6442 ASSERT_TRUE(entry); |
| 6434 | 6443 |
| 6435 // The main page was loaded with certificate errors. | 6444 // The main page was loaded with certificate errors. |
| 6436 EXPECT_EQ(SECURITY_STYLE_AUTHENTICATION_BROKEN, | 6445 EXPECT_EQ(SECURITY_STYLE_AUTHENTICATION_BROKEN, |
| 6437 entry->GetSSL().security_style); | 6446 entry->GetSSL().security_style); |
| 6438 | 6447 |
| 6439 // The image that the iframe loaded had certificate errors also, and | 6448 // The image that the iframe loaded had certificate errors also, so |
| 6440 // they were different than the certificate errors of the main | 6449 // the page should be marked as having displayed subresources with |
| 6441 // resource, so the page should be marked as having displayed insecure | 6450 // cert errors. |
| 6442 // content. | |
| 6443 EXPECT_TRUE(entry->GetSSL().content_status & | 6451 EXPECT_TRUE(entry->GetSSL().content_status & |
| 6444 SSLStatus::DISPLAYED_INSECURE_CONTENT); | 6452 SSLStatus::DISPLAYED_CONTENT_WITH_CERT_ERRORS); |
| 6445 } | 6453 } |
| 6446 | 6454 |
| 6447 // Test setting a cross-origin iframe to display: none. | 6455 // Test setting a cross-origin iframe to display: none. |
| 6448 IN_PROC_BROWSER_TEST_F(SitePerProcessBrowserTest, CrossSiteIframeDisplayNone) { | 6456 IN_PROC_BROWSER_TEST_F(SitePerProcessBrowserTest, CrossSiteIframeDisplayNone) { |
| 6449 GURL main_url(embedded_test_server()->GetURL( | 6457 GURL main_url(embedded_test_server()->GetURL( |
| 6450 "a.com", "/cross_site_iframe_factory.html?a(b)")); | 6458 "a.com", "/cross_site_iframe_factory.html?a(b)")); |
| 6451 NavigateToURL(shell(), main_url); | 6459 NavigateToURL(shell(), main_url); |
| 6452 | 6460 |
| 6453 FrameTreeNode* root = web_contents()->GetFrameTree()->root(); | 6461 FrameTreeNode* root = web_contents()->GetFrameTree()->root(); |
| 6454 RenderWidgetHost* root_render_widget_host = | 6462 RenderWidgetHost* root_render_widget_host = |
| (...skipping 1385 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7840 // Send a postMessage from the child to its parent. This verifies that the | 7848 // Send a postMessage from the child to its parent. This verifies that the |
| 7841 // parent's proxy in the child's SiteInstance was also restored. | 7849 // parent's proxy in the child's SiteInstance was also restored. |
| 7842 base::string16 expected_title(base::UTF8ToUTF16("I am alive!")); | 7850 base::string16 expected_title(base::UTF8ToUTF16("I am alive!")); |
| 7843 TitleWatcher title_watcher(shell()->web_contents(), expected_title); | 7851 TitleWatcher title_watcher(shell()->web_contents(), expected_title); |
| 7844 EXPECT_TRUE(ExecuteScript(child->current_frame_host(), | 7852 EXPECT_TRUE(ExecuteScript(child->current_frame_host(), |
| 7845 "parent.postMessage('I am alive!', '*');")); | 7853 "parent.postMessage('I am alive!', '*');")); |
| 7846 EXPECT_EQ(expected_title, title_watcher.WaitAndGetTitle()); | 7854 EXPECT_EQ(expected_title, title_watcher.WaitAndGetTitle()); |
| 7847 } | 7855 } |
| 7848 | 7856 |
| 7849 } // namespace content | 7857 } // namespace content |
| OLD | NEW |