| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 <set> | 5 #include <set> |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/json/json_reader.h" | 8 #include "base/json/json_reader.h" |
| 9 #include "base/location.h" | 9 #include "base/location.h" |
| 10 #include "base/memory/ref_counted.h" | 10 #include "base/memory/ref_counted.h" |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 #include "content/public/browser/navigation_controller.h" | 23 #include "content/public/browser/navigation_controller.h" |
| 24 #include "content/public/browser/navigation_entry.h" | 24 #include "content/public/browser/navigation_entry.h" |
| 25 #include "content/public/browser/render_process_host.h" | 25 #include "content/public/browser/render_process_host.h" |
| 26 #include "content/public/browser/web_contents.h" | 26 #include "content/public/browser/web_contents.h" |
| 27 #include "content/public/browser/web_contents_observer.h" | 27 #include "content/public/browser/web_contents_observer.h" |
| 28 #include "content/public/common/bindings_policy.h" | 28 #include "content/public/common/bindings_policy.h" |
| 29 #include "content/public/common/content_switches.h" | 29 #include "content/public/common/content_switches.h" |
| 30 #include "content/public/common/file_chooser_file_info.h" | 30 #include "content/public/common/file_chooser_file_info.h" |
| 31 #include "content/public/common/file_chooser_params.h" | 31 #include "content/public/common/file_chooser_params.h" |
| 32 #include "content/public/common/page_state.h" | 32 #include "content/public/common/page_state.h" |
| 33 #include "content/public/common/site_isolation_policy.h" |
| 33 #include "content/public/common/url_constants.h" | 34 #include "content/public/common/url_constants.h" |
| 34 #include "content/public/test/browser_test_utils.h" | 35 #include "content/public/test/browser_test_utils.h" |
| 35 #include "content/public/test/content_browser_test.h" | 36 #include "content/public/test/content_browser_test.h" |
| 36 #include "content/public/test/content_browser_test_utils.h" | 37 #include "content/public/test/content_browser_test_utils.h" |
| 37 #include "content/public/test/test_navigation_observer.h" | 38 #include "content/public/test/test_navigation_observer.h" |
| 38 #include "content/public/test/test_utils.h" | 39 #include "content/public/test/test_utils.h" |
| 39 #include "content/shell/browser/shell.h" | 40 #include "content/shell/browser/shell.h" |
| 40 #include "net/base/net_util.h" | 41 #include "net/base/net_util.h" |
| 41 #include "net/dns/mock_host_resolver.h" | 42 #include "net/dns/mock_host_resolver.h" |
| 42 #include "net/test/embedded_test_server/embedded_test_server.h" | 43 #include "net/test/embedded_test_server/embedded_test_server.h" |
| (...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 334 Shell* new_shell = new_shell_observer.GetShell(); | 335 Shell* new_shell = new_shell_observer.GetShell(); |
| 335 | 336 |
| 336 // Wait for the cross-site transition in the new tab to finish. | 337 // Wait for the cross-site transition in the new tab to finish. |
| 337 EXPECT_TRUE(WaitForLoadStop(new_shell->web_contents())); | 338 EXPECT_TRUE(WaitForLoadStop(new_shell->web_contents())); |
| 338 EXPECT_EQ("/files/title2.html", | 339 EXPECT_EQ("/files/title2.html", |
| 339 new_shell->web_contents()->GetLastCommittedURL().path()); | 340 new_shell->web_contents()->GetLastCommittedURL().path()); |
| 340 | 341 |
| 341 // Should have the same SiteInstance unless we're in site-per-process mode. | 342 // Should have the same SiteInstance unless we're in site-per-process mode. |
| 342 scoped_refptr<SiteInstance> blank_site_instance( | 343 scoped_refptr<SiteInstance> blank_site_instance( |
| 343 new_shell->web_contents()->GetSiteInstance()); | 344 new_shell->web_contents()->GetSiteInstance()); |
| 344 if (!base::CommandLine::ForCurrentProcess()->HasSwitch( | 345 if (SiteIsolationPolicy::AreAllSitesIsolatedForTesting()) |
| 345 switches::kSitePerProcess)) | 346 EXPECT_NE(orig_site_instance, blank_site_instance); |
| 347 else |
| 346 EXPECT_EQ(orig_site_instance, blank_site_instance); | 348 EXPECT_EQ(orig_site_instance, blank_site_instance); |
| 347 else | |
| 348 EXPECT_NE(orig_site_instance, blank_site_instance); | |
| 349 } | 349 } |
| 350 | 350 |
| 351 // Test for crbug.com/24447. Following a cross-site link with rel=noreferrer | 351 // Test for crbug.com/24447. Following a cross-site link with rel=noreferrer |
| 352 // and no target=_blank should not create a new SiteInstance. | 352 // and no target=_blank should not create a new SiteInstance. |
| 353 IN_PROC_BROWSER_TEST_F(RenderFrameHostManagerTest, | 353 IN_PROC_BROWSER_TEST_F(RenderFrameHostManagerTest, |
| 354 DontSwapProcessWithOnlyRelNoreferrer) { | 354 DontSwapProcessWithOnlyRelNoreferrer) { |
| 355 StartServer(); | 355 StartServer(); |
| 356 | 356 |
| 357 // Load a page with links that open in a new window. | 357 // Load a page with links that open in a new window. |
| 358 std::string replacement_path; | 358 std::string replacement_path; |
| (...skipping 20 matching lines...) Expand all Loading... |
| 379 WaitForLoadStop(shell()->web_contents()); | 379 WaitForLoadStop(shell()->web_contents()); |
| 380 | 380 |
| 381 // Opens in same window. | 381 // Opens in same window. |
| 382 EXPECT_EQ(1u, Shell::windows().size()); | 382 EXPECT_EQ(1u, Shell::windows().size()); |
| 383 EXPECT_EQ("/files/title2.html", | 383 EXPECT_EQ("/files/title2.html", |
| 384 shell()->web_contents()->GetLastCommittedURL().path()); | 384 shell()->web_contents()->GetLastCommittedURL().path()); |
| 385 | 385 |
| 386 // Should have the same SiteInstance unless we're in site-per-process mode. | 386 // Should have the same SiteInstance unless we're in site-per-process mode. |
| 387 scoped_refptr<SiteInstance> noref_site_instance( | 387 scoped_refptr<SiteInstance> noref_site_instance( |
| 388 shell()->web_contents()->GetSiteInstance()); | 388 shell()->web_contents()->GetSiteInstance()); |
| 389 if (!base::CommandLine::ForCurrentProcess()->HasSwitch( | 389 if (SiteIsolationPolicy::AreAllSitesIsolatedForTesting()) |
| 390 switches::kSitePerProcess)) | 390 EXPECT_NE(orig_site_instance, noref_site_instance); |
| 391 else |
| 391 EXPECT_EQ(orig_site_instance, noref_site_instance); | 392 EXPECT_EQ(orig_site_instance, noref_site_instance); |
| 392 else | |
| 393 EXPECT_NE(orig_site_instance, noref_site_instance); | |
| 394 } | 393 } |
| 395 | 394 |
| 396 // Test for crbug.com/116192. Targeted links should still work after the | 395 // Test for crbug.com/116192. Targeted links should still work after the |
| 397 // named target window has swapped processes. | 396 // named target window has swapped processes. |
| 398 IN_PROC_BROWSER_TEST_F(RenderFrameHostManagerTest, | 397 IN_PROC_BROWSER_TEST_F(RenderFrameHostManagerTest, |
| 399 AllowTargetedNavigationsAfterSwap) { | 398 AllowTargetedNavigationsAfterSwap) { |
| 400 StartServer(); | 399 StartServer(); |
| 401 | 400 |
| 402 // Load a page with links that open in a new window. | 401 // Load a page with links that open in a new window. |
| 403 std::string replacement_path; | 402 std::string replacement_path; |
| (...skipping 1519 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1923 EXPECT_FALSE(opener_rfph->is_render_frame_proxy_live()); | 1922 EXPECT_FALSE(opener_rfph->is_render_frame_proxy_live()); |
| 1924 | 1923 |
| 1925 // Re-navigate the popup to the same URL and check that this recreates the | 1924 // Re-navigate the popup to the same URL and check that this recreates the |
| 1926 // opener's swapped out RVH and proxy in the foo.com SiteInstance. | 1925 // opener's swapped out RVH and proxy in the foo.com SiteInstance. |
| 1927 EXPECT_TRUE(NavigateToURL(new_shell, cross_site_url)); | 1926 EXPECT_TRUE(NavigateToURL(new_shell, cross_site_url)); |
| 1928 EXPECT_TRUE(opener_rvh->IsRenderViewLive()); | 1927 EXPECT_TRUE(opener_rvh->IsRenderViewLive()); |
| 1929 EXPECT_TRUE(opener_rfph->is_render_frame_proxy_live()); | 1928 EXPECT_TRUE(opener_rfph->is_render_frame_proxy_live()); |
| 1930 } | 1929 } |
| 1931 | 1930 |
| 1932 } // namespace content | 1931 } // namespace content |
| OLD | NEW |