OLD | NEW |
---|---|
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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/containers/hash_tables.h" | 6 #include "base/containers/hash_tables.h" |
7 #include "base/strings/utf_string_conversions.h" | 7 #include "base/strings/utf_string_conversions.h" |
8 #include "content/browser/dom_storage/dom_storage_context_wrapper.h" | 8 #include "content/browser/dom_storage/dom_storage_context_wrapper.h" |
9 #include "content/browser/dom_storage/session_storage_namespace_impl.h" | 9 #include "content/browser/dom_storage/session_storage_namespace_impl.h" |
10 #include "content/browser/frame_host/navigator.h" | 10 #include "content/browser/frame_host/navigator.h" |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
66 shell->web_contents()->GetRenderViewHost()->GetRoutingID()); | 66 shell->web_contents()->GetRenderViewHost()->GetRoutingID()); |
67 | 67 |
68 // Now, simulate a link click coming from the renderer. | 68 // Now, simulate a link click coming from the renderer. |
69 GURL extension_url("https://bar.com/simple_page.html"); | 69 GURL extension_url("https://bar.com/simple_page.html"); |
70 WebContentsImpl* wc = static_cast<WebContentsImpl*>(shell->web_contents()); | 70 WebContentsImpl* wc = static_cast<WebContentsImpl*>(shell->web_contents()); |
71 wc->GetFrameTree()->root()->navigator()->RequestOpenURL( | 71 wc->GetFrameTree()->root()->navigator()->RequestOpenURL( |
72 wc->GetFrameTree()->root()->current_frame_host(), extension_url, nullptr, | 72 wc->GetFrameTree()->root()->current_frame_host(), extension_url, nullptr, |
73 Referrer(), CURRENT_TAB, false, true); | 73 Referrer(), CURRENT_TAB, false, true); |
74 | 74 |
75 // Since the navigation above requires a cross-process swap, there will be a | 75 // Since the navigation above requires a cross-process swap, there will be a |
76 // pending RenderViewHost. Ensure it exists and is in a different process | 76 // speculative/pending RenderViewHost. Ensure it exists and is in a different |
clamy
2015/06/10 12:30:27
s/RenderViewHost/RenderFrameHost
carlosk
2015/06/10 13:15:06
Done.
| |
77 // than the initial page. | 77 // process than the initial page. |
78 RenderViewHostImpl* pending_rvh = | 78 RenderFrameHostImpl* next_rfh; |
79 wc->GetRenderManagerForTesting()->pending_render_view_host(); | 79 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
80 EXPECT_TRUE(pending_rvh != NULL); | 80 switches::kEnableBrowserSideNavigation)) { |
81 EXPECT_NE(shell->web_contents()->GetRenderViewHost()->GetProcess()->GetID(), | 81 next_rfh = |
82 pending_rvh->GetProcess()->GetID()); | 82 wc->GetRenderManagerForTesting()->speculative_frame_host_for_testing(); |
83 } else { | |
84 next_rfh = wc->GetRenderManagerForTesting()->pending_frame_host(); | |
85 } | |
83 | 86 |
84 return pending_rvh; | 87 EXPECT_TRUE(next_rfh); |
88 EXPECT_NE(shell->web_contents()->GetRenderProcessHost()->GetID(), | |
89 next_rfh->GetProcess()->GetID()); | |
90 | |
91 return next_rfh->render_view_host(); | |
85 } | 92 } |
86 | 93 |
87 } // namespace | 94 } // namespace |
88 | 95 |
89 | 96 |
90 // The goal of these tests will be to "simulate" exploited renderer processes, | 97 // The goal of these tests will be to "simulate" exploited renderer processes, |
91 // which can send arbitrary IPC messages and confuse browser process internal | 98 // which can send arbitrary IPC messages and confuse browser process internal |
92 // state, leading to security bugs. We are trying to verify that the browser | 99 // state, leading to security bugs. We are trying to verify that the browser |
93 // doesn't perform any dangerous operations in such cases. | 100 // doesn't perform any dangerous operations in such cases. |
94 class SecurityExploitBrowserTest : public ContentBrowserTest { | 101 class SecurityExploitBrowserTest : public ContentBrowserTest { |
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
308 // "evil" message doesn't arrive in the intervening period. | 315 // "evil" message doesn't arrive in the intervening period. |
309 ASSERT_TRUE(content::ExecuteScript( | 316 ASSERT_TRUE(content::ExecuteScript( |
310 interstitial_page->GetMainFrame(), | 317 interstitial_page->GetMainFrame(), |
311 "window.domAutomationController.send(\"okay2\");")); | 318 "window.domAutomationController.send(\"okay2\");")); |
312 ASSERT_TRUE(message_queue.WaitForMessage(&message)); | 319 ASSERT_TRUE(message_queue.WaitForMessage(&message)); |
313 ASSERT_EQ("\"okay2\"", message); | 320 ASSERT_EQ("\"okay2\"", message); |
314 ASSERT_EQ("\"okay2\"", interstitial->last_command()); | 321 ASSERT_EQ("\"okay2\"", interstitial->last_command()); |
315 } | 322 } |
316 | 323 |
317 } // namespace content | 324 } // namespace content |
OLD | NEW |