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

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

Issue 1092973002: Revert of PlzNavigate: move ownership of the NavigationRequest to the FrameTreeNode (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 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/browser/frame_host/navigator_impl.cc ('k') | content/test/test_render_frame_host.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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/macros.h" 6 #include "base/macros.h"
7 #include "base/time/time.h" 7 #include "base/time/time.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 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 const Referrer& referrer, 61 const Referrer& referrer,
62 ui::PageTransition transition_type) { 62 ui::PageTransition transition_type) {
63 NavigationController::LoadURLParams load_params(url); 63 NavigationController::LoadURLParams load_params(url);
64 load_params.frame_tree_node_id = node->frame_tree_node_id(); 64 load_params.frame_tree_node_id = node->frame_tree_node_id();
65 load_params.referrer = referrer; 65 load_params.referrer = referrer;
66 load_params.transition_type = transition_type; 66 load_params.transition_type = transition_type;
67 67
68 controller().LoadURLWithParams(load_params); 68 controller().LoadURLWithParams(load_params);
69 } 69 }
70 70
71 NavigationRequest* GetNavigationRequestForFrameTreeNode(
72 FrameTreeNode* frame_tree_node) {
73 return static_cast<NavigatorImpl*>(frame_tree_node->navigator())
74 ->GetNavigationRequestForNodeForTesting(frame_tree_node);
75 }
76
71 TestRenderFrameHost* GetSpeculativeRenderFrameHost(FrameTreeNode* node) { 77 TestRenderFrameHost* GetSpeculativeRenderFrameHost(FrameTreeNode* node) {
72 return static_cast<TestRenderFrameHost*>( 78 return static_cast<TestRenderFrameHost*>(
73 node->render_manager()->speculative_render_frame_host_.get()); 79 node->render_manager()->speculative_render_frame_host_.get());
74 } 80 }
75 81
76 // Checks if this RenderFrameHost sent a single FrameMsg_CommitNavigation 82 // Checks if this RenderFrameHost sent a single FrameMsg_CommitNavigation
77 // since the last clearing of the sink. 83 // since the last clearing of the sink.
78 // Note: caller must invoke ClearMessages on the sink at some point before 84 // Note: caller must invoke ClearMessages on the sink at some point before
79 // the tracked commit happens to clear up commit messages from previous 85 // the tracked commit happens to clear up commit messages from previous
80 // navigations. 86 // navigations.
(...skipping 20 matching lines...) Expand all
101 TEST_F(NavigatorTestWithBrowserSideNavigation, 107 TEST_F(NavigatorTestWithBrowserSideNavigation,
102 SimpleBrowserInitiatedNavigationFromNonLiveRenderer) { 108 SimpleBrowserInitiatedNavigationFromNonLiveRenderer) {
103 const GURL kUrl("http://chromium.org/"); 109 const GURL kUrl("http://chromium.org/");
104 110
105 EXPECT_FALSE(main_test_rfh()->IsRenderFrameLive()); 111 EXPECT_FALSE(main_test_rfh()->IsRenderFrameLive());
106 112
107 // Start a browser-initiated navigation. 113 // Start a browser-initiated navigation.
108 int32 site_instance_id = main_test_rfh()->GetSiteInstance()->GetId(); 114 int32 site_instance_id = main_test_rfh()->GetSiteInstance()->GetId();
109 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); 115 FrameTreeNode* node = main_test_rfh()->frame_tree_node();
110 RequestNavigation(node, kUrl); 116 RequestNavigation(node, kUrl);
111 NavigationRequest* request = node->navigation_request(); 117 NavigationRequest* request = GetNavigationRequestForFrameTreeNode(node);
112 ASSERT_TRUE(request); 118 ASSERT_TRUE(request);
113 EXPECT_EQ(kUrl, request->common_params().url); 119 EXPECT_EQ(kUrl, request->common_params().url);
114 EXPECT_TRUE(request->browser_initiated()); 120 EXPECT_TRUE(request->browser_initiated());
115 121
116 // As there's no live renderer the navigation should not wait for a 122 // As there's no live renderer the navigation should not wait for a
117 // beforeUnload ACK from the renderer and start right away. 123 // beforeUnload ACK from the renderer and start right away.
118 EXPECT_EQ(NavigationRequest::STARTED, request->state()); 124 EXPECT_EQ(NavigationRequest::STARTED, request->state());
119 ASSERT_TRUE(GetLoaderForNavigationRequest(request)); 125 ASSERT_TRUE(GetLoaderForNavigationRequest(request));
120 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 126 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
121 EXPECT_FALSE(node->render_manager()->pending_frame_host()); 127 EXPECT_FALSE(node->render_manager()->pending_frame_host());
122 128
123 // Have the current RenderFrameHost commit the navigation. 129 // Have the current RenderFrameHost commit the navigation.
124 scoped_refptr<ResourceResponse> response(new ResourceResponse); 130 scoped_refptr<ResourceResponse> response(new ResourceResponse);
125 GetLoaderForNavigationRequest(request) 131 GetLoaderForNavigationRequest(request)
126 ->CallOnResponseStarted(response, MakeEmptyStream()); 132 ->CallOnResponseStarted(response, MakeEmptyStream());
127 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); 133 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh()));
128 EXPECT_EQ(NavigationRequest::RESPONSE_STARTED, request->state()); 134 EXPECT_EQ(NavigationRequest::RESPONSE_STARTED, request->state());
129 135
130 // Commit the navigation. 136 // Commit the navigation.
131 main_test_rfh()->SendNavigate(0, kUrl); 137 main_test_rfh()->SendNavigate(0, kUrl);
132 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, main_test_rfh()->rfh_state()); 138 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, main_test_rfh()->rfh_state());
133 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl), 139 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl),
134 main_test_rfh()->GetSiteInstance()->GetSiteURL()); 140 main_test_rfh()->GetSiteInstance()->GetSiteURL());
135 EXPECT_EQ(kUrl, contents()->GetLastCommittedURL()); 141 EXPECT_EQ(kUrl, contents()->GetLastCommittedURL());
136 EXPECT_FALSE(node->navigation_request()); 142 EXPECT_FALSE(GetNavigationRequestForFrameTreeNode(node));
137 EXPECT_FALSE(node->render_manager()->pending_frame_host()); 143 EXPECT_FALSE(node->render_manager()->pending_frame_host());
138 144
139 // The main RenderFrameHost should not have been changed, and the renderer 145 // The main RenderFrameHost should not have been changed, and the renderer
140 // should have been initialized. 146 // should have been initialized.
141 EXPECT_EQ(site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); 147 EXPECT_EQ(site_instance_id, main_test_rfh()->GetSiteInstance()->GetId());
142 EXPECT_TRUE(main_test_rfh()->IsRenderFrameLive()); 148 EXPECT_TRUE(main_test_rfh()->IsRenderFrameLive());
143 149
144 // After a navigation is finished no speculative RenderFrameHost should 150 // After a navigation is finished no speculative RenderFrameHost should
145 // exist. 151 // exist.
146 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 152 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
147 153
148 // With PlzNavigate enabled a pending RenderFrameHost should never exist. 154 // With PlzNavigate enabled a pending RenderFrameHost should never exist.
149 EXPECT_FALSE(node->render_manager()->pending_frame_host()); 155 EXPECT_FALSE(node->render_manager()->pending_frame_host());
150 } 156 }
151 157
152 // PlzNavigate: Test a complete renderer-initiated same-site navigation. 158 // PlzNavigate: Test a complete renderer-initiated same-site navigation.
153 TEST_F(NavigatorTestWithBrowserSideNavigation, 159 TEST_F(NavigatorTestWithBrowserSideNavigation,
154 SimpleRendererInitiatedSameSiteNavigation) { 160 SimpleRendererInitiatedSameSiteNavigation) {
155 const GURL kUrl1("http://www.chromium.org/"); 161 const GURL kUrl1("http://www.chromium.org/");
156 const GURL kUrl2("http://www.chromium.org/Home"); 162 const GURL kUrl2("http://www.chromium.org/Home");
157 163
158 contents()->NavigateAndCommit(kUrl1); 164 contents()->NavigateAndCommit(kUrl1);
159 EXPECT_TRUE(main_test_rfh()->IsRenderFrameLive()); 165 EXPECT_TRUE(main_test_rfh()->IsRenderFrameLive());
160 166
161 // Start a renderer-initiated non-user-initiated navigation. 167 // Start a renderer-initiated non-user-initiated navigation.
162 process()->sink().ClearMessages(); 168 process()->sink().ClearMessages();
163 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); 169 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false);
164 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); 170 FrameTreeNode* node = main_test_rfh()->frame_tree_node();
165 NavigationRequest* request = node->navigation_request(); 171 NavigationRequest* request = GetNavigationRequestForFrameTreeNode(node);
166 ASSERT_TRUE(request); 172 ASSERT_TRUE(request);
167 173
168 // The navigation is immediately started as there's no need to wait for 174 // The navigation is immediately started as there's no need to wait for
169 // beforeUnload to be executed. 175 // beforeUnload to be executed.
170 EXPECT_EQ(NavigationRequest::STARTED, request->state()); 176 EXPECT_EQ(NavigationRequest::STARTED, request->state());
171 EXPECT_FALSE(request->begin_params().has_user_gesture); 177 EXPECT_FALSE(request->begin_params().has_user_gesture);
172 EXPECT_EQ(kUrl2, request->common_params().url); 178 EXPECT_EQ(kUrl2, request->common_params().url);
173 EXPECT_FALSE(request->browser_initiated()); 179 EXPECT_FALSE(request->browser_initiated());
174 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 180 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
175 181
176 // Have the current RenderFrameHost commit the navigation. 182 // Have the current RenderFrameHost commit the navigation.
177 scoped_refptr<ResourceResponse> response(new ResourceResponse); 183 scoped_refptr<ResourceResponse> response(new ResourceResponse);
178 GetLoaderForNavigationRequest(request) 184 GetLoaderForNavigationRequest(request)
179 ->CallOnResponseStarted(response, MakeEmptyStream()); 185 ->CallOnResponseStarted(response, MakeEmptyStream());
180 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); 186 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh()));
181 EXPECT_EQ(NavigationRequest::RESPONSE_STARTED, request->state()); 187 EXPECT_EQ(NavigationRequest::RESPONSE_STARTED, request->state());
182 188
183 // Commit the navigation. 189 // Commit the navigation.
184 main_test_rfh()->SendNavigate(0, kUrl2); 190 main_test_rfh()->SendNavigate(0, kUrl2);
185 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, main_test_rfh()->rfh_state()); 191 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, main_test_rfh()->rfh_state());
186 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl2), 192 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl2),
187 main_test_rfh()->GetSiteInstance()->GetSiteURL()); 193 main_test_rfh()->GetSiteInstance()->GetSiteURL());
188 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL()); 194 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL());
189 EXPECT_FALSE(node->navigation_request()); 195 EXPECT_FALSE(GetNavigationRequestForFrameTreeNode(node));
190 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 196 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
191 EXPECT_FALSE(node->render_manager()->pending_frame_host()); 197 EXPECT_FALSE(node->render_manager()->pending_frame_host());
192 } 198 }
193 199
194 // PlzNavigate: Test a complete renderer-initiated navigation that should be 200 // PlzNavigate: Test a complete renderer-initiated navigation that should be
195 // cross-site but does not result in a SiteInstance swap because its 201 // cross-site but does not result in a SiteInstance swap because its
196 // renderer-initiated. 202 // renderer-initiated.
197 TEST_F(NavigatorTestWithBrowserSideNavigation, 203 TEST_F(NavigatorTestWithBrowserSideNavigation,
198 SimpleRendererInitiatedCrossSiteNavigation) { 204 SimpleRendererInitiatedCrossSiteNavigation) {
199 const GURL kUrl1("http://www.chromium.org/"); 205 const GURL kUrl1("http://www.chromium.org/");
200 const GURL kUrl2("http://www.google.com"); 206 const GURL kUrl2("http://www.google.com");
201 207
202 contents()->NavigateAndCommit(kUrl1); 208 contents()->NavigateAndCommit(kUrl1);
203 EXPECT_TRUE(main_test_rfh()->IsRenderFrameLive()); 209 EXPECT_TRUE(main_test_rfh()->IsRenderFrameLive());
204 int32 site_instance_id_1 = main_test_rfh()->GetSiteInstance()->GetId(); 210 int32 site_instance_id_1 = main_test_rfh()->GetSiteInstance()->GetId();
205 211
206 // Start a renderer-initiated non-user-initiated navigation. 212 // Start a renderer-initiated non-user-initiated navigation.
207 process()->sink().ClearMessages(); 213 process()->sink().ClearMessages();
208 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); 214 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false);
209 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); 215 FrameTreeNode* node = main_test_rfh()->frame_tree_node();
210 NavigationRequest* request = node->navigation_request(); 216 NavigationRequest* request = GetNavigationRequestForFrameTreeNode(node);
211 ASSERT_TRUE(request); 217 ASSERT_TRUE(request);
212 218
213 // The navigation is immediately started as there's no need to wait for 219 // The navigation is immediately started as there's no need to wait for
214 // beforeUnload to be executed. 220 // beforeUnload to be executed.
215 EXPECT_EQ(NavigationRequest::STARTED, request->state()); 221 EXPECT_EQ(NavigationRequest::STARTED, request->state());
216 EXPECT_FALSE(request->begin_params().has_user_gesture); 222 EXPECT_FALSE(request->begin_params().has_user_gesture);
217 EXPECT_EQ(kUrl2, request->common_params().url); 223 EXPECT_EQ(kUrl2, request->common_params().url);
218 EXPECT_FALSE(request->browser_initiated()); 224 EXPECT_FALSE(request->browser_initiated());
219 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 225 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
220 226
221 // Have the current RenderFrameHost commit the navigation. 227 // Have the current RenderFrameHost commit the navigation.
222 scoped_refptr<ResourceResponse> response(new ResourceResponse); 228 scoped_refptr<ResourceResponse> response(new ResourceResponse);
223 GetLoaderForNavigationRequest(request) 229 GetLoaderForNavigationRequest(request)
224 ->CallOnResponseStarted(response, MakeEmptyStream()); 230 ->CallOnResponseStarted(response, MakeEmptyStream());
225 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); 231 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh()));
226 EXPECT_EQ(NavigationRequest::RESPONSE_STARTED, request->state()); 232 EXPECT_EQ(NavigationRequest::RESPONSE_STARTED, request->state());
227 233
228 // Commit the navigation. 234 // Commit the navigation.
229 main_test_rfh()->SendNavigate(0, kUrl2); 235 main_test_rfh()->SendNavigate(0, kUrl2);
230 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, main_test_rfh()->rfh_state()); 236 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, main_test_rfh()->rfh_state());
231 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL()); 237 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL());
232 EXPECT_FALSE(node->navigation_request()); 238 EXPECT_FALSE(GetNavigationRequestForFrameTreeNode(node));
233 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 239 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
234 EXPECT_FALSE(node->render_manager()->pending_frame_host()); 240 EXPECT_FALSE(node->render_manager()->pending_frame_host());
235 241
236 // The SiteInstance did not change. 242 // The SiteInstance did not change.
237 EXPECT_EQ(site_instance_id_1, main_test_rfh()->GetSiteInstance()->GetId()); 243 EXPECT_EQ(site_instance_id_1, main_test_rfh()->GetSiteInstance()->GetId());
238 } 244 }
239 245
240 // PlzNavigate: Test that a beforeUnload denial cancels the navigation. 246 // PlzNavigate: Test that a beforeUnload denial cancels the navigation.
241 TEST_F(NavigatorTestWithBrowserSideNavigation, 247 TEST_F(NavigatorTestWithBrowserSideNavigation,
242 BeforeUnloadDenialCancelNavigation) { 248 BeforeUnloadDenialCancelNavigation) {
243 const GURL kUrl1("http://www.google.com/"); 249 const GURL kUrl1("http://www.google.com/");
244 const GURL kUrl2("http://www.chromium.org/"); 250 const GURL kUrl2("http://www.chromium.org/");
245 251
246 contents()->NavigateAndCommit(kUrl1); 252 contents()->NavigateAndCommit(kUrl1);
247 253
248 // Start a new navigation. 254 // Start a new navigation.
249 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); 255 FrameTreeNode* node = main_test_rfh()->frame_tree_node();
250 RequestNavigation(node, kUrl2); 256 RequestNavigation(node, kUrl2);
251 NavigationRequest* request = node->navigation_request(); 257 NavigationRequest* request = GetNavigationRequestForFrameTreeNode(node);
252 ASSERT_TRUE(request); 258 ASSERT_TRUE(request);
253 EXPECT_TRUE(request->browser_initiated()); 259 EXPECT_TRUE(request->browser_initiated());
254 EXPECT_EQ(NavigationRequest::WAITING_FOR_RENDERER_RESPONSE, request->state()); 260 EXPECT_EQ(NavigationRequest::WAITING_FOR_RENDERER_RESPONSE, request->state());
255 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 261 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
256 262
257 // Simulate a beforeUnload denial. 263 // Simulate a beforeUnload denial.
258 main_test_rfh()->SendBeforeUnloadACK(false); 264 main_test_rfh()->SendBeforeUnloadACK(false);
259 EXPECT_FALSE(node->navigation_request()); 265 EXPECT_FALSE(GetNavigationRequestForFrameTreeNode(node));
260 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 266 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
261 } 267 }
262 268
263 // PlzNavigate: Test that a proper NavigationRequest is created by 269 // PlzNavigate: Test that a proper NavigationRequest is created by
264 // RequestNavigation. 270 // RequestNavigation.
265 TEST_F(NavigatorTestWithBrowserSideNavigation, BeginNavigation) { 271 TEST_F(NavigatorTestWithBrowserSideNavigation, BeginNavigation) {
266 const GURL kUrl1("http://www.google.com/"); 272 const GURL kUrl1("http://www.google.com/");
267 const GURL kUrl2("http://www.chromium.org/"); 273 const GURL kUrl2("http://www.chromium.org/");
268 const GURL kUrl3("http://www.gmail.com/"); 274 const GURL kUrl3("http://www.gmail.com/");
269 275
270 contents()->NavigateAndCommit(kUrl1); 276 contents()->NavigateAndCommit(kUrl1);
271 277
272 // Add a subframe. 278 // Add a subframe.
273 FrameTreeNode* root_node = contents()->GetFrameTree()->root(); 279 FrameTreeNode* root_node = contents()->GetFrameTree()->root();
274 TestRenderFrameHost* subframe_rfh = main_test_rfh()->AppendChild("Child"); 280 TestRenderFrameHost* subframe_rfh = main_test_rfh()->AppendChild("Child");
275 ASSERT_TRUE(subframe_rfh); 281 ASSERT_TRUE(subframe_rfh);
276 282
277 // Start a navigation at the subframe. 283 // Start a navigation at the subframe.
278 FrameTreeNode* subframe_node = subframe_rfh->frame_tree_node(); 284 FrameTreeNode* subframe_node = subframe_rfh->frame_tree_node();
279 RequestNavigation(subframe_node, kUrl2); 285 RequestNavigation(subframe_node, kUrl2);
280 NavigationRequest* subframe_request = subframe_node->navigation_request(); 286 NavigationRequest* subframe_request =
287 GetNavigationRequestForFrameTreeNode(subframe_node);
281 TestNavigationURLLoader* subframe_loader = 288 TestNavigationURLLoader* subframe_loader =
282 GetLoaderForNavigationRequest(subframe_request); 289 GetLoaderForNavigationRequest(subframe_request);
283 290
284 // Subframe navigations should start right away as they don't have to request 291 // Subframe navigations should start right away as they don't have to request
285 // beforeUnload to run at the renderer. 292 // beforeUnload to run at the renderer.
286 ASSERT_TRUE(subframe_request); 293 ASSERT_TRUE(subframe_request);
287 ASSERT_TRUE(subframe_loader); 294 ASSERT_TRUE(subframe_loader);
288 EXPECT_EQ(NavigationRequest::STARTED, subframe_request->state()); 295 EXPECT_EQ(NavigationRequest::STARTED, subframe_request->state());
289 EXPECT_EQ(kUrl2, subframe_request->common_params().url); 296 EXPECT_EQ(kUrl2, subframe_request->common_params().url);
290 EXPECT_EQ(kUrl2, subframe_loader->request_info()->common_params.url); 297 EXPECT_EQ(kUrl2, subframe_loader->request_info()->common_params.url);
291 // First party for cookies url should be that of the main frame. 298 // First party for cookies url should be that of the main frame.
292 EXPECT_EQ(kUrl1, subframe_loader->request_info()->first_party_for_cookies); 299 EXPECT_EQ(kUrl1, subframe_loader->request_info()->first_party_for_cookies);
293 EXPECT_FALSE(subframe_loader->request_info()->is_main_frame); 300 EXPECT_FALSE(subframe_loader->request_info()->is_main_frame);
294 EXPECT_TRUE(subframe_loader->request_info()->parent_is_main_frame); 301 EXPECT_TRUE(subframe_loader->request_info()->parent_is_main_frame);
295 EXPECT_TRUE(subframe_request->browser_initiated()); 302 EXPECT_TRUE(subframe_request->browser_initiated());
296 EXPECT_FALSE(GetSpeculativeRenderFrameHost(root_node)); 303 EXPECT_FALSE(GetSpeculativeRenderFrameHost(root_node));
297 304
298 // Subframe navigations should never create a speculative RenderFrameHost, 305 // Subframe navigations should never create a speculative RenderFrameHost,
299 // unless site-per-process is enabled. In that case, as the subframe 306 // unless site-per-process is enabled. In that case, as the subframe
300 // navigation is to a different site and is still ongoing, it should have one. 307 // navigation is to a different site and is still ongoing, it should have one.
301 if (base::CommandLine::ForCurrentProcess()->HasSwitch( 308 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
302 switches::kSitePerProcess)) { 309 switches::kSitePerProcess)) {
303 EXPECT_TRUE(GetSpeculativeRenderFrameHost(subframe_node)); 310 EXPECT_TRUE(GetSpeculativeRenderFrameHost(subframe_node));
304 } else { 311 } else {
305 EXPECT_FALSE(GetSpeculativeRenderFrameHost(subframe_node)); 312 EXPECT_FALSE(GetSpeculativeRenderFrameHost(subframe_node));
306 } 313 }
307 314
308 // Now start a navigation at the root node. 315 // Now start a navigation at the root node.
309 RequestNavigation(root_node, kUrl3); 316 RequestNavigation(root_node, kUrl3);
310 NavigationRequest* main_request = root_node->navigation_request(); 317 NavigationRequest* main_request =
318 GetNavigationRequestForFrameTreeNode(root_node);
311 ASSERT_TRUE(main_request); 319 ASSERT_TRUE(main_request);
312 EXPECT_EQ(NavigationRequest::WAITING_FOR_RENDERER_RESPONSE, 320 EXPECT_EQ(NavigationRequest::WAITING_FOR_RENDERER_RESPONSE,
313 main_request->state()); 321 main_request->state());
314 EXPECT_FALSE(GetSpeculativeRenderFrameHost(root_node)); 322 EXPECT_FALSE(GetSpeculativeRenderFrameHost(root_node));
315 323
316 // Simulate a BeforeUnloadACK IPC on the main frame. 324 // Simulate a BeforeUnloadACK IPC on the main frame.
317 main_test_rfh()->SendBeforeUnloadACK(true); 325 main_test_rfh()->SendBeforeUnloadACK(true);
318 TestNavigationURLLoader* main_loader = 326 TestNavigationURLLoader* main_loader =
319 GetLoaderForNavigationRequest(main_request); 327 GetLoaderForNavigationRequest(main_request);
320 EXPECT_EQ(kUrl3, main_request->common_params().url); 328 EXPECT_EQ(kUrl3, main_request->common_params().url);
(...skipping 28 matching lines...) Expand all
349 357
350 // Load a URL. 358 // Load a URL.
351 contents()->NavigateAndCommit(kUrl1); 359 contents()->NavigateAndCommit(kUrl1);
352 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); 360 FrameTreeNode* node = main_test_rfh()->frame_tree_node();
353 361
354 // Navigate to a different site. 362 // Navigate to a different site.
355 process()->sink().ClearMessages(); 363 process()->sink().ClearMessages();
356 RequestNavigation(node, kUrl2); 364 RequestNavigation(node, kUrl2);
357 main_test_rfh()->SendBeforeUnloadACK(true); 365 main_test_rfh()->SendBeforeUnloadACK(true);
358 366
359 NavigationRequest* main_request = node->navigation_request(); 367 NavigationRequest* main_request = GetNavigationRequestForFrameTreeNode(node);
360 ASSERT_TRUE(main_request); 368 ASSERT_TRUE(main_request);
361 369
362 // Navigations to a different site do create a speculative RenderFrameHost. 370 // Navigations to a different site do create a speculative RenderFrameHost.
363 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); 371 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node));
364 372
365 // Commit an HTTP 204 response. 373 // Commit an HTTP 204 response.
366 scoped_refptr<ResourceResponse> response(new ResourceResponse); 374 scoped_refptr<ResourceResponse> response(new ResourceResponse);
367 const char kNoContentHeaders[] = "HTTP/1.1 204 No Content\0\0"; 375 const char kNoContentHeaders[] = "HTTP/1.1 204 No Content\0\0";
368 response->head.headers = new net::HttpResponseHeaders( 376 response->head.headers = new net::HttpResponseHeaders(
369 std::string(kNoContentHeaders, arraysize(kNoContentHeaders))); 377 std::string(kNoContentHeaders, arraysize(kNoContentHeaders)));
370 GetLoaderForNavigationRequest(main_request)->CallOnResponseStarted( 378 GetLoaderForNavigationRequest(main_request)->CallOnResponseStarted(
371 response, MakeEmptyStream()); 379 response, MakeEmptyStream());
372 380
373 // There should be no pending nor speculative RenderFrameHost; the navigation 381 // There should be no pending nor speculative RenderFrameHost; the navigation
374 // was aborted. 382 // was aborted.
375 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); 383 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh()));
376 EXPECT_FALSE(node->navigation_request()); 384 EXPECT_FALSE(GetNavigationRequestForFrameTreeNode(node));
377 EXPECT_FALSE(node->render_manager()->pending_frame_host()); 385 EXPECT_FALSE(node->render_manager()->pending_frame_host());
378 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 386 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
379 387
380 // Now, repeat the test with 205 Reset Content. 388 // Now, repeat the test with 205 Reset Content.
381 389
382 // Navigate to a different site again. 390 // Navigate to a different site again.
383 process()->sink().ClearMessages(); 391 process()->sink().ClearMessages();
384 RequestNavigation(node, kUrl2); 392 RequestNavigation(node, kUrl2);
385 main_test_rfh()->SendBeforeUnloadACK(true); 393 main_test_rfh()->SendBeforeUnloadACK(true);
386 394
387 main_request = node->navigation_request(); 395 main_request = GetNavigationRequestForFrameTreeNode(node);
388 ASSERT_TRUE(main_request); 396 ASSERT_TRUE(main_request);
389 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); 397 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node));
390 398
391 // Commit an HTTP 205 response. 399 // Commit an HTTP 205 response.
392 response = new ResourceResponse; 400 response = new ResourceResponse;
393 const char kResetContentHeaders[] = "HTTP/1.1 205 Reset Content\0\0"; 401 const char kResetContentHeaders[] = "HTTP/1.1 205 Reset Content\0\0";
394 response->head.headers = new net::HttpResponseHeaders( 402 response->head.headers = new net::HttpResponseHeaders(
395 std::string(kResetContentHeaders, arraysize(kResetContentHeaders))); 403 std::string(kResetContentHeaders, arraysize(kResetContentHeaders)));
396 GetLoaderForNavigationRequest(main_request)->CallOnResponseStarted( 404 GetLoaderForNavigationRequest(main_request)->CallOnResponseStarted(
397 response, MakeEmptyStream()); 405 response, MakeEmptyStream());
398 406
399 // There should be no pending nor speculative RenderFrameHost; the navigation 407 // There should be no pending nor speculative RenderFrameHost; the navigation
400 // was aborted. 408 // was aborted.
401 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); 409 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh()));
402 EXPECT_FALSE(node->navigation_request()); 410 EXPECT_FALSE(GetNavigationRequestForFrameTreeNode(node));
403 EXPECT_FALSE(node->render_manager()->pending_frame_host()); 411 EXPECT_FALSE(node->render_manager()->pending_frame_host());
404 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 412 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
405 } 413 }
406 414
407 // PlzNavigate: Test that a new RenderFrameHost is created when doing a cross 415 // PlzNavigate: Test that a new RenderFrameHost is created when doing a cross
408 // site navigation. 416 // site navigation.
409 TEST_F(NavigatorTestWithBrowserSideNavigation, CrossSiteNavigation) { 417 TEST_F(NavigatorTestWithBrowserSideNavigation, CrossSiteNavigation) {
410 const GURL kUrl1("http://www.chromium.org/"); 418 const GURL kUrl1("http://www.chromium.org/");
411 const GURL kUrl2("http://www.google.com/"); 419 const GURL kUrl2("http://www.google.com/");
412 420
413 contents()->NavigateAndCommit(kUrl1); 421 contents()->NavigateAndCommit(kUrl1);
414 RenderFrameHostImpl* initial_rfh = main_test_rfh(); 422 RenderFrameHostImpl* initial_rfh = main_test_rfh();
415 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); 423 FrameTreeNode* node = main_test_rfh()->frame_tree_node();
416 424
417 // Navigate to a different site. 425 // Navigate to a different site.
418 process()->sink().ClearMessages(); 426 process()->sink().ClearMessages();
419 RequestNavigation(node, kUrl2); 427 RequestNavigation(node, kUrl2);
420 NavigationRequest* main_request = node->navigation_request(); 428 NavigationRequest* main_request = GetNavigationRequestForFrameTreeNode(node);
421 ASSERT_TRUE(main_request); 429 ASSERT_TRUE(main_request);
422 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 430 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
423 431
424 // Receive the beforeUnload ACK. 432 // Receive the beforeUnload ACK.
425 main_test_rfh()->SendBeforeUnloadACK(true); 433 main_test_rfh()->SendBeforeUnloadACK(true);
426 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); 434 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node));
427 435
428 scoped_refptr<ResourceResponse> response(new ResourceResponse); 436 scoped_refptr<ResourceResponse> response(new ResourceResponse);
429 GetLoaderForNavigationRequest(main_request)->CallOnResponseStarted( 437 GetLoaderForNavigationRequest(main_request)->CallOnResponseStarted(
430 response, MakeEmptyStream()); 438 response, MakeEmptyStream());
(...skipping 19 matching lines...) Expand all
450 const GURL kUrl2("http://www.google.com/"); 458 const GURL kUrl2("http://www.google.com/");
451 459
452 contents()->NavigateAndCommit(kUrl1); 460 contents()->NavigateAndCommit(kUrl1);
453 RenderFrameHostImpl* rfh = main_test_rfh(); 461 RenderFrameHostImpl* rfh = main_test_rfh();
454 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); 462 FrameTreeNode* node = main_test_rfh()->frame_tree_node();
455 463
456 // Navigate to a URL on the same site. 464 // Navigate to a URL on the same site.
457 process()->sink().ClearMessages(); 465 process()->sink().ClearMessages();
458 RequestNavigation(node, kUrl1); 466 RequestNavigation(node, kUrl1);
459 main_test_rfh()->SendBeforeUnloadACK(true); 467 main_test_rfh()->SendBeforeUnloadACK(true);
460 NavigationRequest* main_request = node->navigation_request(); 468 NavigationRequest* main_request = GetNavigationRequestForFrameTreeNode(node);
461 ASSERT_TRUE(main_request); 469 ASSERT_TRUE(main_request);
462 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 470 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
463 471
464 // It then redirects to another site. 472 // It then redirects to another site.
465 GetLoaderForNavigationRequest(main_request)->SimulateServerRedirect(kUrl2); 473 GetLoaderForNavigationRequest(main_request)->SimulateServerRedirect(kUrl2);
466 474
467 // The redirect should have been followed. 475 // The redirect should have been followed.
468 EXPECT_EQ(1, GetLoaderForNavigationRequest(main_request)->redirect_count()); 476 EXPECT_EQ(1, GetLoaderForNavigationRequest(main_request)->redirect_count());
469 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 477 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
470 478
(...skipping 29 matching lines...) Expand all
500 const GURL kUrl2_site = SiteInstance::GetSiteForURL(browser_context(), kUrl2); 508 const GURL kUrl2_site = SiteInstance::GetSiteForURL(browser_context(), kUrl2);
501 509
502 // Initialization. 510 // Initialization.
503 contents()->NavigateAndCommit(kUrl0); 511 contents()->NavigateAndCommit(kUrl0);
504 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); 512 FrameTreeNode* node = main_test_rfh()->frame_tree_node();
505 513
506 // Request navigation to the 1st URL. 514 // Request navigation to the 1st URL.
507 process()->sink().ClearMessages(); 515 process()->sink().ClearMessages();
508 RequestNavigation(node, kUrl1); 516 RequestNavigation(node, kUrl1);
509 main_test_rfh()->SendBeforeUnloadACK(true); 517 main_test_rfh()->SendBeforeUnloadACK(true);
510 NavigationRequest* request1 = node->navigation_request(); 518 NavigationRequest* request1 = GetNavigationRequestForFrameTreeNode(node);
511 ASSERT_TRUE(request1); 519 ASSERT_TRUE(request1);
512 EXPECT_EQ(kUrl1, request1->common_params().url); 520 EXPECT_EQ(kUrl1, request1->common_params().url);
513 EXPECT_TRUE(request1->browser_initiated()); 521 EXPECT_TRUE(request1->browser_initiated());
514 base::WeakPtr<TestNavigationURLLoader> loader1 = 522 base::WeakPtr<TestNavigationURLLoader> loader1 =
515 GetLoaderForNavigationRequest(request1)->AsWeakPtr(); 523 GetLoaderForNavigationRequest(request1)->AsWeakPtr();
516 EXPECT_TRUE(loader1); 524 EXPECT_TRUE(loader1);
517 525
518 // Confirm a speculative RenderFrameHost was created. 526 // Confirm a speculative RenderFrameHost was created.
519 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); 527 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node);
520 ASSERT_TRUE(speculative_rfh); 528 ASSERT_TRUE(speculative_rfh);
521 int32 site_instance_id_1 = speculative_rfh->GetSiteInstance()->GetId(); 529 int32 site_instance_id_1 = speculative_rfh->GetSiteInstance()->GetId();
522 EXPECT_EQ(kUrl1_site, speculative_rfh->GetSiteInstance()->GetSiteURL()); 530 EXPECT_EQ(kUrl1_site, speculative_rfh->GetSiteInstance()->GetSiteURL());
523 531
524 // Request navigation to the 2nd URL; the NavigationRequest must have been 532 // Request navigation to the 2nd URL; the NavigationRequest must have been
525 // replaced by a new one with a different URL. 533 // replaced by a new one with a different URL.
526 RequestNavigation(node, kUrl2); 534 RequestNavigation(node, kUrl2);
527 main_test_rfh()->SendBeforeUnloadACK(true); 535 main_test_rfh()->SendBeforeUnloadACK(true);
528 NavigationRequest* request2 = node->navigation_request(); 536 NavigationRequest* request2 = GetNavigationRequestForFrameTreeNode(node);
529 ASSERT_TRUE(request2); 537 ASSERT_TRUE(request2);
530 EXPECT_EQ(kUrl2, request2->common_params().url); 538 EXPECT_EQ(kUrl2, request2->common_params().url);
531 EXPECT_TRUE(request2->browser_initiated()); 539 EXPECT_TRUE(request2->browser_initiated());
532 540
533 // Confirm that the first loader got destroyed. 541 // Confirm that the first loader got destroyed.
534 EXPECT_FALSE(loader1); 542 EXPECT_FALSE(loader1);
535 543
536 // Confirm that a new speculative RenderFrameHost was created. 544 // Confirm that a new speculative RenderFrameHost was created.
537 speculative_rfh = GetSpeculativeRenderFrameHost(node); 545 speculative_rfh = GetSpeculativeRenderFrameHost(node);
538 ASSERT_TRUE(speculative_rfh); 546 ASSERT_TRUE(speculative_rfh);
(...skipping 29 matching lines...) Expand all
568 576
569 // Initialization. 577 // Initialization.
570 contents()->NavigateAndCommit(kUrl0); 578 contents()->NavigateAndCommit(kUrl0);
571 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); 579 FrameTreeNode* node = main_test_rfh()->frame_tree_node();
572 580
573 // Start a browser-initiated navigation to the 1st URL and receive its 581 // Start a browser-initiated navigation to the 1st URL and receive its
574 // beforeUnload ACK. 582 // beforeUnload ACK.
575 process()->sink().ClearMessages(); 583 process()->sink().ClearMessages();
576 RequestNavigation(node, kUrl1); 584 RequestNavigation(node, kUrl1);
577 main_test_rfh()->SendBeforeUnloadACK(true); 585 main_test_rfh()->SendBeforeUnloadACK(true);
578 NavigationRequest* request1 = node->navigation_request(); 586 NavigationRequest* request1 = GetNavigationRequestForFrameTreeNode(node);
579 ASSERT_TRUE(request1); 587 ASSERT_TRUE(request1);
580 EXPECT_EQ(kUrl1, request1->common_params().url); 588 EXPECT_EQ(kUrl1, request1->common_params().url);
581 EXPECT_TRUE(request1->browser_initiated()); 589 EXPECT_TRUE(request1->browser_initiated());
582 base::WeakPtr<TestNavigationURLLoader> loader1 = 590 base::WeakPtr<TestNavigationURLLoader> loader1 =
583 GetLoaderForNavigationRequest(request1)->AsWeakPtr(); 591 GetLoaderForNavigationRequest(request1)->AsWeakPtr();
584 EXPECT_TRUE(loader1); 592 EXPECT_TRUE(loader1);
585 593
586 // Confirm that a speculative RenderFrameHost was created. 594 // Confirm that a speculative RenderFrameHost was created.
587 ASSERT_TRUE(GetSpeculativeRenderFrameHost(node)); 595 ASSERT_TRUE(GetSpeculativeRenderFrameHost(node));
588 596
589 // Now receive a renderer-initiated user-initiated request. It should replace 597 // Now receive a renderer-initiated user-initiated request. It should replace
590 // the current NavigationRequest. 598 // the current NavigationRequest.
591 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, true); 599 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, true);
592 NavigationRequest* request2 = node->navigation_request(); 600 NavigationRequest* request2 = GetNavigationRequestForFrameTreeNode(node);
593 ASSERT_TRUE(request2); 601 ASSERT_TRUE(request2);
594 EXPECT_EQ(kUrl2, request2->common_params().url); 602 EXPECT_EQ(kUrl2, request2->common_params().url);
595 EXPECT_FALSE(request2->browser_initiated()); 603 EXPECT_FALSE(request2->browser_initiated());
596 EXPECT_TRUE(request2->begin_params().has_user_gesture); 604 EXPECT_TRUE(request2->begin_params().has_user_gesture);
597 605
598 // Confirm that the first loader got destroyed. 606 // Confirm that the first loader got destroyed.
599 EXPECT_FALSE(loader1); 607 EXPECT_FALSE(loader1);
600 608
601 // Confirm that the speculative RenderFrameHost was destroyed. 609 // Confirm that the speculative RenderFrameHost was destroyed.
602 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 610 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
(...skipping 21 matching lines...) Expand all
624 const GURL kUrl1("http://www.chromium.org/"); 632 const GURL kUrl1("http://www.chromium.org/");
625 const GURL kUrl2("http://www.google.com/"); 633 const GURL kUrl2("http://www.google.com/");
626 634
627 // Initialization. 635 // Initialization.
628 contents()->NavigateAndCommit(kUrl0); 636 contents()->NavigateAndCommit(kUrl0);
629 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); 637 FrameTreeNode* node = main_test_rfh()->frame_tree_node();
630 638
631 // Start a renderer-initiated user-initiated navigation to the 1st URL. 639 // Start a renderer-initiated user-initiated navigation to the 1st URL.
632 process()->sink().ClearMessages(); 640 process()->sink().ClearMessages();
633 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl1, true); 641 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl1, true);
634 NavigationRequest* request1 = node->navigation_request(); 642 NavigationRequest* request1 = GetNavigationRequestForFrameTreeNode(node);
635 ASSERT_TRUE(request1); 643 ASSERT_TRUE(request1);
636 EXPECT_EQ(kUrl1, request1->common_params().url); 644 EXPECT_EQ(kUrl1, request1->common_params().url);
637 EXPECT_FALSE(request1->browser_initiated()); 645 EXPECT_FALSE(request1->browser_initiated());
638 EXPECT_TRUE(request1->begin_params().has_user_gesture); 646 EXPECT_TRUE(request1->begin_params().has_user_gesture);
639 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 647 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
640 648
641 // Now receive a renderer-initiated non-user-initiated request. Nothing should 649 // Now receive a renderer-initiated non-user-initiated request. Nothing should
642 // change. 650 // change.
643 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); 651 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false);
644 NavigationRequest* request2 = node->navigation_request(); 652 NavigationRequest* request2 = GetNavigationRequestForFrameTreeNode(node);
645 ASSERT_TRUE(request2); 653 ASSERT_TRUE(request2);
646 EXPECT_EQ(request1, request2); 654 EXPECT_EQ(request1, request2);
647 EXPECT_EQ(kUrl1, request2->common_params().url); 655 EXPECT_EQ(kUrl1, request2->common_params().url);
648 EXPECT_FALSE(request2->browser_initiated()); 656 EXPECT_FALSE(request2->browser_initiated());
649 EXPECT_TRUE(request2->begin_params().has_user_gesture); 657 EXPECT_TRUE(request2->begin_params().has_user_gesture);
650 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 658 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
651 659
652 // Have the RenderFrameHost commit the navigation. 660 // Have the RenderFrameHost commit the navigation.
653 scoped_refptr<ResourceResponse> response(new ResourceResponse); 661 scoped_refptr<ResourceResponse> response(new ResourceResponse);
654 GetLoaderForNavigationRequest(request2) 662 GetLoaderForNavigationRequest(request2)
(...skipping 13 matching lines...) Expand all
668 const GURL kUrl1("http://www.chromium.org/"); 676 const GURL kUrl1("http://www.chromium.org/");
669 const GURL kUrl2("http://www.google.com/"); 677 const GURL kUrl2("http://www.google.com/");
670 678
671 // Initialization. 679 // Initialization.
672 contents()->NavigateAndCommit(kUrl0); 680 contents()->NavigateAndCommit(kUrl0);
673 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); 681 FrameTreeNode* node = main_test_rfh()->frame_tree_node();
674 682
675 // Start a browser-initiated navigation to the 1st URL. 683 // Start a browser-initiated navigation to the 1st URL.
676 process()->sink().ClearMessages(); 684 process()->sink().ClearMessages();
677 RequestNavigation(node, kUrl1); 685 RequestNavigation(node, kUrl1);
678 NavigationRequest* request1 = node->navigation_request(); 686 NavigationRequest* request1 = GetNavigationRequestForFrameTreeNode(node);
679 ASSERT_TRUE(request1); 687 ASSERT_TRUE(request1);
680 EXPECT_EQ(kUrl1, request1->common_params().url); 688 EXPECT_EQ(kUrl1, request1->common_params().url);
681 EXPECT_TRUE(request1->browser_initiated()); 689 EXPECT_TRUE(request1->browser_initiated());
682 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 690 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
683 691
684 // Now receive a renderer-initiated non-user-initiated request. Nothing should 692 // Now receive a renderer-initiated non-user-initiated request. Nothing should
685 // change. 693 // change.
686 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); 694 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false);
687 NavigationRequest* request2 = node->navigation_request(); 695 NavigationRequest* request2 = GetNavigationRequestForFrameTreeNode(node);
688 ASSERT_TRUE(request2); 696 ASSERT_TRUE(request2);
689 EXPECT_EQ(request1, request2); 697 EXPECT_EQ(request1, request2);
690 EXPECT_EQ(kUrl1, request2->common_params().url); 698 EXPECT_EQ(kUrl1, request2->common_params().url);
691 EXPECT_TRUE(request2->browser_initiated()); 699 EXPECT_TRUE(request2->browser_initiated());
692 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 700 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
693 701
694 // Now receive the beforeUnload ACK from the still ongoing navigation. 702 // Now receive the beforeUnload ACK from the still ongoing navigation.
695 main_test_rfh()->SendBeforeUnloadACK(true); 703 main_test_rfh()->SendBeforeUnloadACK(true);
696 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); 704 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node);
697 ASSERT_TRUE(speculative_rfh); 705 ASSERT_TRUE(speculative_rfh);
(...skipping 19 matching lines...) Expand all
717 const GURL kUrl2("http://www.google.com/"); 725 const GURL kUrl2("http://www.google.com/");
718 726
719 // Initialization. 727 // Initialization.
720 contents()->NavigateAndCommit(kUrl0); 728 contents()->NavigateAndCommit(kUrl0);
721 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); 729 FrameTreeNode* node = main_test_rfh()->frame_tree_node();
722 int32 site_instance_id_0 = main_test_rfh()->GetSiteInstance()->GetId(); 730 int32 site_instance_id_0 = main_test_rfh()->GetSiteInstance()->GetId();
723 731
724 // Start a renderer-initiated non-user-initiated navigation to the 1st URL. 732 // Start a renderer-initiated non-user-initiated navigation to the 1st URL.
725 process()->sink().ClearMessages(); 733 process()->sink().ClearMessages();
726 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl1, false); 734 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl1, false);
727 NavigationRequest* request1 = node->navigation_request(); 735 NavigationRequest* request1 = GetNavigationRequestForFrameTreeNode(node);
728 ASSERT_TRUE(request1); 736 ASSERT_TRUE(request1);
729 EXPECT_EQ(kUrl1, request1->common_params().url); 737 EXPECT_EQ(kUrl1, request1->common_params().url);
730 EXPECT_FALSE(request1->browser_initiated()); 738 EXPECT_FALSE(request1->browser_initiated());
731 EXPECT_FALSE(request1->begin_params().has_user_gesture); 739 EXPECT_FALSE(request1->begin_params().has_user_gesture);
732 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 740 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
733 base::WeakPtr<TestNavigationURLLoader> loader1 = 741 base::WeakPtr<TestNavigationURLLoader> loader1 =
734 GetLoaderForNavigationRequest(request1)->AsWeakPtr(); 742 GetLoaderForNavigationRequest(request1)->AsWeakPtr();
735 EXPECT_TRUE(loader1); 743 EXPECT_TRUE(loader1);
736 744
737 // Now receive a 2nd similar request that should replace the current one. 745 // Now receive a 2nd similar request that should replace the current one.
738 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); 746 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false);
739 NavigationRequest* request2 = node->navigation_request(); 747 NavigationRequest* request2 = GetNavigationRequestForFrameTreeNode(node);
740 EXPECT_EQ(kUrl2, request2->common_params().url); 748 EXPECT_EQ(kUrl2, request2->common_params().url);
741 EXPECT_FALSE(request2->browser_initiated()); 749 EXPECT_FALSE(request2->browser_initiated());
742 EXPECT_FALSE(request2->begin_params().has_user_gesture); 750 EXPECT_FALSE(request2->begin_params().has_user_gesture);
743 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 751 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
744 752
745 // Confirm that the first loader got destroyed. 753 // Confirm that the first loader got destroyed.
746 EXPECT_FALSE(loader1); 754 EXPECT_FALSE(loader1);
747 755
748 // Have the RenderFrameHost commit the navigation. 756 // Have the RenderFrameHost commit the navigation.
749 scoped_refptr<ResourceResponse> response(new ResourceResponse); 757 scoped_refptr<ResourceResponse> response(new ResourceResponse);
(...skipping 12 matching lines...) Expand all
762 // PlzNavigate: Test that a reload navigation is properly signaled to the 770 // PlzNavigate: Test that a reload navigation is properly signaled to the
763 // RenderFrame when the navigation can commit. A speculative RenderFrameHost 771 // RenderFrame when the navigation can commit. A speculative RenderFrameHost
764 // should not be created at any step. 772 // should not be created at any step.
765 TEST_F(NavigatorTestWithBrowserSideNavigation, Reload) { 773 TEST_F(NavigatorTestWithBrowserSideNavigation, Reload) {
766 const GURL kUrl("http://www.google.com/"); 774 const GURL kUrl("http://www.google.com/");
767 contents()->NavigateAndCommit(kUrl); 775 contents()->NavigateAndCommit(kUrl);
768 776
769 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); 777 FrameTreeNode* node = main_test_rfh()->frame_tree_node();
770 controller().Reload(false); 778 controller().Reload(false);
771 // A NavigationRequest should have been generated. 779 // A NavigationRequest should have been generated.
772 NavigationRequest* main_request = node->navigation_request(); 780 NavigationRequest* main_request = GetNavigationRequestForFrameTreeNode(node);
773 ASSERT_TRUE(main_request != NULL); 781 ASSERT_TRUE(main_request != NULL);
774 EXPECT_EQ(FrameMsg_Navigate_Type::RELOAD, 782 EXPECT_EQ(FrameMsg_Navigate_Type::RELOAD,
775 main_request->common_params().navigation_type); 783 main_request->common_params().navigation_type);
776 main_test_rfh()->PrepareForCommit(); 784 main_test_rfh()->PrepareForCommit();
777 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 785 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
778 786
779 main_test_rfh()->SendNavigate(0, kUrl); 787 main_test_rfh()->SendNavigate(0, kUrl);
780 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 788 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
781 789
782 // Now do a shift+reload. 790 // Now do a shift+reload.
783 controller().ReloadIgnoringCache(false); 791 controller().ReloadIgnoringCache(false);
784 // A NavigationRequest should have been generated. 792 // A NavigationRequest should have been generated.
785 main_request = node->navigation_request(); 793 main_request = GetNavigationRequestForFrameTreeNode(node);
786 ASSERT_TRUE(main_request != NULL); 794 ASSERT_TRUE(main_request != NULL);
787 EXPECT_EQ(FrameMsg_Navigate_Type::RELOAD_IGNORING_CACHE, 795 EXPECT_EQ(FrameMsg_Navigate_Type::RELOAD_IGNORING_CACHE,
788 main_request->common_params().navigation_type); 796 main_request->common_params().navigation_type);
789 main_test_rfh()->PrepareForCommit(); 797 main_test_rfh()->PrepareForCommit();
790 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 798 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
791 } 799 }
792 800
793 // PlzNavigate: Confirm that a speculative RenderFrameHost is used when 801 // PlzNavigate: Confirm that a speculative RenderFrameHost is used when
794 // navigating from one site to another. 802 // navigating from one site to another.
795 TEST_F(NavigatorTestWithBrowserSideNavigation, 803 TEST_F(NavigatorTestWithBrowserSideNavigation,
(...skipping 15 matching lines...) Expand all
811 ASSERT_TRUE(speculative_rfh); 819 ASSERT_TRUE(speculative_rfh);
812 EXPECT_NE(speculative_rfh, main_test_rfh()); 820 EXPECT_NE(speculative_rfh, main_test_rfh());
813 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl), 821 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl),
814 speculative_rfh->GetSiteInstance()->GetSiteURL()); 822 speculative_rfh->GetSiteInstance()->GetSiteURL());
815 EXPECT_FALSE(node->render_manager()->pending_frame_host()); 823 EXPECT_FALSE(node->render_manager()->pending_frame_host());
816 int32 site_instance_id = speculative_rfh->GetSiteInstance()->GetId(); 824 int32 site_instance_id = speculative_rfh->GetSiteInstance()->GetId();
817 825
818 // Ask Navigator to commit the navigation by simulating a call to 826 // Ask Navigator to commit the navigation by simulating a call to
819 // OnResponseStarted. 827 // OnResponseStarted.
820 scoped_refptr<ResourceResponse> response(new ResourceResponse); 828 scoped_refptr<ResourceResponse> response(new ResourceResponse);
821 GetLoaderForNavigationRequest(node->navigation_request()) 829 GetLoaderForNavigationRequest(GetNavigationRequestForFrameTreeNode(node))
822 ->CallOnResponseStarted(response, MakeEmptyStream()); 830 ->CallOnResponseStarted(response, MakeEmptyStream());
823 speculative_rfh = GetSpeculativeRenderFrameHost(node); 831 speculative_rfh = GetSpeculativeRenderFrameHost(node);
824 ASSERT_TRUE(speculative_rfh); 832 ASSERT_TRUE(speculative_rfh);
825 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); 833 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh));
826 EXPECT_EQ(site_instance_id, speculative_rfh->GetSiteInstance()->GetId()); 834 EXPECT_EQ(site_instance_id, speculative_rfh->GetSiteInstance()->GetId());
827 EXPECT_FALSE(node->render_manager()->pending_frame_host()); 835 EXPECT_FALSE(node->render_manager()->pending_frame_host());
828 836
829 // Invoke OnDidCommitProvisionalLoad. 837 // Invoke OnDidCommitProvisionalLoad.
830 speculative_rfh->SendNavigate(0, kUrl); 838 speculative_rfh->SendNavigate(0, kUrl);
831 EXPECT_EQ(site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); 839 EXPECT_EQ(site_instance_id, main_test_rfh()->GetSiteInstance()->GetId());
(...skipping 22 matching lines...) Expand all
854 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); 862 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node);
855 int32 site_instance_id = speculative_rfh->GetSiteInstance()->GetId(); 863 int32 site_instance_id = speculative_rfh->GetSiteInstance()->GetId();
856 EXPECT_NE(init_site_instance_id, site_instance_id); 864 EXPECT_NE(init_site_instance_id, site_instance_id);
857 EXPECT_EQ(init_site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); 865 EXPECT_EQ(init_site_instance_id, main_test_rfh()->GetSiteInstance()->GetId());
858 ASSERT_TRUE(speculative_rfh); 866 ASSERT_TRUE(speculative_rfh);
859 EXPECT_NE(speculative_rfh, main_test_rfh()); 867 EXPECT_NE(speculative_rfh, main_test_rfh());
860 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl), 868 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl),
861 speculative_rfh->GetSiteInstance()->GetSiteURL()); 869 speculative_rfh->GetSiteInstance()->GetSiteURL());
862 870
863 // It then redirects to yet another site. 871 // It then redirects to yet another site.
864 NavigationRequest* main_request = node->navigation_request(); 872 NavigationRequest* main_request = GetNavigationRequestForFrameTreeNode(node);
865 ASSERT_TRUE(main_request); 873 ASSERT_TRUE(main_request);
866 const GURL kUrlRedirect("https://www.google.com/"); 874 const GURL kUrlRedirect("https://www.google.com/");
867 GetLoaderForNavigationRequest(main_request) 875 GetLoaderForNavigationRequest(main_request)
868 ->SimulateServerRedirect(kUrlRedirect); 876 ->SimulateServerRedirect(kUrlRedirect);
869 EXPECT_EQ(init_site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); 877 EXPECT_EQ(init_site_instance_id, main_test_rfh()->GetSiteInstance()->GetId());
870 speculative_rfh = GetSpeculativeRenderFrameHost(node); 878 speculative_rfh = GetSpeculativeRenderFrameHost(node);
871 ASSERT_TRUE(speculative_rfh); 879 ASSERT_TRUE(speculative_rfh);
872 880
873 // For now, ensure that the speculative RenderFrameHost does not change after 881 // For now, ensure that the speculative RenderFrameHost does not change after
874 // the redirect. 882 // the redirect.
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
935 .ClearMessages(); 943 .ClearMessages();
936 RequestNavigation(node, kUrl1); 944 RequestNavigation(node, kUrl1);
937 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 945 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
938 946
939 main_test_rfh()->SendBeforeUnloadACK(true); 947 main_test_rfh()->SendBeforeUnloadACK(true);
940 EXPECT_EQ(rfh1, GetSpeculativeRenderFrameHost(node)); 948 EXPECT_EQ(rfh1, GetSpeculativeRenderFrameHost(node));
941 EXPECT_NE(RenderFrameHostImpl::STATE_DEFAULT, 949 EXPECT_NE(RenderFrameHostImpl::STATE_DEFAULT,
942 GetSpeculativeRenderFrameHost(node)->rfh_state()); 950 GetSpeculativeRenderFrameHost(node)->rfh_state());
943 951
944 scoped_refptr<ResourceResponse> response(new ResourceResponse); 952 scoped_refptr<ResourceResponse> response(new ResourceResponse);
945 GetLoaderForNavigationRequest(node->navigation_request()) 953 GetLoaderForNavigationRequest(GetNavigationRequestForFrameTreeNode(node))
946 ->CallOnResponseStarted(response, MakeEmptyStream()); 954 ->CallOnResponseStarted(response, MakeEmptyStream());
947 EXPECT_EQ(rfh1, GetSpeculativeRenderFrameHost(node)); 955 EXPECT_EQ(rfh1, GetSpeculativeRenderFrameHost(node));
948 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, 956 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT,
949 GetSpeculativeRenderFrameHost(node)->rfh_state()); 957 GetSpeculativeRenderFrameHost(node)->rfh_state());
950 EXPECT_TRUE(DidRenderFrameHostRequestCommit(rfh1)); 958 EXPECT_TRUE(DidRenderFrameHostRequestCommit(rfh1));
951 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); 959 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh()));
952 960
953 rfh1->SendNavigate(1, kUrl1); 961 rfh1->SendNavigate(1, kUrl1);
954 EXPECT_EQ(rfh1, main_test_rfh()); 962 EXPECT_EQ(rfh1, main_test_rfh());
955 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, rfh1->rfh_state()); 963 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, rfh1->rfh_state());
956 EXPECT_FALSE(rfhm->IsOnSwappedOutList(rfh1)); 964 EXPECT_FALSE(rfhm->IsOnSwappedOutList(rfh1));
957 } 965 }
958 966
959 // PlzNavigate: Verify that data urls are properly handled. 967 // PlzNavigate: Verify that data urls are properly handled.
960 TEST_F(NavigatorTestWithBrowserSideNavigation, DataUrls) { 968 TEST_F(NavigatorTestWithBrowserSideNavigation, DataUrls) {
961 const GURL kUrl1("http://wikipedia.org/"); 969 const GURL kUrl1("http://wikipedia.org/");
962 const GURL kUrl2("data:text/html,test"); 970 const GURL kUrl2("data:text/html,test");
963 971
964 // Navigate to an initial site. 972 // Navigate to an initial site.
965 contents()->NavigateAndCommit(kUrl1); 973 contents()->NavigateAndCommit(kUrl1);
966 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); 974 FrameTreeNode* node = main_test_rfh()->frame_tree_node();
967 975
968 // Navigate to a data url. 976 // Navigate to a data url.
969 RequestNavigation(node, kUrl2); 977 RequestNavigation(node, kUrl2);
970 NavigationRequest* navigation_request = node->navigation_request(); 978 NavigationRequest* navigation_request =
979 GetNavigationRequestForFrameTreeNode(node);
971 ASSERT_TRUE(navigation_request); 980 ASSERT_TRUE(navigation_request);
972 EXPECT_EQ(NavigationRequest::WAITING_FOR_RENDERER_RESPONSE, 981 EXPECT_EQ(NavigationRequest::WAITING_FOR_RENDERER_RESPONSE,
973 navigation_request->state()); 982 navigation_request->state());
974 main_test_rfh()->SendBeforeUnloadACK(true); 983 main_test_rfh()->SendBeforeUnloadACK(true);
975 984
976 // The request should not have been sent to the IO thread but committed 985 // The request should not have been sent to the IO thread but committed
977 // immediately. 986 // immediately.
978 EXPECT_EQ(NavigationRequest::RESPONSE_STARTED, 987 EXPECT_EQ(NavigationRequest::RESPONSE_STARTED,
979 navigation_request->state()); 988 navigation_request->state());
980 EXPECT_FALSE(navigation_request->loader_for_testing()); 989 EXPECT_FALSE(navigation_request->loader_for_testing());
981 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); 990 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node);
982 ASSERT_TRUE(speculative_rfh); 991 ASSERT_TRUE(speculative_rfh);
983 speculative_rfh->SendNavigate(0, kUrl2); 992 speculative_rfh->SendNavigate(0, kUrl2);
984 EXPECT_EQ(main_test_rfh(), speculative_rfh); 993 EXPECT_EQ(main_test_rfh(), speculative_rfh);
985 994
986 // Go back to the initial site. 995 // Go back to the initial site.
987 contents()->NavigateAndCommit(kUrl1); 996 contents()->NavigateAndCommit(kUrl1);
988 997
989 // Do a renderer-initiated navigation to a data url. The request should not be 998 // Do a renderer-initiated navigation to a data url. The request should not be
990 // sent to the IO thread, nor committed. 999 // sent to the IO thread, nor committed.
991 TestRenderFrameHost* main_rfh = main_test_rfh(); 1000 TestRenderFrameHost* main_rfh = main_test_rfh();
992 main_rfh->SendRendererInitiatedNavigationRequest(kUrl2, true); 1001 main_rfh->SendRendererInitiatedNavigationRequest(kUrl2, true);
993 navigation_request = node->navigation_request(); 1002 navigation_request = GetNavigationRequestForFrameTreeNode(node);
994 ASSERT_TRUE(navigation_request); 1003 ASSERT_TRUE(navigation_request);
995 EXPECT_EQ(NavigationRequest::RESPONSE_STARTED, 1004 EXPECT_EQ(NavigationRequest::RESPONSE_STARTED,
996 navigation_request->state()); 1005 navigation_request->state());
997 EXPECT_FALSE(navigation_request->loader_for_testing()); 1006 EXPECT_FALSE(navigation_request->loader_for_testing());
998 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); 1007 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node));
999 } 1008 }
1000 1009
1001 // Tests several cases for converting SiteInstanceDescriptors into 1010 // Tests several cases for converting SiteInstanceDescriptors into
1002 // SiteInstances: 1011 // SiteInstances:
1003 // 1) Pointer to the current SiteInstance. 1012 // 1) Pointer to the current SiteInstance.
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
1121 1130
1122 SiteInstance* converted_instance_2 = 1131 SiteInstance* converted_instance_2 =
1123 ConvertToSiteInstance(rfhm, descriptor, unrelated_instance.get()); 1132 ConvertToSiteInstance(rfhm, descriptor, unrelated_instance.get());
1124 // Should return |unrelated_instance| because its site matches and it is 1133 // Should return |unrelated_instance| because its site matches and it is
1125 // unrelated to the current SiteInstance. 1134 // unrelated to the current SiteInstance.
1126 EXPECT_EQ(unrelated_instance.get(), converted_instance_2); 1135 EXPECT_EQ(unrelated_instance.get(), converted_instance_2);
1127 } 1136 }
1128 } 1137 }
1129 1138
1130 } // namespace content 1139 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/frame_host/navigator_impl.cc ('k') | content/test/test_render_frame_host.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698