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

Side by Side Diff: Source/core/fetch/FetchUtils.cpp

Issue 1288263003: Normalize and update the header value checks to RFC 7230 for Fetch Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 3 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 "config.h" 5 #include "config.h"
6 #include "core/fetch/FetchUtils.h" 6 #include "core/fetch/FetchUtils.h"
7 7
8 #include "platform/network/HTTPHeaderMap.h" 8 #include "platform/network/HTTPHeaderMap.h"
9 #include "platform/network/HTTPParsers.h" 9 #include "platform/network/HTTPParsers.h"
10 #include "wtf/HashSet.h" 10 #include "wtf/HashSet.h"
11 #include "wtf/Threading.h" 11 #include "wtf/Threading.h"
12 #include "wtf/text/AtomicString.h" 12 #include "wtf/text/AtomicString.h"
13 #include "wtf/text/WTFString.h" 13 #include "wtf/text/WTFString.h"
14 14
15 namespace blink { 15 namespace blink {
16 16
17 static bool isHTTPWhitespace(UChar chr)
yhirano 2015/09/09 04:41:50 Please place this function in the unnamed namespac
shiva.jm 2015/09/10 10:10:26 Done.
18 {
19 return chr <= ' ' && (chr == ' ' || chr == '\n' || chr == '\t' || chr == '\r ');
hiroshige 2015/09/09 07:01:48 "chr <= ' ' && " is not needed.
shiva.jm 2015/09/10 10:10:26 Done.
20 }
21
17 namespace { 22 namespace {
18 23
19 class ForbiddenHeaderNames { 24 class ForbiddenHeaderNames {
20 WTF_MAKE_NONCOPYABLE(ForbiddenHeaderNames); WTF_MAKE_FAST_ALLOCATED(Forbidde nHeaderNames); 25 WTF_MAKE_NONCOPYABLE(ForbiddenHeaderNames); WTF_MAKE_FAST_ALLOCATED(Forbidde nHeaderNames);
21 public: 26 public:
22 bool has(const String& name) const 27 bool has(const String& name) const
23 { 28 {
24 return m_fixedNames.contains(name) 29 return m_fixedNames.contains(name)
25 || name.startsWith(m_proxyHeaderPrefix, TextCaseInsensitive) 30 || name.startsWith(m_proxyHeaderPrefix, TextCaseInsensitive)
26 || name.startsWith(m_secHeaderPrefix, TextCaseInsensitive); 31 || name.startsWith(m_secHeaderPrefix, TextCaseInsensitive);
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 for (const auto& known : methods) { 187 for (const auto& known : methods) {
183 if (equalIgnoringCase(method, known)) { 188 if (equalIgnoringCase(method, known)) {
184 // Don't bother allocating a new string if it's already all 189 // Don't bother allocating a new string if it's already all
185 // uppercase. 190 // uppercase.
186 return method == known ? method : known; 191 return method == known ? method : known;
187 } 192 }
188 } 193 }
189 return method; 194 return method;
190 } 195 }
191 196
197 String FetchUtils::normalizeHeaderValue(const String& value)
198 {
199 // https://fetch.spec.whatwg.org/#concept-header-value-normalize
200 // Strip leading and trailing whitespace from header value.
201 // HTTP whitespace bytes are 0x09, 0x0A, 0x0D, and 0x20.
202
203 return value.stripWhiteSpace(isHTTPWhitespace);
204 }
205
192 } // namespace blink 206 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698