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

Side by Side Diff: content/renderer/render_view_browsertest.cc

Issue 1785153005: Remove SiteIsolationPolicy::IsSwappedOutStateForbidden(). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase on ToT. Created 4 years, 9 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
« no previous file with comments | « content/renderer/render_frame_proxy.cc ('k') | content/renderer/render_view_impl.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 7
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/callback.h" 9 #include "base/callback.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 750 matching lines...) Expand 10 before | Expand all | Expand 10 after
761 popup_policy_info.defaultPolicy = blink::WebNavigationPolicyNewForegroundTab; 761 popup_policy_info.defaultPolicy = blink::WebNavigationPolicyNewForegroundTab;
762 policy = static_cast<RenderFrameImpl*>(new_view->GetMainRenderFrame())-> 762 policy = static_cast<RenderFrameImpl*>(new_view->GetMainRenderFrame())->
763 decidePolicyForNavigation(popup_policy_info); 763 decidePolicyForNavigation(popup_policy_info);
764 EXPECT_EQ(blink::WebNavigationPolicyIgnore, policy); 764 EXPECT_EQ(blink::WebNavigationPolicyIgnore, policy);
765 765
766 // Clean up after the new view so we don't leak it. 766 // Clean up after the new view so we don't leak it.
767 new_view->Close(); 767 new_view->Close();
768 new_view->Release(); 768 new_view->Release();
769 } 769 }
770 770
771 // Ensure the RenderViewImpl sends an ACK to a SwapOut request, even if it is
772 // already swapped out. http://crbug.com/93427.
773 TEST_F(RenderViewImplTest, SendSwapOutACK) {
774 // This test is invalid in --site-per-process mode, as swapped-out is no
775 // longer used.
776 if (SiteIsolationPolicy::IsSwappedOutStateForbidden()) {
777 return;
778 }
779 LoadHTML("<div>Page A</div>");
780 int initial_page_id = view_page_id();
781
782 // Increment the ref count so that we don't exit when swapping out.
783 RenderProcess::current()->AddRefProcess();
784
785 // Respond to a swap out request.
786 frame()->SwapOut(kProxyRoutingId, true,
787 ReconstructReplicationStateForTesting(frame()));
788
789 // Ensure the swap out commits synchronously.
790 EXPECT_NE(initial_page_id, view_page_id());
791
792 // Check for a valid OnSwapOutACK.
793 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching(
794 FrameHostMsg_SwapOut_ACK::ID);
795 ASSERT_TRUE(msg);
796
797 // It is possible to get another swap out request. Ensure that we send
798 // an ACK, even if we don't have to do anything else.
799 render_thread_->sink().ClearMessages();
800 frame()->SwapOut(kProxyRoutingId, false,
801 ReconstructReplicationStateForTesting(frame()));
802 const IPC::Message* msg2 = render_thread_->sink().GetUniqueMessageMatching(
803 FrameHostMsg_SwapOut_ACK::ID);
804 ASSERT_TRUE(msg2);
805
806 // If we navigate back to this RenderView, ensure we don't send a state
807 // update for the swapped out URL. (http://crbug.com/72235)
808 CommonNavigationParams common_params;
809 RequestNavigationParams request_params;
810 common_params.url = GURL("data:text/html,<div>Page B</div>");
811 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
812 common_params.transition = ui::PAGE_TRANSITION_TYPED;
813 request_params.current_history_list_length = 1;
814 request_params.current_history_list_offset = 0;
815 request_params.pending_history_list_offset = 1;
816 request_params.page_id = -1;
817 frame()->Navigate(common_params, StartNavigationParams(), request_params);
818 ProcessPendingMessages();
819 const IPC::Message* msg3 = render_thread_->sink().GetUniqueMessageMatching(
820 ViewHostMsg_UpdateState::ID);
821 EXPECT_FALSE(msg3);
822 }
823
824 // Ensure the RenderViewImpl reloads the previous page if a reload request
825 // arrives while it is showing swappedout://. http://crbug.com/143155.
826 TEST_F(RenderViewImplTest, ReloadWhileSwappedOut) {
827 // This test is invalid in --site-per-process mode, as swapped-out is no
828 // longer used.
829 if (SiteIsolationPolicy::IsSwappedOutStateForbidden()) {
830 return;
831 }
832
833 // Load page A.
834 LoadHTML("<div>Page A</div>");
835
836 // Load page B, which will trigger an UpdateState message for page A.
837 LoadHTML("<div>Page B</div>");
838
839 // Check for a valid UpdateState message for page A.
840 ProcessPendingMessages();
841 const IPC::Message* msg_A = render_thread_->sink().GetUniqueMessageMatching(
842 ViewHostMsg_UpdateState::ID);
843 ASSERT_TRUE(msg_A);
844 ViewHostMsg_UpdateState::Param params;
845 ViewHostMsg_UpdateState::Read(msg_A, &params);
846 int page_id_A = base::get<0>(params);
847 PageState state_A = base::get<1>(params);
848 EXPECT_EQ(1, page_id_A);
849 render_thread_->sink().ClearMessages();
850
851 // Back to page A (page_id 1) and commit.
852 CommonNavigationParams common_params_A;
853 RequestNavigationParams request_params_A;
854 common_params_A.navigation_type = FrameMsg_Navigate_Type::NORMAL;
855 common_params_A.transition = ui::PAGE_TRANSITION_FORWARD_BACK;
856 request_params_A.current_history_list_length = 2;
857 request_params_A.current_history_list_offset = 1;
858 request_params_A.pending_history_list_offset = 0;
859 request_params_A.page_id = 1;
860 request_params_A.nav_entry_id = 1;
861 request_params_A.page_state = state_A;
862 frame()->Navigate(common_params_A, StartNavigationParams(), request_params_A);
863 EXPECT_EQ(1, view()->historyBackListCount());
864 EXPECT_EQ(2, view()->historyBackListCount() +
865 view()->historyForwardListCount() + 1);
866 ProcessPendingMessages();
867
868 // Respond to a swap out request.
869 frame()->SwapOut(kProxyRoutingId, true,
870 ReconstructReplicationStateForTesting(frame()));
871
872 // Check for a OnSwapOutACK.
873 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching(
874 FrameHostMsg_SwapOut_ACK::ID);
875 ASSERT_TRUE(msg);
876 render_thread_->sink().ClearMessages();
877
878 // It is possible to get a reload request at this point, containing the
879 // params.page_state of the initial page (e.g., if the new page fails the
880 // provisional load in the renderer process, after we unload the old page).
881 // Ensure the old page gets reloaded, not swappedout://.
882 CommonNavigationParams common_params;
883 RequestNavigationParams request_params;
884 common_params.url = GURL("data:text/html,<div>Page A</div>");
885 common_params.navigation_type = FrameMsg_Navigate_Type::RELOAD;
886 common_params.transition = ui::PAGE_TRANSITION_RELOAD;
887 request_params.current_history_list_length = 2;
888 request_params.current_history_list_offset = 0;
889 request_params.pending_history_list_offset = 0;
890 request_params.page_id = 1;
891 request_params.nav_entry_id = 1;
892 request_params.page_state = state_A;
893 frame()->Navigate(common_params, StartNavigationParams(), request_params);
894 ProcessPendingMessages();
895
896 // Verify page A committed, not swappedout://.
897 const IPC::Message* frame_navigate_msg =
898 render_thread_->sink().GetUniqueMessageMatching(
899 FrameHostMsg_DidCommitProvisionalLoad::ID);
900 EXPECT_TRUE(frame_navigate_msg);
901
902 // Read URL out of the parent trait of the params object.
903 FrameHostMsg_DidCommitProvisionalLoad::Param commit_load_params;
904 FrameHostMsg_DidCommitProvisionalLoad::Read(frame_navigate_msg,
905 &commit_load_params);
906 EXPECT_NE(GURL("swappedout://"), base::get<0>(commit_load_params).url);
907 }
908
909 // Verify that security origins are replicated properly to RenderFrameProxies 771 // Verify that security origins are replicated properly to RenderFrameProxies
910 // when swapping out. 772 // when swapping out.
911 TEST_F(RenderViewImplTest, OriginReplicationForSwapOut) { 773 TEST_F(RenderViewImplTest, OriginReplicationForSwapOut) {
912 // This test should only run with --site-per-process, since origin 774 // This test should only run with --site-per-process, since origin
913 // replication only happens in that mode. 775 // replication only happens in that mode.
914 if (!AreAllSitesIsolatedForTesting()) 776 if (!AreAllSitesIsolatedForTesting())
915 return; 777 return;
916 778
917 LoadHTML( 779 LoadHTML(
918 "Hello <iframe src='data:text/html,frame 1'></iframe>" 780 "Hello <iframe src='data:text/html,frame 1'></iframe>"
(...skipping 1556 matching lines...) Expand 10 before | Expand all | Expand 10 after
2475 FROM_HERE, 2337 FROM_HERE,
2476 base::Bind(&DevToolsAgentTest::CloseWhilePaused, base::Unretained(this))); 2338 base::Bind(&DevToolsAgentTest::CloseWhilePaused, base::Unretained(this)));
2477 ExecuteJavaScriptForTests("debugger;"); 2339 ExecuteJavaScriptForTests("debugger;");
2478 2340
2479 // CloseWhilePaused should resume execution and continue here. 2341 // CloseWhilePaused should resume execution and continue here.
2480 EXPECT_FALSE(IsPaused()); 2342 EXPECT_FALSE(IsPaused());
2481 Detach(); 2343 Detach();
2482 } 2344 }
2483 2345
2484 } // namespace content 2346 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/render_frame_proxy.cc ('k') | content/renderer/render_view_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698