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

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

Issue 1221003003: Revert of Fix accessibility with out-of-process iframes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 5 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 "base/command_line.h" 5 #include "base/command_line.h"
6 #include "base/files/file_path.h" 6 #include "base/files/file_path.h"
7 #include "base/strings/utf_string_conversions.h" 7 #include "base/strings/utf_string_conversions.h"
8 #include "base/test/histogram_tester.h" 8 #include "base/test/histogram_tester.h"
9 #include "base/time/time.h" 9 #include "base/time/time.h"
10 #include "content/browser/compositor/test/no_transport_image_transport_factory.h " 10 #include "content/browser/compositor/test/no_transport_image_transport_factory.h "
(...skipping 15 matching lines...) Expand all
26 #include "content/public/browser/render_process_host.h" 26 #include "content/public/browser/render_process_host.h"
27 #include "content/public/browser/render_widget_host_iterator.h" 27 #include "content/public/browser/render_widget_host_iterator.h"
28 #include "content/public/browser/web_contents_delegate.h" 28 #include "content/public/browser/web_contents_delegate.h"
29 #include "content/public/browser/web_contents_observer.h" 29 #include "content/public/browser/web_contents_observer.h"
30 #include "content/public/browser/web_ui_controller.h" 30 #include "content/public/browser/web_ui_controller.h"
31 #include "content/public/common/bindings_policy.h" 31 #include "content/public/common/bindings_policy.h"
32 #include "content/public/common/content_switches.h" 32 #include "content/public/common/content_switches.h"
33 #include "content/public/common/javascript_message_type.h" 33 #include "content/public/common/javascript_message_type.h"
34 #include "content/public/common/url_constants.h" 34 #include "content/public/common/url_constants.h"
35 #include "content/public/common/url_utils.h" 35 #include "content/public/common/url_utils.h"
36 #include "content/public/test/browser_test_utils.h"
37 #include "content/public/test/mock_render_process_host.h" 36 #include "content/public/test/mock_render_process_host.h"
38 #include "content/public/test/test_notification_tracker.h" 37 #include "content/public/test/test_notification_tracker.h"
39 #include "content/test/test_content_browser_client.h" 38 #include "content/test/test_content_browser_client.h"
40 #include "content/test/test_content_client.h" 39 #include "content/test/test_content_client.h"
41 #include "content/test/test_render_frame_host.h" 40 #include "content/test/test_render_frame_host.h"
42 #include "content/test/test_render_view_host.h" 41 #include "content/test/test_render_view_host.h"
43 #include "content/test/test_web_contents.h" 42 #include "content/test/test_web_contents.h"
44 #include "net/base/load_flags.h" 43 #include "net/base/load_flags.h"
45 #include "testing/gtest/include/gtest/gtest.h" 44 #include "testing/gtest/include/gtest/gtest.h"
46 #include "third_party/WebKit/public/web/WebSandboxFlags.h" 45 #include "third_party/WebKit/public/web/WebSandboxFlags.h"
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 bool created() { 167 bool created() {
169 return created_; 168 return created_;
170 } 169 }
171 170
172 private: 171 private:
173 bool created_; 172 bool created_;
174 173
175 DISALLOW_COPY_AND_ASSIGN(RenderFrameHostCreatedObserver); 174 DISALLOW_COPY_AND_ASSIGN(RenderFrameHostCreatedObserver);
176 }; 175 };
177 176
177 // This observer keeps track of the last deleted RenderFrameHost to avoid
178 // accessing it and causing use-after-free condition.
179 class RenderFrameHostDeletedObserver : public WebContentsObserver {
180 public:
181 RenderFrameHostDeletedObserver(RenderFrameHost* rfh)
182 : WebContentsObserver(WebContents::FromRenderFrameHost(rfh)),
183 process_id_(rfh->GetProcess()->GetID()),
184 routing_id_(rfh->GetRoutingID()),
185 deleted_(false) {
186 }
187
188 void RenderFrameDeleted(RenderFrameHost* render_frame_host) override {
189 if (render_frame_host->GetProcess()->GetID() == process_id_ &&
190 render_frame_host->GetRoutingID() == routing_id_) {
191 deleted_ = true;
192 }
193 }
194
195 bool deleted() {
196 return deleted_;
197 }
198
199 private:
200 int process_id_;
201 int routing_id_;
202 bool deleted_;
203
204 DISALLOW_COPY_AND_ASSIGN(RenderFrameHostDeletedObserver);
205 };
206
178 // This WebContents observer keep track of its RVH change. 207 // This WebContents observer keep track of its RVH change.
179 class RenderViewHostChangedObserver : public WebContentsObserver { 208 class RenderViewHostChangedObserver : public WebContentsObserver {
180 public: 209 public:
181 RenderViewHostChangedObserver(WebContents* web_contents) 210 RenderViewHostChangedObserver(WebContents* web_contents)
182 : WebContentsObserver(web_contents), host_changed_(false) {} 211 : WebContentsObserver(web_contents), host_changed_(false) {}
183 212
184 // WebContentsObserver. 213 // WebContentsObserver.
185 void RenderViewHostChanged(RenderViewHost* old_host, 214 void RenderViewHostChanged(RenderViewHost* old_host,
186 RenderViewHost* new_host) override { 215 RenderViewHost* new_host) override {
187 host_changed_ = true; 216 host_changed_ = true;
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 ? contents()->GetPendingMainFrame() 314 ? contents()->GetPendingMainFrame()
286 : old_rfh; 315 : old_rfh;
287 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, old_rfh->rfh_state()); 316 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, old_rfh->rfh_state());
288 317
289 // Commit the navigation with a new page ID. 318 // Commit the navigation with a new page ID.
290 int32 max_page_id = contents()->GetMaxPageIDForSiteInstance( 319 int32 max_page_id = contents()->GetMaxPageIDForSiteInstance(
291 active_rfh->GetSiteInstance()); 320 active_rfh->GetSiteInstance());
292 321
293 // Use an observer to avoid accessing a deleted renderer later on when the 322 // Use an observer to avoid accessing a deleted renderer later on when the
294 // state is being checked. 323 // state is being checked.
295 RenderFrameDeletedObserver rfh_observer(old_rfh); 324 RenderFrameHostDeletedObserver rfh_observer(old_rfh);
296 RenderViewHostDeletedObserver rvh_observer(old_rfh->GetRenderViewHost()); 325 RenderViewHostDeletedObserver rvh_observer(old_rfh->GetRenderViewHost());
297 active_rfh->SendNavigate(max_page_id + 1, entry_id, true, url); 326 active_rfh->SendNavigate(max_page_id + 1, entry_id, true, url);
298 327
299 // Make sure that we start to run the unload handler at the time of commit. 328 // Make sure that we start to run the unload handler at the time of commit.
300 bool expecting_rfh_shutdown = false; 329 bool expecting_rfh_shutdown = false;
301 if (old_rfh != active_rfh && !rfh_observer.deleted()) { 330 if (old_rfh != active_rfh && !rfh_observer.deleted()) {
302 EXPECT_EQ(RenderFrameHostImpl::STATE_PENDING_SWAP_OUT, 331 EXPECT_EQ(RenderFrameHostImpl::STATE_PENDING_SWAP_OUT,
303 old_rfh->rfh_state()); 332 old_rfh->rfh_state());
304 if (!old_rfh->GetSiteInstance()->active_frame_count() || 333 if (!old_rfh->GetSiteInstance()->active_frame_count() ||
305 RenderFrameHostManager::IsSwappedOutStateForbidden()) { 334 RenderFrameHostManager::IsSwappedOutStateForbidden()) {
(...skipping 1040 matching lines...) Expand 10 before | Expand all | Expand 10 after
1346 TEST_F(RenderFrameHostManagerTest, CreateSwappedOutOpenerRFHs) { 1375 TEST_F(RenderFrameHostManagerTest, CreateSwappedOutOpenerRFHs) {
1347 const GURL kUrl1("http://www.google.com/"); 1376 const GURL kUrl1("http://www.google.com/");
1348 const GURL kUrl2("http://www.chromium.org/"); 1377 const GURL kUrl2("http://www.chromium.org/");
1349 const GURL kChromeUrl("chrome://foo"); 1378 const GURL kChromeUrl("chrome://foo");
1350 1379
1351 // Navigate to an initial URL. 1380 // Navigate to an initial URL.
1352 contents()->NavigateAndCommit(kUrl1); 1381 contents()->NavigateAndCommit(kUrl1);
1353 RenderFrameHostManager* manager = contents()->GetRenderManagerForTesting(); 1382 RenderFrameHostManager* manager = contents()->GetRenderManagerForTesting();
1354 TestRenderFrameHost* rfh1 = main_test_rfh(); 1383 TestRenderFrameHost* rfh1 = main_test_rfh();
1355 scoped_refptr<SiteInstanceImpl> site_instance1 = rfh1->GetSiteInstance(); 1384 scoped_refptr<SiteInstanceImpl> site_instance1 = rfh1->GetSiteInstance();
1356 RenderFrameDeletedObserver rfh1_deleted_observer(rfh1); 1385 RenderFrameHostDeletedObserver rfh1_deleted_observer(rfh1);
1357 TestRenderViewHost* rvh1 = test_rvh(); 1386 TestRenderViewHost* rvh1 = test_rvh();
1358 1387
1359 // Create 2 new tabs and simulate them being the opener chain for the main 1388 // Create 2 new tabs and simulate them being the opener chain for the main
1360 // tab. They should be in the same SiteInstance. 1389 // tab. They should be in the same SiteInstance.
1361 scoped_ptr<TestWebContents> opener1( 1390 scoped_ptr<TestWebContents> opener1(
1362 TestWebContents::Create(browser_context(), site_instance1.get())); 1391 TestWebContents::Create(browser_context(), site_instance1.get()));
1363 RenderFrameHostManager* opener1_manager = 1392 RenderFrameHostManager* opener1_manager =
1364 opener1->GetRenderManagerForTesting(); 1393 opener1->GetRenderManagerForTesting();
1365 contents()->SetOpener(opener1.get()); 1394 contents()->SetOpener(opener1.get());
1366 1395
(...skipping 454 matching lines...) Expand 10 before | Expand all | Expand 10 after
1821 // Tests that the RenderFrameHost is properly deleted when the SwapOutACK is 1850 // Tests that the RenderFrameHost is properly deleted when the SwapOutACK is
1822 // received. (SwapOut and the corresponding ACK always occur after commit.) 1851 // received. (SwapOut and the corresponding ACK always occur after commit.)
1823 // Also tests that an early SwapOutACK is properly ignored. 1852 // Also tests that an early SwapOutACK is properly ignored.
1824 TEST_F(RenderFrameHostManagerTest, DeleteFrameAfterSwapOutACK) { 1853 TEST_F(RenderFrameHostManagerTest, DeleteFrameAfterSwapOutACK) {
1825 const GURL kUrl1("http://www.google.com/"); 1854 const GURL kUrl1("http://www.google.com/");
1826 const GURL kUrl2("http://www.chromium.org/"); 1855 const GURL kUrl2("http://www.chromium.org/");
1827 1856
1828 // Navigate to the first page. 1857 // Navigate to the first page.
1829 contents()->NavigateAndCommit(kUrl1); 1858 contents()->NavigateAndCommit(kUrl1);
1830 TestRenderFrameHost* rfh1 = contents()->GetMainFrame(); 1859 TestRenderFrameHost* rfh1 = contents()->GetMainFrame();
1831 RenderFrameDeletedObserver rfh_deleted_observer(rfh1); 1860 RenderFrameHostDeletedObserver rfh_deleted_observer(rfh1);
1832 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, rfh1->rfh_state()); 1861 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, rfh1->rfh_state());
1833 1862
1834 // Navigate to new site, simulating onbeforeunload approval. 1863 // Navigate to new site, simulating onbeforeunload approval.
1835 controller().LoadURL( 1864 controller().LoadURL(
1836 kUrl2, Referrer(), ui::PAGE_TRANSITION_LINK, std::string()); 1865 kUrl2, Referrer(), ui::PAGE_TRANSITION_LINK, std::string());
1837 int entry_id = controller().GetPendingEntry()->GetUniqueID(); 1866 int entry_id = controller().GetPendingEntry()->GetUniqueID();
1838 contents()->GetMainFrame()->PrepareForCommit(); 1867 contents()->GetMainFrame()->PrepareForCommit();
1839 EXPECT_TRUE(contents()->CrossProcessNavigationPending()); 1868 EXPECT_TRUE(contents()->CrossProcessNavigationPending());
1840 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, rfh1->rfh_state()); 1869 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, rfh1->rfh_state());
1841 TestRenderFrameHost* rfh2 = contents()->GetPendingMainFrame(); 1870 TestRenderFrameHost* rfh2 = contents()->GetPendingMainFrame();
(...skipping 25 matching lines...) Expand all
1867 1896
1868 // Tests that the RenderFrameHost is properly swapped out when the SwapOut ACK 1897 // Tests that the RenderFrameHost is properly swapped out when the SwapOut ACK
1869 // is received. (SwapOut and the corresponding ACK always occur after commit.) 1898 // is received. (SwapOut and the corresponding ACK always occur after commit.)
1870 TEST_F(RenderFrameHostManagerTest, SwapOutFrameAfterSwapOutACK) { 1899 TEST_F(RenderFrameHostManagerTest, SwapOutFrameAfterSwapOutACK) {
1871 const GURL kUrl1("http://www.google.com/"); 1900 const GURL kUrl1("http://www.google.com/");
1872 const GURL kUrl2("http://www.chromium.org/"); 1901 const GURL kUrl2("http://www.chromium.org/");
1873 1902
1874 // Navigate to the first page. 1903 // Navigate to the first page.
1875 contents()->NavigateAndCommit(kUrl1); 1904 contents()->NavigateAndCommit(kUrl1);
1876 TestRenderFrameHost* rfh1 = contents()->GetMainFrame(); 1905 TestRenderFrameHost* rfh1 = contents()->GetMainFrame();
1877 RenderFrameDeletedObserver rfh_deleted_observer(rfh1); 1906 RenderFrameHostDeletedObserver rfh_deleted_observer(rfh1);
1878 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, rfh1->rfh_state()); 1907 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, rfh1->rfh_state());
1879 1908
1880 // Increment the number of active frames in SiteInstanceImpl so that rfh1 is 1909 // Increment the number of active frames in SiteInstanceImpl so that rfh1 is
1881 // not deleted on swap out. 1910 // not deleted on swap out.
1882 rfh1->GetSiteInstance()->increment_active_frame_count(); 1911 rfh1->GetSiteInstance()->increment_active_frame_count();
1883 1912
1884 // Navigate to new site, simulating onbeforeunload approval. 1913 // Navigate to new site, simulating onbeforeunload approval.
1885 controller().LoadURL( 1914 controller().LoadURL(
1886 kUrl2, Referrer(), ui::PAGE_TRANSITION_LINK, std::string()); 1915 kUrl2, Referrer(), ui::PAGE_TRANSITION_LINK, std::string());
1887 int entry_id = controller().GetPendingEntry()->GetUniqueID(); 1916 int entry_id = controller().GetPendingEntry()->GetUniqueID();
(...skipping 28 matching lines...) Expand all
1916 // This simulates a cross-site navigation to a synchronously committing URL 1945 // This simulates a cross-site navigation to a synchronously committing URL
1917 // (e.g., a data URL) and ensures it works properly. 1946 // (e.g., a data URL) and ensures it works properly.
1918 TEST_F(RenderFrameHostManagerTest, 1947 TEST_F(RenderFrameHostManagerTest,
1919 CommitNewNavigationBeforeSendingSwapOut) { 1948 CommitNewNavigationBeforeSendingSwapOut) {
1920 const GURL kUrl1("http://www.google.com/"); 1949 const GURL kUrl1("http://www.google.com/");
1921 const GURL kUrl2("http://www.chromium.org/"); 1950 const GURL kUrl2("http://www.chromium.org/");
1922 1951
1923 // Navigate to the first page. 1952 // Navigate to the first page.
1924 contents()->NavigateAndCommit(kUrl1); 1953 contents()->NavigateAndCommit(kUrl1);
1925 TestRenderFrameHost* rfh1 = contents()->GetMainFrame(); 1954 TestRenderFrameHost* rfh1 = contents()->GetMainFrame();
1926 RenderFrameDeletedObserver rfh_deleted_observer(rfh1); 1955 RenderFrameHostDeletedObserver rfh_deleted_observer(rfh1);
1927 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, rfh1->rfh_state()); 1956 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, rfh1->rfh_state());
1928 1957
1929 // Increment the number of active frames in SiteInstanceImpl so that rfh1 is 1958 // Increment the number of active frames in SiteInstanceImpl so that rfh1 is
1930 // not deleted on swap out. 1959 // not deleted on swap out.
1931 scoped_refptr<SiteInstanceImpl> site_instance = rfh1->GetSiteInstance(); 1960 scoped_refptr<SiteInstanceImpl> site_instance = rfh1->GetSiteInstance();
1932 site_instance->increment_active_frame_count(); 1961 site_instance->increment_active_frame_count();
1933 1962
1934 // Navigate to new site, simulating onbeforeunload approval. 1963 // Navigate to new site, simulating onbeforeunload approval.
1935 controller().LoadURL( 1964 controller().LoadURL(
1936 kUrl2, Referrer(), ui::PAGE_TRANSITION_LINK, std::string()); 1965 kUrl2, Referrer(), ui::PAGE_TRANSITION_LINK, std::string());
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1975 contents()->NavigateAndCommit(kUrl1); 2004 contents()->NavigateAndCommit(kUrl1);
1976 TestRenderFrameHost* rfh1 = main_test_rfh(); 2005 TestRenderFrameHost* rfh1 = main_test_rfh();
1977 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, rfh1->rfh_state()); 2006 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, rfh1->rfh_state());
1978 2007
1979 // Navigate to a new site, starting a cross-site navigation. 2008 // Navigate to a new site, starting a cross-site navigation.
1980 controller().LoadURL( 2009 controller().LoadURL(
1981 kUrl2, Referrer(), ui::PAGE_TRANSITION_LINK, std::string()); 2010 kUrl2, Referrer(), ui::PAGE_TRANSITION_LINK, std::string());
1982 { 2011 {
1983 pending_rfh = contents()->GetFrameTree()->root()->render_manager() 2012 pending_rfh = contents()->GetFrameTree()->root()->render_manager()
1984 ->pending_frame_host(); 2013 ->pending_frame_host();
1985 RenderFrameDeletedObserver rfh_deleted_observer(pending_rfh); 2014 RenderFrameHostDeletedObserver rfh_deleted_observer(pending_rfh);
1986 2015
1987 // Cancel the navigation by simulating a declined beforeunload dialog. 2016 // Cancel the navigation by simulating a declined beforeunload dialog.
1988 contents()->GetMainFrame()->OnMessageReceived( 2017 contents()->GetMainFrame()->OnMessageReceived(
1989 FrameHostMsg_BeforeUnload_ACK(0, false, now, now)); 2018 FrameHostMsg_BeforeUnload_ACK(0, false, now, now));
1990 EXPECT_FALSE(contents()->CrossProcessNavigationPending()); 2019 EXPECT_FALSE(contents()->CrossProcessNavigationPending());
1991 2020
1992 // Since the pending RFH is the only one for the new SiteInstance, it should 2021 // Since the pending RFH is the only one for the new SiteInstance, it should
1993 // be deleted. 2022 // be deleted.
1994 EXPECT_TRUE(rfh_deleted_observer.deleted()); 2023 EXPECT_TRUE(rfh_deleted_observer.deleted());
1995 } 2024 }
1996 2025
1997 // Start another cross-site navigation. 2026 // Start another cross-site navigation.
1998 controller().LoadURL( 2027 controller().LoadURL(
1999 kUrl2, Referrer(), ui::PAGE_TRANSITION_LINK, std::string()); 2028 kUrl2, Referrer(), ui::PAGE_TRANSITION_LINK, std::string());
2000 { 2029 {
2001 pending_rfh = contents()->GetFrameTree()->root()->render_manager() 2030 pending_rfh = contents()->GetFrameTree()->root()->render_manager()
2002 ->pending_frame_host(); 2031 ->pending_frame_host();
2003 RenderFrameDeletedObserver rfh_deleted_observer(pending_rfh); 2032 RenderFrameHostDeletedObserver rfh_deleted_observer(pending_rfh);
2004 2033
2005 // Increment the number of active frames in the new SiteInstance, which will 2034 // Increment the number of active frames in the new SiteInstance, which will
2006 // cause the pending RFH to be deleted and a RenderFrameProxyHost to be 2035 // cause the pending RFH to be deleted and a RenderFrameProxyHost to be
2007 // created. 2036 // created.
2008 scoped_refptr<SiteInstanceImpl> site_instance = 2037 scoped_refptr<SiteInstanceImpl> site_instance =
2009 pending_rfh->GetSiteInstance(); 2038 pending_rfh->GetSiteInstance();
2010 site_instance->increment_active_frame_count(); 2039 site_instance->increment_active_frame_count();
2011 2040
2012 contents()->GetMainFrame()->OnMessageReceived( 2041 contents()->GetMainFrame()->OnMessageReceived(
2013 FrameHostMsg_BeforeUnload_ACK(0, false, now, now)); 2042 FrameHostMsg_BeforeUnload_ACK(0, false, now, now));
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
2087 EXPECT_TRUE(RenderFrameHostImpl::IsRFHStateActive( 2116 EXPECT_TRUE(RenderFrameHostImpl::IsRFHStateActive(
2088 GetPendingFrameHost(iframe2)->rfh_state())); 2117 GetPendingFrameHost(iframe2)->rfh_state()));
2089 EXPECT_NE(GetPendingFrameHost(iframe1), GetPendingFrameHost(iframe2)); 2118 EXPECT_NE(GetPendingFrameHost(iframe1), GetPendingFrameHost(iframe2));
2090 EXPECT_EQ(GetPendingFrameHost(iframe1)->GetSiteInstance(), 2119 EXPECT_EQ(GetPendingFrameHost(iframe1)->GetSiteInstance(),
2091 GetPendingFrameHost(iframe2)->GetSiteInstance()); 2120 GetPendingFrameHost(iframe2)->GetSiteInstance());
2092 EXPECT_NE(iframe1->current_frame_host(), GetPendingFrameHost(iframe1)); 2121 EXPECT_NE(iframe1->current_frame_host(), GetPendingFrameHost(iframe1));
2093 EXPECT_NE(iframe2->current_frame_host(), GetPendingFrameHost(iframe2)); 2122 EXPECT_NE(iframe2->current_frame_host(), GetPendingFrameHost(iframe2));
2094 EXPECT_FALSE(contents()->CrossProcessNavigationPending()) 2123 EXPECT_FALSE(contents()->CrossProcessNavigationPending())
2095 << "There should be no top-level pending navigation."; 2124 << "There should be no top-level pending navigation.";
2096 2125
2097 RenderFrameDeletedObserver delete_watcher1(GetPendingFrameHost(iframe1)); 2126 RenderFrameHostDeletedObserver delete_watcher1(GetPendingFrameHost(iframe1));
2098 RenderFrameDeletedObserver delete_watcher2(GetPendingFrameHost(iframe2)); 2127 RenderFrameHostDeletedObserver delete_watcher2(GetPendingFrameHost(iframe2));
2099 EXPECT_FALSE(delete_watcher1.deleted()); 2128 EXPECT_FALSE(delete_watcher1.deleted());
2100 EXPECT_FALSE(delete_watcher2.deleted()); 2129 EXPECT_FALSE(delete_watcher2.deleted());
2101 2130
2102 // Keep the SiteInstance alive for testing. 2131 // Keep the SiteInstance alive for testing.
2103 scoped_refptr<SiteInstanceImpl> site_instance = 2132 scoped_refptr<SiteInstanceImpl> site_instance =
2104 GetPendingFrameHost(iframe1)->GetSiteInstance(); 2133 GetPendingFrameHost(iframe1)->GetSiteInstance();
2105 EXPECT_TRUE(site_instance->HasSite()); 2134 EXPECT_TRUE(site_instance->HasSite());
2106 EXPECT_NE(site_instance, contents()->GetSiteInstance()); 2135 EXPECT_NE(site_instance, contents()->GetSiteInstance());
2107 EXPECT_EQ(2U, site_instance->active_frame_count()); 2136 EXPECT_EQ(2U, site_instance->active_frame_count());
2108 2137
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
2206 EXPECT_FALSE(contents2->GetMainFrame()->IsRenderFrameLive()); 2235 EXPECT_FALSE(contents2->GetMainFrame()->IsRenderFrameLive());
2207 contents2->NavigateAndCommit(kUrl3); 2236 contents2->NavigateAndCommit(kUrl3);
2208 EXPECT_TRUE(contents2->GetMainFrame()->IsRenderFrameLive()); 2237 EXPECT_TRUE(contents2->GetMainFrame()->IsRenderFrameLive());
2209 EXPECT_NE(nullptr, 2238 EXPECT_NE(nullptr,
2210 iframe->GetRenderFrameProxyHost(contents1->GetSiteInstance())); 2239 iframe->GetRenderFrameProxyHost(contents1->GetSiteInstance()));
2211 EXPECT_EQ(nullptr, 2240 EXPECT_EQ(nullptr,
2212 iframe->GetRenderFrameProxyHost(contents2->GetSiteInstance())); 2241 iframe->GetRenderFrameProxyHost(contents2->GetSiteInstance()));
2213 } 2242 }
2214 2243
2215 } // namespace content 2244 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/frame_host/render_frame_host_impl.cc ('k') | content/public/test/browser_test_utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698