| 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 "content/test/test_render_frame_host.h" | 5 #include "content/test/test_render_frame_host.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "content/browser/frame_host/frame_tree.h" | 8 #include "content/browser/frame_host/frame_tree.h" |
| 9 #include "content/browser/frame_host/navigation_request.h" | 9 #include "content/browser/frame_host/navigation_request.h" |
| 10 #include "content/browser/frame_host/navigator.h" | 10 #include "content/browser/frame_host/navigator.h" |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 49 render_view_host, | 49 render_view_host, |
| 50 delegate, | 50 delegate, |
| 51 rwh_delegate, | 51 rwh_delegate, |
| 52 frame_tree, | 52 frame_tree, |
| 53 frame_tree_node, | 53 frame_tree_node, |
| 54 routing_id, | 54 routing_id, |
| 55 flags), | 55 flags), |
| 56 child_creation_observer_(delegate ? delegate->GetAsWebContents() : NULL), | 56 child_creation_observer_(delegate ? delegate->GetAsWebContents() : NULL), |
| 57 contents_mime_type_("text/html"), | 57 contents_mime_type_("text/html"), |
| 58 simulate_history_list_was_cleared_(false) { | 58 simulate_history_list_was_cleared_(false) { |
| 59 if (frame_tree_node_->IsMainFrame()) | |
| 60 SetRenderFrameCreated(true); | |
| 61 } | 59 } |
| 62 | 60 |
| 63 TestRenderFrameHost::~TestRenderFrameHost() { | 61 TestRenderFrameHost::~TestRenderFrameHost() { |
| 64 SetRenderFrameCreated(false); | |
| 65 } | 62 } |
| 66 | 63 |
| 67 TestRenderViewHost* TestRenderFrameHost::GetRenderViewHost() { | 64 TestRenderViewHost* TestRenderFrameHost::GetRenderViewHost() { |
| 68 return static_cast<TestRenderViewHost*>( | 65 return static_cast<TestRenderViewHost*>( |
| 69 RenderFrameHostImpl::GetRenderViewHost()); | 66 RenderFrameHostImpl::GetRenderViewHost()); |
| 70 } | 67 } |
| 71 | 68 |
| 72 MockRenderProcessHost* TestRenderFrameHost::GetProcess() { | 69 MockRenderProcessHost* TestRenderFrameHost::GetProcess() { |
| 73 return static_cast<MockRenderProcessHost*>(RenderFrameHostImpl::GetProcess()); | 70 return static_cast<MockRenderProcessHost*>(RenderFrameHostImpl::GetProcess()); |
| 74 } | 71 } |
| 75 | 72 |
| 73 void TestRenderFrameHost::InitializeRenderFrameIfNeeded() { |
| 74 if (!render_view_host()->IsRenderViewLive()) { |
| 75 RenderViewHostTester::For(render_view_host())->CreateRenderView( |
| 76 base::string16(), MSG_ROUTING_NONE, MSG_ROUTING_NONE, -1, false); |
| 77 } |
| 78 } |
| 79 |
| 76 TestRenderFrameHost* TestRenderFrameHost::AppendChild( | 80 TestRenderFrameHost* TestRenderFrameHost::AppendChild( |
| 77 const std::string& frame_name) { | 81 const std::string& frame_name) { |
| 78 OnCreateChildFrame(GetProcess()->GetNextRoutingID(), | 82 OnCreateChildFrame(GetProcess()->GetNextRoutingID(), |
| 79 blink::WebTreeScopeType::Document, frame_name, | 83 blink::WebTreeScopeType::Document, frame_name, |
| 80 blink::WebSandboxFlags::None); | 84 blink::WebSandboxFlags::None); |
| 81 return static_cast<TestRenderFrameHost*>( | 85 return static_cast<TestRenderFrameHost*>( |
| 82 child_creation_observer_.last_created_frame()); | 86 child_creation_observer_.last_created_frame()); |
| 83 } | 87 } |
| 84 | 88 |
| 85 void TestRenderFrameHost::SetContentsMimeType(const std::string& mime_type) { | 89 void TestRenderFrameHost::SetContentsMimeType(const std::string& mime_type) { |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 125 void TestRenderFrameHost::SendNavigateWithTransitionAndResponseCode( | 129 void TestRenderFrameHost::SendNavigateWithTransitionAndResponseCode( |
| 126 int page_id, | 130 int page_id, |
| 127 int nav_entry_id, | 131 int nav_entry_id, |
| 128 bool did_create_new_entry, | 132 bool did_create_new_entry, |
| 129 const GURL& url, | 133 const GURL& url, |
| 130 ui::PageTransition transition, | 134 ui::PageTransition transition, |
| 131 int response_code) { | 135 int response_code) { |
| 132 // DidStartProvisionalLoad may delete the pending entry that holds |url|, | 136 // DidStartProvisionalLoad may delete the pending entry that holds |url|, |
| 133 // so we keep a copy of it to use in SendNavigateWithParameters. | 137 // so we keep a copy of it to use in SendNavigateWithParameters. |
| 134 GURL url_copy(url); | 138 GURL url_copy(url); |
| 135 | |
| 136 // Ensure that the RenderFrameCreated notification has been sent to observers | |
| 137 // before navigating the frame. | |
| 138 SetRenderFrameCreated(true); | |
| 139 | |
| 140 OnDidStartProvisionalLoadForFrame(url_copy); | 139 OnDidStartProvisionalLoadForFrame(url_copy); |
| 141 SendNavigateWithParameters(page_id, nav_entry_id, did_create_new_entry, | 140 SendNavigateWithParameters(page_id, nav_entry_id, did_create_new_entry, |
| 142 url_copy, transition, url_copy, response_code, 0, | 141 url_copy, transition, url_copy, response_code, 0, |
| 143 std::vector<GURL>()); | 142 std::vector<GURL>()); |
| 144 } | 143 } |
| 145 | 144 |
| 146 void TestRenderFrameHost::SendNavigateWithOriginalRequestURL( | 145 void TestRenderFrameHost::SendNavigateWithOriginalRequestURL( |
| 147 int page_id, | 146 int page_id, |
| 148 int nav_entry_id, | 147 int nav_entry_id, |
| 149 bool did_create_new_entry, | 148 bool did_create_new_entry, |
| 150 const GURL& url, | 149 const GURL& url, |
| 151 const GURL& original_request_url) { | 150 const GURL& original_request_url) { |
| 152 // Ensure that the RenderFrameCreated notification has been sent to observers | |
| 153 // before navigating the frame. | |
| 154 SetRenderFrameCreated(true); | |
| 155 | |
| 156 OnDidStartProvisionalLoadForFrame(url); | 151 OnDidStartProvisionalLoadForFrame(url); |
| 157 SendNavigateWithParameters(page_id, nav_entry_id, did_create_new_entry, url, | 152 SendNavigateWithParameters(page_id, nav_entry_id, did_create_new_entry, url, |
| 158 ui::PAGE_TRANSITION_LINK, original_request_url, | 153 ui::PAGE_TRANSITION_LINK, original_request_url, |
| 159 200, 0, std::vector<GURL>()); | 154 200, 0, std::vector<GURL>()); |
| 160 } | 155 } |
| 161 | 156 |
| 162 void TestRenderFrameHost::SendNavigateWithFile( | 157 void TestRenderFrameHost::SendNavigateWithFile( |
| 163 int page_id, | 158 int page_id, |
| 164 int nav_entry_id, | 159 int nav_entry_id, |
| 165 bool did_create_new_entry, | 160 bool did_create_new_entry, |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 239 bool did_create_new_entry, | 234 bool did_create_new_entry, |
| 240 const GURL& url) { | 235 const GURL& url) { |
| 241 SendRendererInitiatedNavigationRequest(url, false); | 236 SendRendererInitiatedNavigationRequest(url, false); |
| 242 PrepareForCommit(); | 237 PrepareForCommit(); |
| 243 SendNavigate(page_id, 0, did_create_new_entry, url); | 238 SendNavigate(page_id, 0, did_create_new_entry, url); |
| 244 } | 239 } |
| 245 | 240 |
| 246 void TestRenderFrameHost::SendRendererInitiatedNavigationRequest( | 241 void TestRenderFrameHost::SendRendererInitiatedNavigationRequest( |
| 247 const GURL& url, | 242 const GURL& url, |
| 248 bool has_user_gesture) { | 243 bool has_user_gesture) { |
| 244 // Since this is renderer-initiated navigation, the RenderFrame must be |
| 245 // initialized. Do it if it hasn't happened yet. |
| 246 InitializeRenderFrameIfNeeded(); |
| 247 |
| 249 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | 248 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 250 switches::kEnableBrowserSideNavigation)) { | 249 switches::kEnableBrowserSideNavigation)) { |
| 251 BeginNavigationParams begin_params("GET", std::string(), net::LOAD_NORMAL, | 250 BeginNavigationParams begin_params("GET", std::string(), net::LOAD_NORMAL, |
| 252 has_user_gesture); | 251 has_user_gesture); |
| 253 CommonNavigationParams common_params; | 252 CommonNavigationParams common_params; |
| 254 common_params.url = url; | 253 common_params.url = url; |
| 255 common_params.referrer = Referrer(GURL(), blink::WebReferrerPolicyDefault); | 254 common_params.referrer = Referrer(GURL(), blink::WebReferrerPolicyDefault); |
| 256 common_params.transition = ui::PAGE_TRANSITION_LINK; | 255 common_params.transition = ui::PAGE_TRANSITION_LINK; |
| 257 OnBeginNavigation(common_params, begin_params, | 256 OnBeginNavigation(common_params, begin_params, |
| 258 scoped_refptr<ResourceRequestBody>()); | 257 scoped_refptr<ResourceRequestBody>()); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 304 url_loader->SimulateServerRedirect(redirect_url); | 303 url_loader->SimulateServerRedirect(redirect_url); |
| 305 | 304 |
| 306 // Simulate the network stack commit. | 305 // Simulate the network stack commit. |
| 307 scoped_refptr<ResourceResponse> response(new ResourceResponse); | 306 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
| 308 // TODO(carlosk): ideally with PlzNavigate it should be possible someday to | 307 // TODO(carlosk): ideally with PlzNavigate it should be possible someday to |
| 309 // fully commit the navigation at this call to CallOnResponseStarted. | 308 // fully commit the navigation at this call to CallOnResponseStarted. |
| 310 url_loader->CallOnResponseStarted(response, MakeEmptyStream()); | 309 url_loader->CallOnResponseStarted(response, MakeEmptyStream()); |
| 311 } | 310 } |
| 312 | 311 |
| 313 } // namespace content | 312 } // namespace content |
| OLD | NEW |