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

Side by Side Diff: third_party/WebKit/Source/platform/network/LinkHeader.cpp

Issue 2739633003: platform/loader: move LinkHeader from network/ to loader/ (Closed)
Patch Set: gen gen --check passes 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
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "platform/network/LinkHeader.h"
6
7 #include "base/strings/string_util.h"
8 #include "components/link_header_util/link_header_util.h"
9 #include "wtf/text/ParsingUtilities.h"
10
11 namespace blink {
12
13 // Verify that the parameter is a link-extension which according to spec doesn't
14 // have to have a value.
15 static bool isExtensionParameter(LinkHeader::LinkParameterName name) {
16 return name >= LinkHeader::LinkParameterUnknown;
17 }
18
19 static LinkHeader::LinkParameterName parameterNameFromString(
20 base::StringPiece name) {
21 if (base::EqualsCaseInsensitiveASCII(name, "rel"))
22 return LinkHeader::LinkParameterRel;
23 if (base::EqualsCaseInsensitiveASCII(name, "anchor"))
24 return LinkHeader::LinkParameterAnchor;
25 if (base::EqualsCaseInsensitiveASCII(name, "crossorigin"))
26 return LinkHeader::LinkParameterCrossOrigin;
27 if (base::EqualsCaseInsensitiveASCII(name, "title"))
28 return LinkHeader::LinkParameterTitle;
29 if (base::EqualsCaseInsensitiveASCII(name, "media"))
30 return LinkHeader::LinkParameterMedia;
31 if (base::EqualsCaseInsensitiveASCII(name, "type"))
32 return LinkHeader::LinkParameterType;
33 if (base::EqualsCaseInsensitiveASCII(name, "rev"))
34 return LinkHeader::LinkParameterRev;
35 if (base::EqualsCaseInsensitiveASCII(name, "hreflang"))
36 return LinkHeader::LinkParameterHreflang;
37 if (base::EqualsCaseInsensitiveASCII(name, "as"))
38 return LinkHeader::LinkParameterAs;
39 return LinkHeader::LinkParameterUnknown;
40 }
41
42 void LinkHeader::setValue(LinkParameterName name, const String& value) {
43 if (name == LinkParameterRel && !m_rel)
44 m_rel = value.lower();
45 else if (name == LinkParameterAnchor)
46 m_isValid = false;
47 else if (name == LinkParameterCrossOrigin)
48 m_crossOrigin = value;
49 else if (name == LinkParameterAs)
50 m_as = value.lower();
51 else if (name == LinkParameterType)
52 m_mimeType = value.lower();
53 else if (name == LinkParameterMedia)
54 m_media = value.lower();
55 }
56
57 template <typename Iterator>
58 LinkHeader::LinkHeader(Iterator begin, Iterator end) : m_isValid(true) {
59 std::string url;
60 std::unordered_map<std::string, base::Optional<std::string>> params;
61 m_isValid = link_header_util::ParseLinkHeaderValue(begin, end, &url, &params);
62 if (!m_isValid)
63 return;
64
65 m_url = String(&url[0], url.length());
66 for (const auto& param : params) {
67 LinkParameterName name = parameterNameFromString(param.first);
68 if (!isExtensionParameter(name) && !param.second)
69 m_isValid = false;
70 std::string value = param.second.value_or("");
71 setValue(name, String(&value[0], value.length()));
72 }
73 }
74
75 LinkHeaderSet::LinkHeaderSet(const String& header) {
76 if (header.isNull())
77 return;
78
79 DCHECK(header.is8Bit()) << "Headers should always be 8 bit";
80 std::string headerString(reinterpret_cast<const char*>(header.characters8()),
81 header.length());
82 for (const auto& value : link_header_util::SplitLinkHeader(headerString))
83 m_headerSet.push_back(LinkHeader(value.first, value.second));
84 }
85
86 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/platform/network/LinkHeader.h ('k') | third_party/WebKit/Source/platform/network/LinkHeaderTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698