Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 3125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3136 | 3136 |
| 3137 // The RenderFrameHost committed. | 3137 // The RenderFrameHost committed. |
| 3138 manager->DidNavigateFrame(speculative_host, true); | 3138 manager->DidNavigateFrame(speculative_host, true); |
| 3139 EXPECT_EQ(speculative_host, manager->current_frame_host()); | 3139 EXPECT_EQ(speculative_host, manager->current_frame_host()); |
| 3140 EXPECT_EQ(next_web_ui, manager->current_frame_host()->web_ui()); | 3140 EXPECT_EQ(next_web_ui, manager->current_frame_host()->web_ui()); |
| 3141 EXPECT_FALSE(GetPendingFrameHost(manager)); | 3141 EXPECT_FALSE(GetPendingFrameHost(manager)); |
| 3142 EXPECT_FALSE(speculative_host->pending_web_ui()); | 3142 EXPECT_FALSE(speculative_host->pending_web_ui()); |
| 3143 EXPECT_FALSE(manager->GetNavigatingWebUI()); | 3143 EXPECT_FALSE(manager->GetNavigatingWebUI()); |
| 3144 } | 3144 } |
| 3145 | 3145 |
| 3146 namespace { | |
| 3147 | |
| 3148 // Helper function for strict mixed content checking tests. | |
| 3149 void CheckMixedContentIPC(TestRenderFrameHost* rfh, bool expected_param) { | |
|
alexmos
2015/12/11 02:52:27
nit: maybe put this on top in the existing anonymo
estark
2015/12/12 01:35:43
Done.
| |
| 3150 const IPC::Message* message = | |
| 3151 rfh->GetProcess()->sink().GetUniqueMessageMatching( | |
| 3152 FrameMsg_DidUpdateShouldEnforceStrictMixedContentChecking::ID); | |
| 3153 ASSERT_TRUE(message); | |
|
alexmos
2015/12/11 02:52:27
Could we also verify that the message's routing ID
estark
2015/12/12 01:35:43
Done.
| |
| 3154 FrameMsg_DidUpdateShouldEnforceStrictMixedContentChecking::Param params; | |
| 3155 EXPECT_TRUE(FrameMsg_DidUpdateShouldEnforceStrictMixedContentChecking::Read( | |
| 3156 message, ¶ms)); | |
| 3157 EXPECT_EQ(expected_param, base::get<0>(params)); | |
| 3158 rfh->GetProcess()->sink().ClearMessages(); | |
| 3159 } | |
| 3160 | |
| 3161 } // namespace | |
| 3162 | |
| 3163 // Tests that frame proxies receive updates when a frame's enforcement | |
| 3164 // of strict mixed content checking changes. | |
| 3165 TEST_F(RenderFrameHostManagerTestWithSiteIsolation, | |
| 3166 ProxiesReceiveShouldEnforceStrictMixedContentChecking) { | |
| 3167 const GURL kUrl1("http://www.google.test"); | |
| 3168 const GURL kUrl2("http://www.google2.test"); | |
| 3169 const GURL kUrl3("http://www.google2.test/foo"); | |
| 3170 | |
| 3171 contents()->NavigateAndCommit(kUrl1); | |
| 3172 | |
| 3173 // Create a child frame and navigate it cross-site. | |
| 3174 main_test_rfh()->OnCreateChildFrame( | |
| 3175 main_test_rfh()->GetProcess()->GetNextRoutingID(), | |
| 3176 blink::WebTreeScopeType::Document, "frame1", blink::WebSandboxFlags::None, | |
| 3177 blink::WebFrameOwnerProperties()); | |
| 3178 | |
| 3179 FrameTreeNode* root = contents()->GetFrameTree()->root(); | |
| 3180 RenderFrameHostManager* child = root->child_at(0)->render_manager(); | |
| 3181 | |
| 3182 // Navigate subframe to kUrl2. | |
| 3183 NavigationEntryImpl entry1(nullptr /* instance */, -1 /* page_id */, kUrl2, | |
| 3184 Referrer(kUrl1, blink::WebReferrerPolicyDefault), | |
| 3185 base::string16() /* title */, | |
| 3186 ui::PAGE_TRANSITION_LINK, | |
| 3187 false /* is_renderer_init */); | |
| 3188 TestRenderFrameHost* child_host = | |
| 3189 static_cast<TestRenderFrameHost*>(NavigateToEntry(child, entry1)); | |
| 3190 child->DidNavigateFrame(child_host, true); | |
| 3191 | |
| 3192 // Verify that parent and child are in different processes. | |
| 3193 EXPECT_NE(child_host->GetProcess(), main_test_rfh()->GetProcess()); | |
| 3194 | |
| 3195 // Change the parent's enforcement of strict mixed content checking, | |
| 3196 // and check that the correct IPC is sent to the child frame's | |
| 3197 // process. | |
| 3198 main_test_rfh()->OnDidEnforceStrictMixedContentChecking(); | |
|
alexmos
2015/12/11 02:52:27
Can we also check that the bit in the correspondin
estark
2015/12/12 01:35:43
Done.
| |
| 3199 ASSERT_NO_FATAL_FAILURE(CheckMixedContentIPC(child_host, true)); | |
| 3200 | |
| 3201 // Do the same for the child's enforcement. | |
| 3202 child_host->OnDidEnforceStrictMixedContentChecking(); | |
| 3203 ASSERT_NO_FATAL_FAILURE(CheckMixedContentIPC(main_test_rfh(), true)); | |
|
alexmos
2015/12/11 02:52:27
It might be good to document somewhere (here?) why
estark
2015/12/12 01:35:43
Yeah, that sounds right. Added a comment here.
| |
| 3204 | |
| 3205 // Check that the flag for the parent's proxy to the child is reset | |
| 3206 // when the child navigates within the same process. | |
| 3207 main_test_rfh()->GetProcess()->sink().ClearMessages(); | |
|
alexmos
2015/12/11 02:52:27
nit: CheckMixedContentIPC also clears messages in
estark
2015/12/12 01:35:43
Done.
| |
| 3208 FrameHostMsg_DidCommitProvisionalLoad_Params commit_params; | |
| 3209 commit_params.page_id = 0; | |
| 3210 commit_params.nav_entry_id = 0; | |
| 3211 commit_params.did_create_new_entry = false; | |
| 3212 commit_params.url = kUrl3; | |
| 3213 commit_params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; | |
| 3214 commit_params.should_update_history = false; | |
| 3215 commit_params.gesture = NavigationGestureAuto; | |
| 3216 commit_params.was_within_same_page = false; | |
| 3217 commit_params.is_post = false; | |
| 3218 commit_params.page_state = PageState::CreateFromURL(kUrl3); | |
| 3219 commit_params.should_enforce_strict_mixed_content_checking = false; | |
| 3220 child_host->SendNavigateWithParams(&commit_params); | |
|
alexmos
2015/12/11 02:52:27
Similarly, can we check that the replication state
estark
2015/12/12 01:35:43
Done.
| |
| 3221 ASSERT_NO_FATAL_FAILURE(CheckMixedContentIPC(main_test_rfh(), false)); | |
| 3222 } | |
| 3223 | |
| 3146 } // namespace content | 3224 } // namespace content |
| OLD | NEW |