source: webkit/trunk/Source/WebCore/loader/HTTPHeaderField.h

Last change on this file was 278253, checked in by Darin Adler, 4 years ago

Remove WTF::Optional synonym for std::optional, using that class template directly instead
https://bugs.webkit.org/show_bug.cgi?id=226433

Reviewed by Chris Dumez.

Source/JavaScriptCore:

  • <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>.
  • inspector/scripts/codegen/generate_objc_protocol_types_implementation.py:

(ObjCProtocolTypesImplementationGenerator._generate_init_method_for_payload): Use auto instead
of Optional<>. Also use * instead of value() and nest the definition of the local inside an if
statement in the case where it's an optional.

  • inspector/scripts/tests/expected/*: Regenerated these results.

Source/WebCore:

  • <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>.

Source/WebCore/PAL:

  • <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>.

Source/WebDriver:

  • <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>.

Source/WebKit:

  • <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>.
  • Scripts/webkit/tests: Regenerated expected results, by running the command "python

Scripts/webkit/messages_unittest.py -r". (How am I supposed to know to do that?)

Source/WebKitLegacy/ios:

  • WebCoreSupport/WebChromeClientIOS.h: Let the do-webcore-rename script rename

Optional<> to std::optional<>.

Source/WebKitLegacy/mac:

  • <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>.

Source/WebKitLegacy/win:

  • <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>.

Source/WTF:

  • <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>.
  • wtf/Optional.h: Remove WTF::Optional.

Tools:

  • <many files>: Let the do-webcore-rename script rename Optional<> to std::optional<>.
File size: 2.6 KB
Line 
1/*
2 * Copyright (C) 2017 Apple Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */
25
26#pragma once
27
28#include <wtf/text/WTFString.h>
29
30namespace WebCore {
31
32class WEBCORE_EXPORT HTTPHeaderField {
33public:
34 static std::optional<HTTPHeaderField> create(String&& name, String&& value);
35
36 const String& name() const { return m_name; }
37 const String& value() const { return m_value; }
38
39 template<class Encoder> void encode(Encoder&) const;
40 template<class Decoder> static std::optional<HTTPHeaderField> decode(Decoder&);
41
42private:
43 HTTPHeaderField(String&& name, String&& value)
44 : m_name(WTFMove(name))
45 , m_value(WTFMove(value))
46 { }
47 String m_name;
48 String m_value;
49};
50
51template<class Encoder>
52void HTTPHeaderField::encode(Encoder& encoder) const
53{
54 encoder << m_name;
55 encoder << m_value;
56}
57
58template<class Decoder>
59std::optional<HTTPHeaderField> HTTPHeaderField::decode(Decoder& decoder)
60{
61 std::optional<String> name;
62 decoder >> name;
63 if (!name)
64 return std::nullopt;
65
66 std::optional<String> value;
67 decoder >> value;
68 if (!value)
69 return std::nullopt;
70
71 return {{ WTFMove(*name), WTFMove(*value) }};
72}
73
74namespace RFC7230 {
75bool isTokenCharacter(UChar);
76bool isWhitespace(UChar);
77bool isCommentText(UChar);
78bool isQuotedPairSecondOctet(UChar);
79bool isDelimiter(UChar);
80} // namespace RFC7230
81
82} // namespace WebCore
Note: See TracBrowser for help on using the repository browser.