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

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

Issue 316883002: Remove special case in HTTP header flattening in WebURLLoaderImpl (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix the compilation issue for real Created 6 years, 6 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 | « no previous file | no next file » | 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 // An implementation of WebURLLoader in terms of ResourceLoaderBridge. 5 // An implementation of WebURLLoader in terms of ResourceLoaderBridge.
6 6
7 #include "content/child/web_url_loader_impl.h" 7 #include "content/child/web_url_loader_impl.h"
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/files/file_path.h" 10 #include "base/files/file_path.h"
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 // Utilities ------------------------------------------------------------------ 66 // Utilities ------------------------------------------------------------------
67 67
68 namespace { 68 namespace {
69 69
70 const char kThrottledErrorDescription[] = 70 const char kThrottledErrorDescription[] =
71 "Request throttled. Visit http://dev.chromium.org/throttling for more " 71 "Request throttled. Visit http://dev.chromium.org/throttling for more "
72 "information."; 72 "information.";
73 73
74 class HeaderFlattener : public WebHTTPHeaderVisitor { 74 class HeaderFlattener : public WebHTTPHeaderVisitor {
75 public: 75 public:
76 explicit HeaderFlattener(int load_flags) 76 explicit HeaderFlattener() : has_accept_header_(false) {}
77 : load_flags_(load_flags),
78 has_accept_header_(false) {
79 }
80 77
81 virtual void visitHeader(const WebString& name, const WebString& value) { 78 virtual void visitHeader(const WebString& name, const WebString& value) {
82 // Headers are latin1. 79 // Headers are latin1.
83 const std::string& name_latin1 = name.latin1(); 80 const std::string& name_latin1 = name.latin1();
84 const std::string& value_latin1 = value.latin1(); 81 const std::string& value_latin1 = value.latin1();
85 82
86 // Skip over referrer headers found in the header map because we already 83 // Skip over referrer headers found in the header map because we already
87 // pulled it out as a separate parameter. 84 // pulled it out as a separate parameter.
88 if (LowerCaseEqualsASCII(name_latin1, "referer")) 85 if (LowerCaseEqualsASCII(name_latin1, "referer"))
89 return; 86 return;
90 87
91 // Skip over "Cache-Control: max-age=0" header if the corresponding
92 // load flag is already specified. FrameLoader sets both the flag and
93 // the extra header -- the extra header is redundant since our network
94 // implementation will add the necessary headers based on load flags.
95 // See http://code.google.com/p/chromium/issues/detail?id=3434.
96 if ((load_flags_ & net::LOAD_VALIDATE_CACHE) &&
97 LowerCaseEqualsASCII(name_latin1, "cache-control") &&
98 LowerCaseEqualsASCII(value_latin1, "max-age=0"))
99 return;
100
101 if (LowerCaseEqualsASCII(name_latin1, "accept")) 88 if (LowerCaseEqualsASCII(name_latin1, "accept"))
102 has_accept_header_ = true; 89 has_accept_header_ = true;
103 90
104 if (!buffer_.empty()) 91 if (!buffer_.empty())
105 buffer_.append("\r\n"); 92 buffer_.append("\r\n");
106 buffer_.append(name_latin1 + ": " + value_latin1); 93 buffer_.append(name_latin1 + ": " + value_latin1);
107 } 94 }
108 95
109 const std::string& GetBuffer() { 96 const std::string& GetBuffer() {
110 // In some cases, WebKit doesn't add an Accept header, but not having the 97 // In some cases, WebKit doesn't add an Accept header, but not having the
111 // header confuses some web servers. See bug 808613. 98 // header confuses some web servers. See bug 808613.
112 if (!has_accept_header_) { 99 if (!has_accept_header_) {
113 if (!buffer_.empty()) 100 if (!buffer_.empty())
114 buffer_.append("\r\n"); 101 buffer_.append("\r\n");
115 buffer_.append("Accept: */*"); 102 buffer_.append("Accept: */*");
116 has_accept_header_ = true; 103 has_accept_header_ = true;
117 } 104 }
118 return buffer_; 105 return buffer_;
119 } 106 }
120 107
121 private: 108 private:
122 int load_flags_;
123 std::string buffer_; 109 std::string buffer_;
124 bool has_accept_header_; 110 bool has_accept_header_;
125 }; 111 };
126 112
127 // Extracts the information from a data: url. 113 // Extracts the information from a data: url.
128 bool GetInfoFromDataURL(const GURL& url, 114 bool GetInfoFromDataURL(const GURL& url,
129 ResourceResponseInfo* info, 115 ResourceResponseInfo* info,
130 std::string* data, 116 std::string* data,
131 int* error_code) { 117 int* error_code) {
132 std::string mime_type; 118 std::string mime_type;
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
370 } 356 }
371 357
372 if (!request.allowStoredCredentials()) 358 if (!request.allowStoredCredentials())
373 load_flags |= net::LOAD_DO_NOT_SEND_AUTH_DATA; 359 load_flags |= net::LOAD_DO_NOT_SEND_AUTH_DATA;
374 360
375 if (request.targetType() == WebURLRequest::TargetIsXHR && 361 if (request.targetType() == WebURLRequest::TargetIsXHR &&
376 (url.has_username() || url.has_password())) { 362 (url.has_username() || url.has_password())) {
377 load_flags |= net::LOAD_DO_NOT_PROMPT_FOR_LOGIN; 363 load_flags |= net::LOAD_DO_NOT_PROMPT_FOR_LOGIN;
378 } 364 }
379 365
380 HeaderFlattener flattener(load_flags); 366 HeaderFlattener flattener;
381 request.visitHTTPHeaderFields(&flattener); 367 request.visitHTTPHeaderFields(&flattener);
382 368
383 // TODO(brettw) this should take parameter encoding into account when 369 // TODO(brettw) this should take parameter encoding into account when
384 // creating the GURLs. 370 // creating the GURLs.
385 371
386 RequestInfo request_info; 372 RequestInfo request_info;
387 request_info.method = method; 373 request_info.method = method;
388 request_info.url = url; 374 request_info.url = url;
389 request_info.first_party_for_cookies = request.firstPartyForCookies(); 375 request_info.first_party_for_cookies = request.firstPartyForCookies();
390 request_info.referrer = referrer_url; 376 request_info.referrer = referrer_url;
(...skipping 485 matching lines...) Expand 10 before | Expand all | Expand 10 after
876 void WebURLLoaderImpl::setDefersLoading(bool value) { 862 void WebURLLoaderImpl::setDefersLoading(bool value) {
877 context_->SetDefersLoading(value); 863 context_->SetDefersLoading(value);
878 } 864 }
879 865
880 void WebURLLoaderImpl::didChangePriority(WebURLRequest::Priority new_priority, 866 void WebURLLoaderImpl::didChangePriority(WebURLRequest::Priority new_priority,
881 int intra_priority_value) { 867 int intra_priority_value) {
882 context_->DidChangePriority(new_priority, intra_priority_value); 868 context_->DidChangePriority(new_priority, intra_priority_value);
883 } 869 }
884 870
885 } // namespace content 871 } // namespace content
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698