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

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

Issue 457003002: [site isolation] cross-site transfers should track the RenderFrameHost, not the View (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Self-review fixes Created 6 years, 4 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 | Annotate | Revision Log
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/files/file_path.h" 5 #include "base/files/file_path.h"
6 #include "base/strings/utf_string_conversions.h" 6 #include "base/strings/utf_string_conversions.h"
7 #include "content/browser/frame_host/cross_site_transferring_request.h" 7 #include "content/browser/frame_host/cross_site_transferring_request.h"
8 #include "content/browser/frame_host/navigation_controller_impl.h" 8 #include "content/browser/frame_host/navigation_controller_impl.h"
9 #include "content/browser/frame_host/navigation_entry_impl.h" 9 #include "content/browser/frame_host/navigation_entry_impl.h"
10 #include "content/browser/frame_host/navigation_request.h" 10 #include "content/browser/frame_host/navigation_request.h"
(...skipping 907 matching lines...) Expand 10 before | Expand all | Expand 10 after
918 RenderFrameHostImpl* host2 = manager->Navigate(entry2); 918 RenderFrameHostImpl* host2 = manager->Navigate(entry2);
919 int host2_process_id = host2->GetProcess()->GetID(); 919 int host2_process_id = host2->GetProcess()->GetID();
920 920
921 // A new RenderFrameHost should be created. 921 // A new RenderFrameHost should be created.
922 EXPECT_TRUE(manager->pending_frame_host()); 922 EXPECT_TRUE(manager->pending_frame_host());
923 ASSERT_EQ(host2, manager->pending_frame_host()); 923 ASSERT_EQ(host2, manager->pending_frame_host());
924 EXPECT_NE(host2, host); 924 EXPECT_NE(host2, host);
925 925
926 // Check that the navigation is still suspended because the old RVH 926 // Check that the navigation is still suspended because the old RVH
927 // is not swapped out, yet. 927 // is not swapped out, yet.
928 EXPECT_TRUE(host2->render_view_host()->are_navigations_suspended()); 928 EXPECT_TRUE(host2->are_navigations_suspended());
929 MockRenderProcessHost* test_process_host2 = 929 MockRenderProcessHost* test_process_host2 =
930 static_cast<MockRenderProcessHost*>(host2->GetProcess()); 930 static_cast<MockRenderProcessHost*>(host2->GetProcess());
931 test_process_host2->sink().ClearMessages(); 931 test_process_host2->sink().ClearMessages();
932 host2->render_view_host()->NavigateToURL(kUrl2); 932 host2->render_view_host()->NavigateToURL(kUrl2);
933 EXPECT_FALSE(test_process_host2->sink().GetUniqueMessageMatching( 933 EXPECT_FALSE(test_process_host2->sink().GetUniqueMessageMatching(
934 FrameMsg_Navigate::ID)); 934 FrameMsg_Navigate::ID));
935 935
936 // Allow closing the current Render View (precondition for swapping out 936 // Allow closing the current Render View (precondition for swapping out
937 // the RVH): Simulate response from RenderFrame for FrameMsg_BeforeUnload sent 937 // the RVH): Simulate response from RenderFrame for FrameMsg_BeforeUnload sent
938 // by DispatchBeforeUnload. 938 // by DispatchBeforeUnload.
(...skipping 30 matching lines...) Expand all
969 test_process_host->sink().ClearMessages(); 969 test_process_host->sink().ClearMessages();
970 RenderFrameHostImpl* host3 = manager->Navigate(entry3); 970 RenderFrameHostImpl* host3 = manager->Navigate(entry3);
971 971
972 // A new RenderFrameHost should be created. host2 is now deleted. 972 // A new RenderFrameHost should be created. host2 is now deleted.
973 EXPECT_TRUE(manager->pending_frame_host()); 973 EXPECT_TRUE(manager->pending_frame_host());
974 ASSERT_EQ(host3, manager->pending_frame_host()); 974 ASSERT_EQ(host3, manager->pending_frame_host());
975 EXPECT_NE(host3, host); 975 EXPECT_NE(host3, host);
976 EXPECT_NE(host3->GetProcess()->GetID(), host2_process_id); 976 EXPECT_NE(host3->GetProcess()->GetID(), host2_process_id);
977 977
978 // Navigations in the new RVH should be suspended. 978 // Navigations in the new RVH should be suspended.
979 EXPECT_TRUE(static_cast<RenderViewHostImpl*>( 979 EXPECT_TRUE(host3->are_navigations_suspended());
980 host3->render_view_host())->are_navigations_suspended());
981 EXPECT_EQ(host, manager->current_frame_host()); 980 EXPECT_EQ(host, manager->current_frame_host());
982 EXPECT_FALSE(manager->current_frame_host()->is_swapped_out()); 981 EXPECT_FALSE(manager->current_frame_host()->is_swapped_out());
983 982
984 // Simulate a response to the second beforeunload request. 983 // Simulate a response to the second beforeunload request.
985 EXPECT_TRUE(test_process_host->sink().GetUniqueMessageMatching( 984 EXPECT_TRUE(test_process_host->sink().GetUniqueMessageMatching(
986 FrameMsg_BeforeUnload::ID)); 985 FrameMsg_BeforeUnload::ID));
987 test_host->SendBeforeUnloadACK(true); 986 test_host->SendBeforeUnloadACK(true);
988 987
989 // CrossSiteResourceHandler::StartCrossSiteTransition triggers a 988 // CrossSiteResourceHandler::StartCrossSiteTransition triggers a
990 // call of RenderFrameHostManager::SwapOutOldPage before 989 // call of RenderFrameHostManager::SwapOutOldPage before
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
1041 TestRenderViewHost* rvh2 = pending_test_rvh(); 1040 TestRenderViewHost* rvh2 = pending_test_rvh();
1042 EXPECT_TRUE(rvh2); 1041 EXPECT_TRUE(rvh2);
1043 static_cast<SiteInstanceImpl*>(rvh2->GetSiteInstance())-> 1042 static_cast<SiteInstanceImpl*>(rvh2->GetSiteInstance())->
1044 increment_active_view_count(); 1043 increment_active_view_count();
1045 1044
1046 contents()->GetController().LoadURL( 1045 contents()->GetController().LoadURL(
1047 kUrl3, Referrer(), PAGE_TRANSITION_LINK, std::string()); 1046 kUrl3, Referrer(), PAGE_TRANSITION_LINK, std::string());
1048 // Pending rvh2 is already deleted. 1047 // Pending rvh2 is already deleted.
1049 contents()->ProceedWithCrossSiteNavigation(); 1048 contents()->ProceedWithCrossSiteNavigation();
1050 1049
1051 TestRenderViewHost* rvh3 = pending_test_rvh(); 1050 TestRenderFrameHost* rfh3 = pending_main_test_rfh();
1052 EXPECT_TRUE(rvh3); 1051 EXPECT_TRUE(rfh3);
1053 // Navigation should be already unblocked by rvh1. 1052 // Navigation should be already unblocked by rvh1.
1054 EXPECT_FALSE(rvh3->are_navigations_suspended()); 1053 EXPECT_FALSE(rfh3->are_navigations_suspended());
1055 } 1054 }
1056 1055
1057 // Tests WebUI creation. 1056 // Tests WebUI creation.
1058 TEST_F(RenderFrameHostManagerTest, WebUI) { 1057 TEST_F(RenderFrameHostManagerTest, WebUI) {
1059 set_should_create_webui(true); 1058 set_should_create_webui(true);
1060 SiteInstance* instance = SiteInstance::Create(browser_context()); 1059 SiteInstance* instance = SiteInstance::Create(browser_context());
1061 1060
1062 scoped_ptr<TestWebContents> web_contents( 1061 scoped_ptr<TestWebContents> web_contents(
1063 TestWebContents::Create(browser_context(), instance)); 1062 TestWebContents::Create(browser_context(), instance));
1064 RenderFrameHostManager* manager = web_contents->GetRenderManagerForTesting(); 1063 RenderFrameHostManager* manager = web_contents->GetRenderManagerForTesting();
(...skipping 821 matching lines...) Expand 10 before | Expand all | Expand 10 after
1886 NavigationRequestForRenderFrameManager( 1885 NavigationRequestForRenderFrameManager(
1887 main_test_rfh()->frame_tree_node()->render_manager()); 1886 main_test_rfh()->frame_tree_node()->render_manager());
1888 ASSERT_TRUE(main_request); 1887 ASSERT_TRUE(main_request);
1889 EXPECT_EQ(kUrl3, main_request->info_for_testing().navigation_params.url); 1888 EXPECT_EQ(kUrl3, main_request->info_for_testing().navigation_params.url);
1890 EXPECT_EQ(kUrl3, main_request->info_for_testing().first_party_for_cookies); 1889 EXPECT_EQ(kUrl3, main_request->info_for_testing().first_party_for_cookies);
1891 EXPECT_TRUE(main_request->info_for_testing().is_main_frame); 1890 EXPECT_TRUE(main_request->info_for_testing().is_main_frame);
1892 EXPECT_FALSE(main_request->info_for_testing().parent_is_main_frame); 1891 EXPECT_FALSE(main_request->info_for_testing().parent_is_main_frame);
1893 } 1892 }
1894 1893
1895 } // namespace content 1894 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/frame_host/render_frame_host_manager.cc ('k') | content/browser/loader/cross_site_resource_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698