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

Side by Side Diff: content/child/web_url_request_util.cc

Issue 559613002: PlzNavigate: Implement RequestNavigation on the renderer side (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@commit-navigation-renderer
Patch Set: Fixed error in tests Created 6 years, 2 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/child/web_url_request_util.h ('k') | content/common/frame_messages.h » ('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 "content/child/web_url_request_util.h" 5 #include "content/child/web_url_request_util.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/strings/string_util.h"
9 #include "net/base/load_flags.h"
10 #include "third_party/WebKit/public/platform/WebHTTPHeaderVisitor.h"
11 #include "third_party/WebKit/public/platform/WebString.h"
8 #include "third_party/WebKit/public/platform/WebURLRequest.h" 12 #include "third_party/WebKit/public/platform/WebURLRequest.h"
9 13
10 using blink::WebURLRequest; 14 using blink::WebURLRequest;
15 using blink::WebString;
11 16
12 namespace content { 17 namespace content {
13 18
19 namespace {
20
21 class HeaderFlattener : public blink::WebHTTPHeaderVisitor {
22 public:
23 HeaderFlattener() : has_accept_header_(false) {}
24
25 virtual void visitHeader(const WebString& name, const WebString& value) {
26 // Headers are latin1.
27 const std::string& name_latin1 = name.latin1();
28 const std::string& value_latin1 = value.latin1();
29
30 // Skip over referrer headers found in the header map because we already
31 // pulled it out as a separate parameter.
32 if (LowerCaseEqualsASCII(name_latin1, "referer"))
33 return;
34
35 if (LowerCaseEqualsASCII(name_latin1, "accept"))
36 has_accept_header_ = true;
37
38 if (!buffer_.empty())
39 buffer_.append("\r\n");
40 buffer_.append(name_latin1 + ": " + value_latin1);
41 }
42
43 const std::string& GetBuffer() {
44 // In some cases, WebKit doesn't add an Accept header, but not having the
45 // header confuses some web servers. See bug 808613.
46 if (!has_accept_header_) {
47 if (!buffer_.empty())
48 buffer_.append("\r\n");
49 buffer_.append("Accept: */*");
50 has_accept_header_ = true;
51 }
52 return buffer_;
53 }
54
55 private:
56 std::string buffer_;
57 bool has_accept_header_;
58 };
59
60 } // namespace
61
14 ResourceType WebURLRequestToResourceType(const WebURLRequest& request) { 62 ResourceType WebURLRequestToResourceType(const WebURLRequest& request) {
15 WebURLRequest::RequestContext requestContext = request.requestContext(); 63 WebURLRequest::RequestContext requestContext = request.requestContext();
16 if (request.frameType() != WebURLRequest::FrameTypeNone) { 64 if (request.frameType() != WebURLRequest::FrameTypeNone) {
17 DCHECK(requestContext == WebURLRequest::RequestContextForm || 65 DCHECK(requestContext == WebURLRequest::RequestContextForm ||
18 requestContext == WebURLRequest::RequestContextFrame || 66 requestContext == WebURLRequest::RequestContextFrame ||
19 requestContext == WebURLRequest::RequestContextHyperlink || 67 requestContext == WebURLRequest::RequestContextHyperlink ||
20 requestContext == WebURLRequest::RequestContextIframe || 68 requestContext == WebURLRequest::RequestContextIframe ||
21 requestContext == WebURLRequest::RequestContextInternal || 69 requestContext == WebURLRequest::RequestContextInternal ||
22 requestContext == WebURLRequest::RequestContextLocation); 70 requestContext == WebURLRequest::RequestContextLocation);
23 if (request.frameType() == WebURLRequest::FrameTypeTopLevel || 71 if (request.frameType() == WebURLRequest::FrameTypeTopLevel ||
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 case WebURLRequest::RequestContextIframe: 161 case WebURLRequest::RequestContextIframe:
114 NOTREACHED(); 162 NOTREACHED();
115 return RESOURCE_TYPE_SUB_RESOURCE; 163 return RESOURCE_TYPE_SUB_RESOURCE;
116 164
117 default: 165 default:
118 NOTREACHED(); 166 NOTREACHED();
119 return RESOURCE_TYPE_SUB_RESOURCE; 167 return RESOURCE_TYPE_SUB_RESOURCE;
120 } 168 }
121 } 169 }
122 170
171 std::string GetWebURLRequestHeaders(const blink::WebURLRequest& request) {
172 HeaderFlattener flattener;
173 request.visitHTTPHeaderFields(&flattener);
174 return flattener.GetBuffer();
175 }
176
177 int GetLoadFlagsForWebURLRequest(const blink::WebURLRequest& request) {
178 int load_flags = net::LOAD_NORMAL;
179 GURL url = request.url();
180 switch (request.cachePolicy()) {
181 case WebURLRequest::ReloadIgnoringCacheData:
182 // Required by LayoutTests/http/tests/misc/refresh-headers.php
183 load_flags |= net::LOAD_VALIDATE_CACHE;
184 break;
185 case WebURLRequest::ReloadBypassingCache:
186 load_flags |= net::LOAD_BYPASS_CACHE;
187 break;
188 case WebURLRequest::ReturnCacheDataElseLoad:
189 load_flags |= net::LOAD_PREFERRING_CACHE;
190 break;
191 case WebURLRequest::ReturnCacheDataDontLoad:
192 load_flags |= net::LOAD_ONLY_FROM_CACHE;
193 break;
194 case WebURLRequest::UseProtocolCachePolicy:
195 break;
196 default:
197 NOTREACHED();
198 }
199
200 if (request.reportUploadProgress())
201 load_flags |= net::LOAD_ENABLE_UPLOAD_PROGRESS;
202 if (request.reportRawHeaders())
203 load_flags |= net::LOAD_REPORT_RAW_HEADERS;
204
205 if (!request.allowStoredCredentials()) {
206 load_flags |= net::LOAD_DO_NOT_SAVE_COOKIES;
207 load_flags |= net::LOAD_DO_NOT_SEND_COOKIES;
208 }
209
210 if (!request.allowStoredCredentials())
211 load_flags |= net::LOAD_DO_NOT_SEND_AUTH_DATA;
212
213 if (request.requestContext() == WebURLRequest::RequestContextXMLHttpRequest &&
214 (url.has_username() || url.has_password())) {
215 load_flags |= net::LOAD_DO_NOT_PROMPT_FOR_LOGIN;
216 }
217 return load_flags;
218 }
219
123 } // namespace content 220 } // namespace content
OLDNEW
« no previous file with comments | « content/child/web_url_request_util.h ('k') | content/common/frame_messages.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698