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

Unified Diff: third_party/WebKit/Source/core/fetch/FetchUtils.cpp

Issue 2584423002: Loading: move core/fetch to platform/loader/fetch (Closed)
Patch Set: another try Created 3 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/fetch/FetchUtils.cpp
diff --git a/third_party/WebKit/Source/core/fetch/FetchUtils.cpp b/third_party/WebKit/Source/core/fetch/FetchUtils.cpp
deleted file mode 100644
index 223e0c848d63b9b914fb7d8baa8bb71a5b958e3d..0000000000000000000000000000000000000000
--- a/third_party/WebKit/Source/core/fetch/FetchUtils.cpp
+++ /dev/null
@@ -1,207 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "core/fetch/FetchUtils.h"
-
-#include "platform/HTTPNames.h"
-#include "platform/network/HTTPHeaderMap.h"
-#include "platform/network/HTTPParsers.h"
-#include "wtf/HashSet.h"
-#include "wtf/Threading.h"
-#include "wtf/text/AtomicString.h"
-#include "wtf/text/WTFString.h"
-
-namespace blink {
-
-namespace {
-
-bool isHTTPWhitespace(UChar chr) {
- return chr == ' ' || chr == '\n' || chr == '\t' || chr == '\r';
-}
-
-class ForbiddenHeaderNames {
- WTF_MAKE_NONCOPYABLE(ForbiddenHeaderNames);
- USING_FAST_MALLOC(ForbiddenHeaderNames);
-
- public:
- bool has(const String& name) const {
- return m_fixedNames.contains(name) ||
- name.startsWith(m_proxyHeaderPrefix, TextCaseASCIIInsensitive) ||
- name.startsWith(m_secHeaderPrefix, TextCaseASCIIInsensitive);
- }
-
- static const ForbiddenHeaderNames& get();
-
- private:
- ForbiddenHeaderNames();
-
- String m_proxyHeaderPrefix;
- String m_secHeaderPrefix;
- HashSet<String, CaseFoldingHash> m_fixedNames;
-};
-
-ForbiddenHeaderNames::ForbiddenHeaderNames()
- : m_proxyHeaderPrefix("proxy-"), m_secHeaderPrefix("sec-") {
- m_fixedNames = {
- "accept-charset",
- "accept-encoding",
- "access-control-request-headers",
- "access-control-request-method",
- "connection",
- "content-length",
- "cookie",
- "cookie2",
- "date",
- "dnt",
- "expect",
- "host",
- "keep-alive",
- "origin",
- "referer",
- "te",
- "trailer",
- "transfer-encoding",
- "upgrade",
- "user-agent",
- "via",
- };
-}
-
-const ForbiddenHeaderNames& ForbiddenHeaderNames::get() {
- DEFINE_THREAD_SAFE_STATIC_LOCAL(const ForbiddenHeaderNames, instance,
- new ForbiddenHeaderNames);
- return instance;
-}
-
-} // namespace
-
-bool FetchUtils::isSimpleMethod(const String& method) {
- // http://fetch.spec.whatwg.org/#simple-method
- // "A simple method is a method that is `GET`, `HEAD`, or `POST`."
- return method == "GET" || method == "HEAD" || method == "POST";
-}
-
-bool FetchUtils::isSimpleHeader(const AtomicString& name,
- const AtomicString& value) {
- // http://fetch.spec.whatwg.org/#simple-header
- // "A simple header is a header whose name is either one of `Accept`,
- // `Accept-Language`, and `Content-Language`, or whose name is
- // `Content-Type` and value, once parsed, is one of
- // `application/x-www-form-urlencoded`, `multipart/form-data`, and
- // `text/plain`."
- // Treat 'Save-Data' as a simple header, since it is added by Chrome when
- // Data Saver feature is enabled.
- // Treat inspector header as a simple header, since it is added by blink when
- // inspector is open.
-
- if (equalIgnoringCase(name, "accept") ||
- equalIgnoringCase(name, "accept-language") ||
- equalIgnoringCase(name, "content-language") ||
- equalIgnoringCase(
- name, HTTPNames::X_DevTools_Emulate_Network_Conditions_Client_Id) ||
- equalIgnoringCase(name, "save-data"))
- return true;
-
- if (equalIgnoringCase(name, "content-type"))
- return isSimpleContentType(value);
-
- return false;
-}
-
-bool FetchUtils::isSimpleContentType(const AtomicString& mediaType) {
- AtomicString mimeType = extractMIMETypeFromMediaType(mediaType);
- return equalIgnoringCase(mimeType, "application/x-www-form-urlencoded") ||
- equalIgnoringCase(mimeType, "multipart/form-data") ||
- equalIgnoringCase(mimeType, "text/plain");
-}
-
-bool FetchUtils::isSimpleRequest(const String& method,
- const HTTPHeaderMap& headerMap) {
- if (!isSimpleMethod(method))
- return false;
-
- for (const auto& header : headerMap) {
- // Preflight is required for MIME types that can not be sent via form
- // submission.
- if (!isSimpleHeader(header.key, header.value))
- return false;
- }
-
- return true;
-}
-
-bool FetchUtils::isForbiddenMethod(const String& method) {
- // http://fetch.spec.whatwg.org/#forbidden-method
- // "A forbidden method is a method that is a byte case-insensitive match"
- // for one of `CONNECT`, `TRACE`, and `TRACK`."
- return equalIgnoringCase(method, "TRACE") ||
- equalIgnoringCase(method, "TRACK") ||
- equalIgnoringCase(method, "CONNECT");
-}
-
-bool FetchUtils::isForbiddenHeaderName(const String& name) {
- // http://fetch.spec.whatwg.org/#forbidden-header-name
- // "A forbidden header name is a header names that is one of:
- // `Accept-Charset`, `Accept-Encoding`, `Access-Control-Request-Headers`,
- // `Access-Control-Request-Method`, `Connection`,
- // `Content-Length, Cookie`, `Cookie2`, `Date`, `DNT`, `Expect`, `Host`,
- // `Keep-Alive`, `Origin`, `Referer`, `TE`, `Trailer`,
- // `Transfer-Encoding`, `Upgrade`, `User-Agent`, `Via`
- // or starts with `Proxy-` or `Sec-` (including when it is just `Proxy-` or
- // `Sec-`)."
-
- return ForbiddenHeaderNames::get().has(name);
-}
-
-bool FetchUtils::isForbiddenResponseHeaderName(const String& name) {
- // http://fetch.spec.whatwg.org/#forbidden-response-header-name
- // "A forbidden response header name is a header name that is one of:
- // `Set-Cookie`, `Set-Cookie2`"
-
- return equalIgnoringCase(name, "set-cookie") ||
- equalIgnoringCase(name, "set-cookie2");
-}
-
-bool FetchUtils::isSimpleOrForbiddenRequest(const String& method,
- const HTTPHeaderMap& headerMap) {
- if (!isSimpleMethod(method))
- return false;
-
- for (const auto& header : headerMap) {
- if (!isSimpleHeader(header.key, header.value) &&
- !isForbiddenHeaderName(header.key))
- return false;
- }
-
- return true;
-}
-
-AtomicString FetchUtils::normalizeMethod(const AtomicString& method) {
- // https://fetch.spec.whatwg.org/#concept-method-normalize
-
- // We place GET and POST first because they are more commonly used than
- // others.
- const char* const methods[] = {
- "GET", "POST", "DELETE", "HEAD", "OPTIONS", "PUT",
- };
-
- for (const auto& known : methods) {
- if (equalIgnoringCase(method, known)) {
- // Don't bother allocating a new string if it's already all
- // uppercase.
- return method == known ? method : known;
- }
- }
- return method;
-}
-
-String FetchUtils::normalizeHeaderValue(const String& value) {
- // https://fetch.spec.whatwg.org/#concept-header-value-normalize
- // Strip leading and trailing whitespace from header value.
- // HTTP whitespace bytes are 0x09, 0x0A, 0x0D, and 0x20.
-
- return value.stripWhiteSpace(isHTTPWhitespace);
-}
-
-} // namespace blink
« no previous file with comments | « third_party/WebKit/Source/core/fetch/FetchUtils.h ('k') | third_party/WebKit/Source/core/fetch/FetchUtilsTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698