Index: content/browser/frame_host/render_frame_host_manager_unittest.cc |
diff --git a/content/browser/frame_host/render_frame_host_manager_unittest.cc b/content/browser/frame_host/render_frame_host_manager_unittest.cc |
index f66c758dd559079e6e51fbad48c0e71ca0a62e72..fdbef1fd52d850d69e64c4e75b1bdd73c606c2af 100644 |
--- a/content/browser/frame_host/render_frame_host_manager_unittest.cc |
+++ b/content/browser/frame_host/render_frame_host_manager_unittest.cc |
@@ -360,32 +360,19 @@ class RenderFrameHostManagerTest : public RenderViewHostImplTestHarness { |
active_rfh->SendNavigate(max_page_id + 1, entry_id, true, url); |
// Make sure that we start to run the unload handler at the time of commit. |
- bool expecting_rfh_shutdown = false; |
if (old_rfh != active_rfh && !rfh_observer.deleted()) { |
EXPECT_EQ(RenderFrameHostImpl::STATE_PENDING_SWAP_OUT, |
old_rfh->rfh_state()); |
- if (!old_rfh->GetSiteInstance()->active_frame_count() || |
- SiteIsolationPolicy::IsSwappedOutStateForbidden()) { |
- expecting_rfh_shutdown = true; |
- EXPECT_TRUE( |
+ EXPECT_TRUE( |
old_rfh->frame_tree_node()->render_manager()->IsPendingDeletion( |
old_rfh)); |
- } |
} |
// Simulate the swap out ACK coming from the pending renderer. This should |
// either shut down the old RFH or leave it in a swapped out state. |
if (old_rfh != active_rfh) { |
old_rfh->OnSwappedOut(); |
- if (expecting_rfh_shutdown) { |
- EXPECT_TRUE(rfh_observer.deleted()); |
- if (!SiteIsolationPolicy::IsSwappedOutStateForbidden()) { |
- EXPECT_TRUE(rvh_observer.deleted()); |
- } |
- } else { |
- EXPECT_EQ(RenderFrameHostImpl::STATE_SWAPPED_OUT, |
- old_rfh->rfh_state()); |
- } |
+ EXPECT_TRUE(rfh_observer.deleted()); |
} |
EXPECT_EQ(active_rfh, contents()->GetMainFrame()); |
EXPECT_EQ(NULL, contents()->GetPendingMainFrame()); |
@@ -411,8 +398,8 @@ class RenderFrameHostManagerTest : public RenderViewHostImplTestHarness { |
new_entry->IsViewSourceMode()); |
} |
- // Creates a test RenderFrameHost that's swapped out. |
- TestRenderFrameHost* CreateSwappedOutRenderFrameHost() { |
+ // Creates a test RenderViewHost that's swapped out. |
+ void CreateSwappedOutRenderViewHost() { |
const GURL kChromeURL("chrome://foo"); |
const GURL kDestUrl("http://www.google.com/"); |
@@ -441,9 +428,6 @@ class RenderFrameHostManagerTest : public RenderViewHostImplTestHarness { |
dest_rfh->SendNavigate(101, entry_id, true, kDestUrl); |
ntp_rfh->OnSwappedOut(); |
- |
- EXPECT_TRUE(ntp_rfh->is_swapped_out()); |
- return ntp_rfh; |
} |
// Returns the RenderFrameHost that should be used in the navigation to |
@@ -643,48 +627,6 @@ TEST_F(RenderFrameHostManagerTest, FilterMessagesWhileSwappedOut) { |
dest_rfh->GetRenderViewHost()->GetRoutingID(), icons))); |
EXPECT_FALSE(observer.favicon_received()); |
} |
- |
- // In --site-per-process, the RenderFrameHost is deleted on cross-process |
- // navigation, so the rest of the test case doesn't apply. |
- if (SiteIsolationPolicy::IsSwappedOutStateForbidden()) { |
- return; |
- } |
- |
-#if defined(ENABLE_PLUGINS) |
- // The same logic should apply to RenderFrameHosts as well and routing through |
- // swapped out RFH shouldn't be allowed. Use a PluginCrashObserver to check |
- // if the IPC message is allowed through or not. |
- { |
- PluginFaviconMessageObserver observer(contents()); |
- EXPECT_TRUE(ntp_rfh->OnMessageReceived( |
- FrameHostMsg_PluginCrashed( |
- ntp_rfh->GetRoutingID(), base::FilePath(), 0))); |
- EXPECT_FALSE(observer.plugin_crashed()); |
- } |
-#endif |
- |
- // We cannot filter out synchronous IPC messages, because the renderer would |
- // be left waiting for a reply. We pick RunBeforeUnloadConfirm as an example |
- // that can run easily within a unit test, and that needs to receive a reply |
- // without showing an actual dialog. |
- MockRenderProcessHost* ntp_process_host = ntp_rfh->GetProcess(); |
- ntp_process_host->sink().ClearMessages(); |
- bool result = false; |
- base::string16 unused; |
- FrameHostMsg_RunBeforeUnloadConfirm before_unload_msg( |
- ntp_rfh->GetRoutingID(), kChromeURL, false, &result, &unused); |
- EXPECT_TRUE(ntp_rfh->OnMessageReceived(before_unload_msg)); |
- EXPECT_TRUE(ntp_process_host->sink().GetUniqueMessageMatching(IPC_REPLY_ID)); |
- |
- // Also test RunJavaScriptMessage. |
- ntp_process_host->sink().ClearMessages(); |
- const base::string16 msg = base::ASCIIToUTF16("Message"); |
- FrameHostMsg_RunJavaScriptMessage js_msg( |
- ntp_rfh->GetRoutingID(), msg, msg, kChromeURL, |
- JAVASCRIPT_MESSAGE_TYPE_CONFIRM, &result, &unused); |
- js_msg.EnableMessagePumping(); |
- EXPECT_TRUE(ntp_rfh->OnMessageReceived(js_msg)); |
- EXPECT_TRUE(ntp_process_host->sink().GetUniqueMessageMatching(IPC_REPLY_ID)); |
} |
// Test that the ViewHostMsg_UpdateFaviconURL IPC message is ignored if the |
@@ -744,95 +686,13 @@ TEST_F(RenderFrameHostManagerTest, UpdateFaviconURLWhilePendingSwapOut) { |
} |
} |
-// Ensure that frames aren't added to the frame tree, if the message is coming |
-// from a process different than the parent frame's current RenderFrameHost |
-// process. Otherwise it is possible to have collisions of routing ids, as they |
-// are scoped per process. See https://crbug.com/415059. |
-TEST_F(RenderFrameHostManagerTest, DropCreateChildFrameWhileSwappedOut) { |
- const GURL kUrl1("http://foo.com"); |
- const GURL kUrl2("http://www.google.com/"); |
- |
- // This test is invalid in --site-per-process mode, as swapped-out is no |
- // longer used. |
- if (SiteIsolationPolicy::IsSwappedOutStateForbidden()) { |
- return; |
- } |
- |
- // Navigate to the first site. |
- NavigateActiveAndCommit(kUrl1); |
- TestRenderFrameHost* initial_rfh = contents()->GetMainFrame(); |
- { |
- RenderFrameHostCreatedObserver observer(contents()); |
- initial_rfh->OnCreateChildFrame( |
- initial_rfh->GetProcess()->GetNextRoutingID(), |
- blink::WebTreeScopeType::Document, std::string(), "uniqueName1", |
- blink::WebSandboxFlags::None, blink::WebFrameOwnerProperties()); |
- EXPECT_TRUE(observer.created()); |
- } |
- |
- // Create one more frame in the same SiteInstance where initial_rfh |
- // exists so that initial_rfh doesn't get deleted on navigation to another |
- // site. |
- initial_rfh->GetSiteInstance()->IncrementActiveFrameCount(); |
- |
- // Navigate to a cross-site URL. |
- NavigateActiveAndCommit(kUrl2); |
- EXPECT_TRUE(initial_rfh->is_swapped_out()); |
- |
- TestRenderFrameHost* dest_rfh = contents()->GetMainFrame(); |
- ASSERT_TRUE(dest_rfh); |
- EXPECT_NE(initial_rfh, dest_rfh); |
- |
- { |
- // Since the old RFH is now swapped out, it shouldn't process any messages |
- // to create child frames. |
- RenderFrameHostCreatedObserver observer(contents()); |
- initial_rfh->OnCreateChildFrame( |
- initial_rfh->GetProcess()->GetNextRoutingID(), |
- blink::WebTreeScopeType::Document, std::string(), "uniqueName2", |
- blink::WebSandboxFlags::None, blink::WebFrameOwnerProperties()); |
- EXPECT_FALSE(observer.created()); |
- } |
-} |
- |
-TEST_F(RenderFrameHostManagerTest, WhiteListSwapCompositorFrame) { |
- // TODO(nasko): Check with kenrb whether this test can be rewritten and |
- // whether it makes sense when swapped out is replaced with proxies. |
- if (SiteIsolationPolicy::IsSwappedOutStateForbidden()) { |
- return; |
- } |
- TestRenderFrameHost* swapped_out_rfh = CreateSwappedOutRenderFrameHost(); |
- TestRenderWidgetHostView* swapped_out_rwhv = |
- static_cast<TestRenderWidgetHostView*>( |
- swapped_out_rfh->GetRenderViewHost()->GetWidget()->GetView()); |
- EXPECT_FALSE(swapped_out_rwhv->did_swap_compositor_frame()); |
- |
- MockRenderProcessHost* process_host = swapped_out_rfh->GetProcess(); |
- process_host->sink().ClearMessages(); |
- |
- cc::CompositorFrame frame; |
- ViewHostMsg_SwapCompositorFrame msg( |
- rvh()->GetRoutingID(), 0, frame, std::vector<IPC::Message>()); |
- |
- EXPECT_TRUE( |
- swapped_out_rfh->render_view_host()->GetWidget()->OnMessageReceived(msg)); |
- EXPECT_TRUE(swapped_out_rwhv->did_swap_compositor_frame()); |
-} |
- |
// Test if RenderViewHost::GetRenderWidgetHosts() only returns active |
// widgets. |
TEST_F(RenderFrameHostManagerTest, GetRenderWidgetHostsReturnsActiveViews) { |
- // This test is invalid in --site-per-process mode, as swapped-out is no |
- // longer used. |
- if (SiteIsolationPolicy::IsSwappedOutStateForbidden()) { |
- return; |
- } |
- |
- TestRenderFrameHost* swapped_out_rfh = CreateSwappedOutRenderFrameHost(); |
- EXPECT_TRUE(swapped_out_rfh->is_swapped_out()); |
- |
+ CreateSwappedOutRenderViewHost(); |
scoped_ptr<RenderWidgetHostIterator> widgets( |
RenderWidgetHost::GetRenderWidgetHosts()); |
+ |
// We know that there is the only one active widget. Another view is |
// now swapped out, so the swapped out view is not included in the |
// list. |
@@ -849,15 +709,7 @@ TEST_F(RenderFrameHostManagerTest, GetRenderWidgetHostsReturnsActiveViews) { |
// including swapped out ones. |
TEST_F(RenderFrameHostManagerTest, |
GetRenderWidgetHostsWithinGetAllRenderWidgetHosts) { |
- // This test is invalid in --site-per-process mode, as swapped-out is no |
- // longer used. |
- if (SiteIsolationPolicy::IsSwappedOutStateForbidden()) { |
- return; |
- } |
- |
- TestRenderFrameHost* swapped_out_rfh = CreateSwappedOutRenderFrameHost(); |
- EXPECT_TRUE(swapped_out_rfh->is_swapped_out()); |
- |
+ CreateSwappedOutRenderViewHost(); |
scoped_ptr<RenderWidgetHostIterator> widgets( |
RenderWidgetHost::GetRenderWidgetHosts()); |
@@ -1443,13 +1295,6 @@ TEST_F(RenderFrameHostManagerTest, NavigateAfterMissingSwapOutACK) { |
contents()->GetPendingMainFrame()->SendNavigate( |
entry2->GetPageID(), entry2->GetUniqueID(), false, entry2->GetURL()); |
EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, main_test_rfh()->rfh_state()); |
- if (!SiteIsolationPolicy::IsSwappedOutStateForbidden()) { |
- EXPECT_EQ(rfh2, main_test_rfh()); |
- EXPECT_EQ(RenderFrameHostImpl::STATE_PENDING_SWAP_OUT, rfh1->rfh_state()); |
- rfh1->OnSwappedOut(); |
- EXPECT_TRUE(rfh1->is_swapped_out()); |
- EXPECT_EQ(RenderFrameHostImpl::STATE_SWAPPED_OUT, rfh1->rfh_state()); |
- } |
} |
// Test that we create swapped out RFHs for the opener chain when navigating an |
@@ -1491,17 +1336,8 @@ TEST_F(RenderFrameHostManagerTest, CreateSwappedOutOpenerRFHs) { |
EXPECT_TRUE(site_instance1->IsRelatedSiteInstance(rfh2->GetSiteInstance())); |
// Ensure rvh1 is placed on swapped out list of the current tab. |
- if (!SiteIsolationPolicy::IsSwappedOutStateForbidden()) { |
- EXPECT_TRUE(manager->IsRVHOnSwappedOutList(rvh1)); |
- EXPECT_FALSE(rfh1_deleted_observer.deleted()); |
- EXPECT_TRUE(manager->IsOnSwappedOutList(rfh1)); |
- EXPECT_EQ(rfh1, |
- manager->GetRenderFrameProxyHost(site_instance1.get()) |
- ->render_frame_host()); |
- } else { |
- EXPECT_TRUE(rfh1_deleted_observer.deleted()); |
- EXPECT_TRUE(manager->GetRenderFrameProxyHost(site_instance1.get())); |
- } |
+ EXPECT_TRUE(rfh1_deleted_observer.deleted()); |
+ EXPECT_TRUE(manager->GetRenderFrameProxyHost(site_instance1.get())); |
EXPECT_EQ(rvh1, |
manager->GetSwappedOutRenderViewHost(rvh1->GetSiteInstance())); |
@@ -1511,13 +1347,7 @@ TEST_F(RenderFrameHostManagerTest, CreateSwappedOutOpenerRFHs) { |
RenderFrameHostImpl* opener1_rfh = opener1_proxy->render_frame_host(); |
TestRenderViewHost* opener1_rvh = static_cast<TestRenderViewHost*>( |
opener1_manager->GetSwappedOutRenderViewHost(rvh2->GetSiteInstance())); |
- if (!SiteIsolationPolicy::IsSwappedOutStateForbidden()) { |
- EXPECT_TRUE(opener1_manager->IsOnSwappedOutList(opener1_rfh)); |
- EXPECT_TRUE(opener1_manager->IsRVHOnSwappedOutList(opener1_rvh)); |
- EXPECT_TRUE(opener1_rfh->is_swapped_out()); |
- } else { |
- EXPECT_FALSE(opener1_rfh); |
- } |
+ EXPECT_FALSE(opener1_rfh); |
EXPECT_FALSE(opener1_rvh->is_active()); |
// Ensure a swapped out RFH and RVH is created in the second opener tab. |
@@ -1526,13 +1356,7 @@ TEST_F(RenderFrameHostManagerTest, CreateSwappedOutOpenerRFHs) { |
RenderFrameHostImpl* opener2_rfh = opener2_proxy->render_frame_host(); |
TestRenderViewHost* opener2_rvh = static_cast<TestRenderViewHost*>( |
opener2_manager->GetSwappedOutRenderViewHost(rvh2->GetSiteInstance())); |
- if (!SiteIsolationPolicy::IsSwappedOutStateForbidden()) { |
- EXPECT_TRUE(opener2_manager->IsOnSwappedOutList(opener2_rfh)); |
- EXPECT_TRUE(opener2_manager->IsRVHOnSwappedOutList(opener2_rvh)); |
- EXPECT_TRUE(opener2_rfh->is_swapped_out()); |
- } else { |
- EXPECT_FALSE(opener2_rfh); |
- } |
+ EXPECT_FALSE(opener2_rfh); |
EXPECT_FALSE(opener2_rvh->is_active()); |
// Navigate to a cross-BrowsingInstance URL. |
@@ -1779,13 +1603,7 @@ TEST_F(RenderFrameHostManagerTest, EnableWebUIWithSwappedOutOpener) { |
RenderFrameHostImpl* opener1_rfh = opener1_proxy->render_frame_host(); |
TestRenderViewHost* opener1_rvh = static_cast<TestRenderViewHost*>( |
opener1_manager->GetSwappedOutRenderViewHost(rvh2->GetSiteInstance())); |
- if (!SiteIsolationPolicy::IsSwappedOutStateForbidden()) { |
- EXPECT_TRUE(opener1_manager->IsOnSwappedOutList(opener1_rfh)); |
- EXPECT_TRUE(opener1_manager->IsRVHOnSwappedOutList(opener1_rvh)); |
- EXPECT_TRUE(opener1_rfh->is_swapped_out()); |
- } else { |
- EXPECT_FALSE(opener1_rfh); |
- } |
+ EXPECT_FALSE(opener1_rfh); |
EXPECT_FALSE(opener1_rvh->is_active()); |
// Ensure the new RVH has WebUI bindings. |
@@ -2022,13 +1840,8 @@ TEST_F(RenderFrameHostManagerTest, SwapOutFrameAfterSwapOutACK) { |
// Simulate the swap out ack. |
rfh1->OnSwappedOut(); |
- // rfh1 should be swapped out or deleted in --site-per-process. |
- if (!SiteIsolationPolicy::IsSwappedOutStateForbidden()) { |
- EXPECT_FALSE(rfh_deleted_observer.deleted()); |
- EXPECT_TRUE(rfh1->is_swapped_out()); |
- } else { |
- EXPECT_TRUE(rfh_deleted_observer.deleted()); |
- } |
+ // rfh1 should be deleted. |
+ EXPECT_TRUE(rfh_deleted_observer.deleted()); |
} |
// Test that the RenderViewHost is properly swapped out if a navigation in the |
@@ -2071,15 +1884,10 @@ TEST_F(RenderFrameHostManagerTest, |
// Simulate the swap out ack. |
rfh1->OnSwappedOut(); |
- // rfh1 should be swapped out. |
- if (SiteIsolationPolicy::IsSwappedOutStateForbidden()) { |
- EXPECT_TRUE(rfh_deleted_observer.deleted()); |
- EXPECT_TRUE(contents()->GetFrameTree()->root()->render_manager() |
- ->GetRenderFrameProxyHost(site_instance.get())); |
- } else { |
- EXPECT_FALSE(rfh_deleted_observer.deleted()); |
- EXPECT_TRUE(rfh1->is_swapped_out()); |
- } |
+ // rfh1 should be deleted. |
+ EXPECT_TRUE(rfh_deleted_observer.deleted()); |
+ EXPECT_TRUE(contents()->GetFrameTree()->root()->render_manager() |
+ ->GetRenderFrameProxyHost(site_instance.get())); |
} |
// Test that a RenderFrameHost is properly deleted when a cross-site navigation |
@@ -2131,13 +1939,9 @@ TEST_F(RenderFrameHostManagerTest, |
FrameHostMsg_BeforeUnload_ACK(0, false, now, now)); |
EXPECT_FALSE(contents()->CrossProcessNavigationPending()); |
- if (SiteIsolationPolicy::IsSwappedOutStateForbidden()) { |
- EXPECT_TRUE(rfh_deleted_observer.deleted()); |
- EXPECT_TRUE(contents()->GetFrameTree()->root()->render_manager() |
- ->GetRenderFrameProxyHost(site_instance.get())); |
- } else { |
- EXPECT_FALSE(rfh_deleted_observer.deleted()); |
- } |
+ EXPECT_TRUE(rfh_deleted_observer.deleted()); |
+ EXPECT_TRUE(contents()->GetFrameTree()->root()->render_manager() |
+ ->GetRenderFrameProxyHost(site_instance.get())); |
} |
} |