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

Side by Side Diff: content/browser/frame_host/render_frame_host_manager_browsertest.cc

Issue 1381443003: Disable support for swapped out RenderFrame(Host) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix crashing on window access after forward/back navigation. Created 5 years, 2 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 unified diff | Download patch
OLDNEW
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 2044 matching lines...) Expand 10 before | Expand all | Expand 10 after
2055 EXPECT_TRUE(success); 2055 EXPECT_TRUE(success);
2056 EXPECT_EQ(expected_title, title_watcher.WaitAndGetTitle()); 2056 EXPECT_EQ(expected_title, title_watcher.WaitAndGetTitle());
2057 2057
2058 // Check that a non-null assignment to the opener doesn't change the opener 2058 // Check that a non-null assignment to the opener doesn't change the opener
2059 // in the browser process. 2059 // in the browser process.
2060 EXPECT_TRUE( 2060 EXPECT_TRUE(
2061 ExecuteScript(foo_shell->web_contents(), "window.opener = window;")); 2061 ExecuteScript(foo_shell->web_contents(), "window.opener = window;"));
2062 EXPECT_EQ(bar_root, foo_root->opener()); 2062 EXPECT_EQ(bar_root, foo_root->opener());
2063 } 2063 }
2064 2064
2065 IN_PROC_BROWSER_TEST_F(RenderFrameHostManagerTest,
2066 PopupCrossProcessNavigateAndBack) {
2067 StartServer();
2068
2069 // Load a page with links that open in a new window.
2070 std::string replacement_path;
2071 ASSERT_TRUE(GetFilePathWithHostAndPortReplacement(
2072 "files/click-noreferrer-links.html",
2073 foo_host_port_,
2074 &replacement_path));
2075 NavigateToURL(shell(), test_server()->GetURL(replacement_path));
2076
2077 // Get the original SiteInstance for later comparison.
2078 scoped_refptr<SiteInstance> orig_site_instance(
2079 shell()->web_contents()->GetSiteInstance());
2080 EXPECT_TRUE(orig_site_instance.get() != NULL);
2081
2082 // Test clicking a target=foo link.
2083 ShellAddedObserver new_shell_observer;
2084 bool success = false;
2085 EXPECT_TRUE(ExecuteScriptAndExtractBool(
2086 shell()->web_contents(),
2087 "window.domAutomationController.send(clickSameSiteTargetedLink());",
2088 &success));
2089 EXPECT_TRUE(success);
2090 Shell* new_shell = new_shell_observer.GetShell();
2091 EXPECT_TRUE(new_shell->web_contents()->HasOpener());
2092
2093 // Wait for the navigation in the new tab to finish, if it hasn't.
2094 WaitForLoadStop(new_shell->web_contents());
2095 EXPECT_EQ("/files/navigate_opener.html",
2096 new_shell->web_contents()->GetLastCommittedURL().path());
2097
2098 // Should have the same SiteInstance.
2099 scoped_refptr<SiteInstance> blank_site_instance(
2100 new_shell->web_contents()->GetSiteInstance());
2101 EXPECT_EQ(orig_site_instance, blank_site_instance);
2102
2103 // Capture the window reference, so we can check that accessing its location
2104 // works after navigating cross-process and back.
2105 GURL expected_url = new_shell->web_contents()->GetLastCommittedURL();
2106 EXPECT_TRUE(ExecuteScript(shell()->web_contents(),
2107 "saveWindowReference();"));
2108
2109 // Now navigate the new tab to a different site.
2110 NavigateToURL(new_shell, GetCrossSiteURL("files/title1.html"));
2111 scoped_refptr<SiteInstance> new_site_instance(
2112 new_shell->web_contents()->GetSiteInstance());
2113 EXPECT_NE(orig_site_instance, new_site_instance);
2114 EXPECT_TRUE(new_shell->web_contents()->HasOpener());
2115
2116 // Go back
Charlie Reis 2015/09/30 21:08:03 nit: End with period.
2117 {
2118 TestNavigationObserver back_nav_load_observer(new_shell->web_contents());
2119 new_shell->web_contents()->GetController().GoBack();
2120 back_nav_load_observer.Wait();
2121 }
2122
2123 // Check that the location.href attribute is accessible and is correct.
2124 std::string result;
2125 EXPECT_TRUE(ExecuteScriptAndExtractString(
2126 shell()->web_contents(),
2127 "window.domAutomationController.send(getExitingWindowLocation());",
2128 &result));
2129 EXPECT_EQ(expected_url.spec(), result);
2130 }
2131
2132
2065 } // namespace content 2133 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698