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

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

Issue 2746043003: Fix user agent overridding with PlzNavigate. (Closed)
Patch Set: review comments Created 3 years, 9 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
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 "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
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
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
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
OLDNEW
« no previous file with comments | « content/browser/frame_host/interstitial_page_impl.cc ('k') | content/browser/frame_host/navigator_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698