| OLD | NEW |
| 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 "content/browser/frame_host/navigation_request.h" | 5 #include "content/browser/frame_host/navigation_request.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/memory/ptr_util.h" | 9 #include "base/memory/ptr_util.h" |
| 10 #include "content/browser/appcache/appcache_navigation_handle.h" | 10 #include "content/browser/appcache/appcache_navigation_handle.h" |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 120 return true; | 120 return true; |
| 121 } | 121 } |
| 122 | 122 |
| 123 // TODO(clamy): This should match what's happening in | 123 // TODO(clamy): This should match what's happening in |
| 124 // blink::FrameFetchContext::addAdditionalRequestHeaders. | 124 // blink::FrameFetchContext::addAdditionalRequestHeaders. |
| 125 void AddAdditionalRequestHeaders(net::HttpRequestHeaders* headers, | 125 void AddAdditionalRequestHeaders(net::HttpRequestHeaders* headers, |
| 126 const GURL& url, | 126 const GURL& url, |
| 127 FrameMsg_Navigate_Type::Value navigation_type, | 127 FrameMsg_Navigate_Type::Value navigation_type, |
| 128 BrowserContext* browser_context, | 128 BrowserContext* browser_context, |
| 129 const std::string& method, | 129 const std::string& method, |
| 130 const std::string user_agent_override, |
| 130 FrameTreeNode* frame_tree_node) { | 131 FrameTreeNode* frame_tree_node) { |
| 131 if (!url.SchemeIsHTTPOrHTTPS()) | 132 if (!url.SchemeIsHTTPOrHTTPS()) |
| 132 return; | 133 return; |
| 133 | 134 |
| 134 bool is_reload = | 135 bool is_reload = |
| 135 navigation_type == FrameMsg_Navigate_Type::RELOAD || | 136 navigation_type == FrameMsg_Navigate_Type::RELOAD || |
| 136 navigation_type == FrameMsg_Navigate_Type::RELOAD_BYPASSING_CACHE || | 137 navigation_type == FrameMsg_Navigate_Type::RELOAD_BYPASSING_CACHE || |
| 137 navigation_type == FrameMsg_Navigate_Type::RELOAD_ORIGINAL_REQUEST_URL; | 138 navigation_type == FrameMsg_Navigate_Type::RELOAD_ORIGINAL_REQUEST_URL; |
| 138 if (is_reload) | 139 if (is_reload) |
| 139 headers->RemoveHeader("Save-Data"); | 140 headers->RemoveHeader("Save-Data"); |
| 140 | 141 |
| 141 if (GetContentClient()->browser()->IsDataSaverEnabled(browser_context)) | 142 if (GetContentClient()->browser()->IsDataSaverEnabled(browser_context)) |
| 142 headers->SetHeaderIfMissing("Save-Data", "on"); | 143 headers->SetHeaderIfMissing("Save-Data", "on"); |
| 143 | 144 |
| 144 headers->SetHeaderIfMissing(net::HttpRequestHeaders::kUserAgent, | 145 headers->SetHeaderIfMissing(net::HttpRequestHeaders::kUserAgent, |
| 145 GetContentClient()->GetUserAgent()); | 146 user_agent_override.empty() |
| 147 ? GetContentClient()->GetUserAgent() |
| 148 : user_agent_override); |
| 146 | 149 |
| 147 // Check whether DevTools wants to override user agent for this request | 150 // Check whether DevTools wants to override user agent for this request |
| 148 // after setting the default user agent. | 151 // after setting the default user agent. |
| 149 std::string devtools_user_agent = | 152 std::string devtools_user_agent = |
| 150 RenderFrameDevToolsAgentHost::UserAgentOverride(frame_tree_node); | 153 RenderFrameDevToolsAgentHost::UserAgentOverride(frame_tree_node); |
| 151 if (!devtools_user_agent.empty()) { | 154 if (!devtools_user_agent.empty()) { |
| 152 headers->SetHeader(net::HttpRequestHeaders::kUserAgent, | 155 headers->SetHeader(net::HttpRequestHeaders::kUserAgent, |
| 153 devtools_user_agent); | 156 devtools_user_agent); |
| 154 } | 157 } |
| 155 | 158 |
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 319 source_site_instance_ = | 322 source_site_instance_ = |
| 320 frame_tree_node->current_frame_host()->GetSiteInstance(); | 323 frame_tree_node->current_frame_host()->GetSiteInstance(); |
| 321 } | 324 } |
| 322 | 325 |
| 323 // Update the load flags with cache information. | 326 // Update the load flags with cache information. |
| 324 UpdateLoadFlagsWithCacheFlags(&begin_params_.load_flags, | 327 UpdateLoadFlagsWithCacheFlags(&begin_params_.load_flags, |
| 325 common_params_.navigation_type, | 328 common_params_.navigation_type, |
| 326 common_params_.method == "POST"); | 329 common_params_.method == "POST"); |
| 327 | 330 |
| 328 // Add necessary headers that may not be present in the BeginNavigationParams. | 331 // Add necessary headers that may not be present in the BeginNavigationParams. |
| 332 const std::string user_agent_override = |
| 333 frame_tree_node_->navigator()->GetDelegate()->GetUserAgentOverride(); |
| 329 net::HttpRequestHeaders headers; | 334 net::HttpRequestHeaders headers; |
| 330 headers.AddHeadersFromString(begin_params_.headers); | 335 headers.AddHeadersFromString(begin_params_.headers); |
| 331 AddAdditionalRequestHeaders( | 336 AddAdditionalRequestHeaders( |
| 332 &headers, common_params_.url, common_params_.navigation_type, | 337 &headers, common_params_.url, common_params_.navigation_type, |
| 333 frame_tree_node_->navigator()->GetController()->GetBrowserContext(), | 338 frame_tree_node_->navigator()->GetController()->GetBrowserContext(), |
| 334 common_params.method, frame_tree_node); | 339 common_params.method, user_agent_override, frame_tree_node); |
| 335 begin_params_.headers = headers.ToString(); | 340 begin_params_.headers = headers.ToString(); |
| 336 } | 341 } |
| 337 | 342 |
| 338 NavigationRequest::~NavigationRequest() { | 343 NavigationRequest::~NavigationRequest() { |
| 339 } | 344 } |
| 340 | 345 |
| 341 void NavigationRequest::BeginNavigation() { | 346 void NavigationRequest::BeginNavigation() { |
| 342 DCHECK(!loader_); | 347 DCHECK(!loader_); |
| 343 DCHECK(state_ == NOT_STARTED || state_ == WAITING_FOR_RENDERER_RESPONSE); | 348 DCHECK(state_ == NOT_STARTED || state_ == WAITING_FOR_RENDERER_RESPONSE); |
| 344 state_ = STARTED; | 349 state_ = STARTED; |
| (...skipping 424 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 769 DCHECK_EQ(request_params_.has_user_gesture, begin_params_.has_user_gesture); | 774 DCHECK_EQ(request_params_.has_user_gesture, begin_params_.has_user_gesture); |
| 770 | 775 |
| 771 render_frame_host->CommitNavigation(response_.get(), std::move(body_), | 776 render_frame_host->CommitNavigation(response_.get(), std::move(body_), |
| 772 common_params_, request_params_, | 777 common_params_, request_params_, |
| 773 is_view_source_); | 778 is_view_source_); |
| 774 | 779 |
| 775 frame_tree_node_->ResetNavigationRequest(true); | 780 frame_tree_node_->ResetNavigationRequest(true); |
| 776 } | 781 } |
| 777 | 782 |
| 778 } // namespace content | 783 } // namespace content |
| OLD | NEW |