summaryrefslogtreecommitdiff
path: root/chromium/net/quiche
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2020-07-16 11:45:35 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-07-17 08:59:23 +0000
commit552906b0f222c5d5dd11b9fd73829d510980461a (patch)
tree3a11e6ed0538a81dd83b20cf3a4783e297f26d91 /chromium/net/quiche
parent1b05827804eaf047779b597718c03e7d38344261 (diff)
downloadqtwebengine-chromium-552906b0f222c5d5dd11b9fd73829d510980461a.tar.gz
BASELINE: Update Chromium to 83.0.4103.122
Change-Id: Ie3a82f5bb0076eec2a7c6a6162326b4301ee291e Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'chromium/net/quiche')
-rw-r--r--chromium/net/quiche/common/platform/impl/quiche_arraysize_impl.h12
-rw-r--r--chromium/net/quiche/common/platform/impl/quiche_logging_impl.h82
-rw-r--r--chromium/net/quiche/common/platform/impl/quiche_map_util_impl.h19
-rw-r--r--chromium/net/quiche/common/platform/impl/quiche_optional_impl.h19
-rw-r--r--chromium/net/quiche/common/platform/impl/quiche_ptr_util_impl.h22
-rw-r--r--chromium/net/quiche/common/platform/impl/quiche_str_cat_impl.h31
-rw-r--r--chromium/net/quiche/common/platform/impl/quiche_string_piece_impl.h23
-rw-r--r--chromium/net/quiche/common/platform/impl/quiche_test_impl.h3
-rw-r--r--chromium/net/quiche/common/platform/impl/quiche_text_utils_impl.h148
9 files changed, 359 insertions, 0 deletions
diff --git a/chromium/net/quiche/common/platform/impl/quiche_arraysize_impl.h b/chromium/net/quiche/common/platform/impl/quiche_arraysize_impl.h
new file mode 100644
index 00000000000..fe15b81cf0a
--- /dev/null
+++ b/chromium/net/quiche/common/platform/impl/quiche_arraysize_impl.h
@@ -0,0 +1,12 @@
+// Copyright 2019 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.
+
+#ifndef NET_QUICHE_COMMON_PLATFORM_IMPL_QUICHE_ARRAYSIZE_IMPL_H_
+#define NET_QUICHE_COMMON_PLATFORM_IMPL_QUICHE_ARRAYSIZE_IMPL_H_
+
+#include "base/stl_util.h"
+
+#define QUICHE_ARRAYSIZE_IMPL(x) base::size(x)
+
+#endif // NET_QUICHE_COMMON_PLATFORM_IMPL_QUICHE_ARRAYSIZE_IMPL_H_
diff --git a/chromium/net/quiche/common/platform/impl/quiche_logging_impl.h b/chromium/net/quiche/common/platform/impl/quiche_logging_impl.h
index 5362e69f0dd..d3261b023f3 100644
--- a/chromium/net/quiche/common/platform/impl/quiche_logging_impl.h
+++ b/chromium/net/quiche/common/platform/impl/quiche_logging_impl.h
@@ -6,5 +6,87 @@
#define NET_QUICHE_COMMON_PLATFORM_IMPL_QUICHE_LOGGING_IMPL_H_
#include "base/logging.h"
+#include "build/build_config.h"
+#include "net/base/net_export.h"
+
+#define QUICHE_LOG_IMPL(severity) QUICHE_CHROMIUM_LOG_##severity
+#define QUICHE_VLOG_IMPL(verbose_level) VLOG(verbose_level)
+#define QUICHE_LOG_EVERY_N_SEC_IMPL(severity, seconds) QUICHE_LOG_IMPL(severity)
+#define QUICHE_LOG_FIRST_N_IMPL(severity, n) QUICHE_LOG_IMPL(severity)
+#define QUICHE_DLOG_IMPL(severity) QUICHE_CHROMIUM_DLOG_##severity
+#define QUICHE_DLOG_IF_IMPL(severity, condition) \
+ QUICHE_CHROMIUM_DLOG_IF_##severity(condition)
+#define QUICHE_LOG_IF_IMPL(severity, condition) \
+ QUICHE_CHROMIUM_LOG_IF_##severity(condition)
+
+#define QUICHE_CHROMIUM_LOG_INFO VLOG(1)
+#define QUICHE_CHROMIUM_LOG_WARNING DLOG(WARNING)
+#define QUICHE_CHROMIUM_LOG_ERROR DLOG(ERROR)
+#define QUICHE_CHROMIUM_LOG_FATAL LOG(FATAL)
+#define QUICHE_CHROMIUM_LOG_DFATAL LOG(DFATAL)
+
+#define QUICHE_CHROMIUM_DLOG_INFO DVLOG(1)
+#define QUICHE_CHROMIUM_DLOG_WARNING DLOG(WARNING)
+#define QUICHE_CHROMIUM_DLOG_ERROR DLOG(ERROR)
+#define QUICHE_CHROMIUM_DLOG_FATAL DLOG(FATAL)
+#define QUICHE_CHROMIUM_DLOG_DFATAL DLOG(DFATAL)
+
+#define QUICHE_CHROMIUM_LOG_IF_INFO(condition) VLOG_IF(1, condition)
+#define QUICHE_CHROMIUM_LOG_IF_WARNING(condition) DLOG_IF(WARNING, condition)
+#define QUICHE_CHROMIUM_LOG_IF_ERROR(condition) DLOG_IF(ERROR, condition)
+#define QUICHE_CHROMIUM_LOG_IF_FATAL(condition) LOG_IF(FATAL, condition)
+#define QUICHE_CHROMIUM_LOG_IF_DFATAL(condition) LOG_IF(DFATAL, condition)
+
+#define QUICHE_CHROMIUM_DLOG_IF_INFO(condition) DVLOG_IF(1, condition)
+#define QUICHE_CHROMIUM_DLOG_IF_WARNING(condition) DLOG_IF(WARNING, condition)
+#define QUICHE_CHROMIUM_DLOG_IF_ERROR(condition) DLOG_IF(ERROR, condition)
+#define QUICHE_CHROMIUM_DLOG_IF_FATAL(condition) DLOG_IF(FATAL, condition)
+#define QUICHE_CHROMIUM_DLOG_IF_DFATAL(condition) DLOG_IF(DFATAL, condition)
+
+#define QUICHE_DVLOG_IMPL(verbose_level) DVLOG(verbose_level)
+#define QUICHE_DVLOG_IF_IMPL(verbose_level, condition) \
+ DVLOG_IF(verbose_level, condition)
+
+#define QUICHE_LOG_INFO_IS_ON_IMPL() 0
+#ifdef NDEBUG
+#define QUICHE_LOG_WARNING_IS_ON_IMPL() 0
+#define QUICHE_LOG_ERROR_IS_ON_IMPL() 0
+#else
+#define QUICHE_LOG_WARNING_IS_ON_IMPL() 1
+#define QUICHE_LOG_ERROR_IS_ON_IMPL() 1
+#endif
+#define QUICHE_DLOG_INFO_IS_ON_IMPL() 0
+
+#if defined(OS_WIN)
+// wingdi.h defines ERROR to be 0. When we call QUICHE_DLOG(ERROR), it gets
+// substituted with 0, and it expands to QUICHE_CHROMIUM_DLOG_0. To allow us to
+// keep using this syntax, we define this macro to do the same thing as
+// QUICHE_CHROMIUM_DLOG_ERROR.
+#define QUICHE_CHROMIUM_LOG_0 QUICHE_CHROMIUM_LOG_ERROR
+#define QUICHE_CHROMIUM_DLOG_0 QUICHE_CHROMIUM_DLOG_ERROR
+#define QUICHE_CHROMIUM_LOG_IF_0 QUICHE_CHROMIUM_LOG_IF_ERROR
+#define QUICHE_CHROMIUM_DLOG_IF_0 QUICHE_CHROMIUM_DLOG_IF_ERROR
+#endif
+
+#define QUICHE_PREDICT_FALSE_IMPL(x) x
+#define QUICHE_PREDICT_TRUE_IMPL(x) x
+
+#define QUICHE_NOTREACHED_IMPL() NOTREACHED()
+
+#define QUICHE_PLOG_IMPL(severity) DVLOG(1)
+
+namespace quic {
+template <typename T>
+NET_EXPORT_PRIVATE inline std::ostream& operator<<(std::ostream& out,
+ const std::vector<T>& v) {
+ out << "[";
+ const char* sep = "";
+ for (size_t i = 0; i < v.size(); ++i) {
+ out << sep << v[i];
+ sep = ", ";
+ }
+ return out << "]";
+}
+} // namespace quic
#endif // NET_QUICHE_COMMON_PLATFORM_IMPL_QUICHE_LOGGING_IMPL_H_
diff --git a/chromium/net/quiche/common/platform/impl/quiche_map_util_impl.h b/chromium/net/quiche/common/platform/impl/quiche_map_util_impl.h
new file mode 100644
index 00000000000..29029d465df
--- /dev/null
+++ b/chromium/net/quiche/common/platform/impl/quiche_map_util_impl.h
@@ -0,0 +1,19 @@
+// Copyright (c) 2019 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.
+
+#ifndef NET_QUICHE_COMMON_PLATFORM_IMPL_QUICHE_MAP_UTIL_IMPL_H_
+#define NET_QUICHE_COMMON_PLATFORM_IMPL_QUICHE_MAP_UTIL_IMPL_H_
+
+#include "base/stl_util.h"
+
+namespace quiche {
+
+template <class Collection, class Key>
+bool QuicheContainsKeyImpl(const Collection& collection, const Key& key) {
+ return base::Contains(collection, key);
+}
+
+} // namespace quiche
+
+#endif // NET_QUICHE_COMMON_PLATFORM_IMPL_QUICHE_MAP_UTIL_IMPL_H_
diff --git a/chromium/net/quiche/common/platform/impl/quiche_optional_impl.h b/chromium/net/quiche/common/platform/impl/quiche_optional_impl.h
new file mode 100644
index 00000000000..bbdb0a80308
--- /dev/null
+++ b/chromium/net/quiche/common/platform/impl/quiche_optional_impl.h
@@ -0,0 +1,19 @@
+// Copyright 2018 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.
+
+#ifndef NET_QUICHE_COMMON_PLATFORM_IMPL_QUICHE_OPTIONAL_IMPL_H_
+#define NET_QUICHE_COMMON_PLATFORM_IMPL_QUICHE_OPTIONAL_IMPL_H_
+
+#include "base/optional.h"
+
+namespace quiche {
+
+template <typename T>
+using QuicheOptionalImpl = base::Optional<T>;
+
+#define QuicheNullOptImpl base::nullopt
+
+} // namespace quiche
+
+#endif // NET_QUICHE_COMMON_PLATFORM_IMPL_QUICHE_OPTIONAL_IMPL_H_
diff --git a/chromium/net/quiche/common/platform/impl/quiche_ptr_util_impl.h b/chromium/net/quiche/common/platform/impl/quiche_ptr_util_impl.h
new file mode 100644
index 00000000000..4a7b319885b
--- /dev/null
+++ b/chromium/net/quiche/common/platform/impl/quiche_ptr_util_impl.h
@@ -0,0 +1,22 @@
+// Copyright 2017 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.
+
+#ifndef NET_QUICHE_COMMON_PLATFORM_IMPL_QUICHE_PTR_UTIL_IMPL_H_
+#define NET_QUICHE_COMMON_PLATFORM_IMPL_QUICHE_PTR_UTIL_IMPL_H_
+
+#include <memory>
+#include <utility>
+
+#include "base/memory/ptr_util.h"
+
+namespace quiche {
+
+template <typename T>
+std::unique_ptr<T> QuicheWrapUniqueImpl(T* ptr) {
+ return base::WrapUnique<T>(ptr);
+}
+
+} // namespace quiche
+
+#endif // NET_QUICHE_COMMON_PLATFORM_IMPL_QUICHE_PTR_UTIL_IMPL_H_
diff --git a/chromium/net/quiche/common/platform/impl/quiche_str_cat_impl.h b/chromium/net/quiche/common/platform/impl/quiche_str_cat_impl.h
new file mode 100644
index 00000000000..64268de0ade
--- /dev/null
+++ b/chromium/net/quiche/common/platform/impl/quiche_str_cat_impl.h
@@ -0,0 +1,31 @@
+// Copyright (c) 2016 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.
+
+#ifndef NET_QUICHE_COMMON_PLATFORM_IMPL_QUICHE_STR_CAT_IMPL_H_
+#define NET_QUICHE_COMMON_PLATFORM_IMPL_QUICHE_STR_CAT_IMPL_H_
+
+#include <sstream>
+#include <string>
+#include <utility>
+
+#include "base/strings/stringprintf.h"
+
+namespace quiche {
+
+template <typename... Args>
+inline std::string QuicheStrCatImpl(const Args&... args) {
+ std::ostringstream oss;
+ int dummy[] = {1, (oss << args, 0)...};
+ static_cast<void>(dummy);
+ return oss.str();
+}
+
+template <typename... Args>
+inline std::string QuicheStringPrintfImpl(const Args&... args) {
+ return base::StringPrintf(std::forward<const Args&>(args)...);
+}
+
+} // namespace quiche
+
+#endif // NET_QUICHE_COMMON_PLATFORM_IMPL_QUICHE_STR_CAT_IMPL_H_
diff --git a/chromium/net/quiche/common/platform/impl/quiche_string_piece_impl.h b/chromium/net/quiche/common/platform/impl/quiche_string_piece_impl.h
new file mode 100644
index 00000000000..9488b87d489
--- /dev/null
+++ b/chromium/net/quiche/common/platform/impl/quiche_string_piece_impl.h
@@ -0,0 +1,23 @@
+// Copyright (c) 2017 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.
+
+#ifndef NET_QUICHE_COMMON_PLATFORM_IMPL_QUICHE_STRING_PIECE_IMPL_H_
+#define NET_QUICHE_COMMON_PLATFORM_IMPL_QUICHE_STRING_PIECE_IMPL_H_
+
+#include "base/strings/string_piece.h"
+
+namespace quiche {
+
+using QuicheStringPieceImpl = base::StringPiece;
+
+using QuicheStringPieceHashImpl = base::StringPieceHash;
+
+inline size_t QuicheHashStringPairImpl(QuicheStringPieceImpl a,
+ QuicheStringPieceImpl b) {
+ return base::StringPieceHash()(a) ^ base::StringPieceHash()(b);
+}
+
+} // namespace quiche
+
+#endif // NET_QUICHE_COMMON_PLATFORM_IMPL_QUICHE_STRING_PIECE_IMPL_H_
diff --git a/chromium/net/quiche/common/platform/impl/quiche_test_impl.h b/chromium/net/quiche/common/platform/impl/quiche_test_impl.h
index 705a250f3e4..a505bccfe8e 100644
--- a/chromium/net/quiche/common/platform/impl/quiche_test_impl.h
+++ b/chromium/net/quiche/common/platform/impl/quiche_test_impl.h
@@ -11,6 +11,9 @@
namespace quiche {
namespace test {
class QuicheTest : public ::testing::Test {};
+
+template <class T>
+class QuicheTestWithParamImpl : public ::testing::TestWithParam<T> {};
} // namespace test
} // namespace quiche
diff --git a/chromium/net/quiche/common/platform/impl/quiche_text_utils_impl.h b/chromium/net/quiche/common/platform/impl/quiche_text_utils_impl.h
new file mode 100644
index 00000000000..037d5827a08
--- /dev/null
+++ b/chromium/net/quiche/common/platform/impl/quiche_text_utils_impl.h
@@ -0,0 +1,148 @@
+// Copyright 2016 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.
+
+#ifndef NET_QUICHE_COMMON_PLATFORM_IMPL_QUICHE_TEXT_UTILS_IMPL_H_
+#define NET_QUICHE_COMMON_PLATFORM_IMPL_QUICHE_TEXT_UTILS_IMPL_H_
+
+#include <algorithm>
+#include <cstdint>
+#include <string>
+#include <vector>
+
+#include "base/base64.h"
+#include "base/strings/string_number_conversions.h"
+#include "base/strings/string_split.h"
+#include "base/strings/string_util.h"
+#include "base/strings/stringprintf.h"
+#include "net/base/hex_utils.h"
+#include "net/base/parse_number.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h"
+
+namespace quiche {
+
+// Chromium implementation of quiche::QuicheTextUtils.
+class QuicheTextUtilsImpl {
+ public:
+ // Returns true of |data| starts with |prefix|, case sensitively.
+ static bool StartsWith(QuicheStringPiece data, QuicheStringPiece prefix) {
+ return base::StartsWith(data, prefix, base::CompareCase::SENSITIVE);
+ }
+
+ // Returns true of |data| ends with |suffix|, case insensitively.
+ static bool EndsWithIgnoreCase(QuicheStringPiece data,
+ QuicheStringPiece suffix) {
+ return base::EndsWith(data, suffix, base::CompareCase::INSENSITIVE_ASCII);
+ }
+
+ // Returns a new std::string in which |data| has been converted to lower case.
+ static std::string ToLower(QuicheStringPiece data) {
+ return base::ToLowerASCII(data);
+ }
+
+ // Remove leading and trailing whitespace from |data|.
+ static void RemoveLeadingAndTrailingWhitespace(QuicheStringPiece* data) {
+ *data = base::TrimWhitespaceASCII(*data, base::TRIM_ALL);
+ }
+
+ // Returns true if |in| represents a valid uint64, and stores that value in
+ // |out|.
+ static bool StringToUint64(QuicheStringPiece in, uint64_t* out) {
+ return base::StringToUint64(in, out);
+ }
+
+ // Returns true if |in| represents a valid int, and stores that value in
+ // |out|.
+ static bool StringToInt(QuicheStringPiece in, int* out) {
+ return base::StringToInt(in, out);
+ }
+
+ // Returns true if |in| represents a valid uint32, and stores that value in
+ // |out|.
+ static bool StringToUint32(QuicheStringPiece in, uint32_t* out) {
+ return net::ParseUint32(in, out, nullptr);
+ }
+
+ // Returns true if |in| represents a valid size_t, and stores that value in
+ // |out|.
+ static bool StringToSizeT(QuicheStringPiece in, size_t* out) {
+ return base::StringToSizeT(in, out);
+ }
+
+ // Returns a new std::string representing |in|.
+ static std::string Uint64ToString(uint64_t in) {
+ return base::NumberToString(in);
+ }
+
+ // This converts |length| bytes of binary to a 2*|length|-character
+ // hexadecimal representation.
+ // Return value: 2*|length| characters of ASCII std::string.
+ static std::string HexEncode(QuicheStringPiece data) {
+ return base::ToLowerASCII(::base::HexEncode(data.data(), data.size()));
+ }
+
+ static std::string Hex(uint32_t v) {
+ std::stringstream ss;
+ ss << std::hex << v;
+ return ss.str();
+ }
+
+ // Converts |data| from a hexadecimal ASCII string to a binary string
+ // that is |data.length()/2| bytes long. On failure returns empty string.
+ static std::string HexDecode(QuicheStringPiece data) {
+ std::string result;
+ if (!base::HexStringToString(data, &result))
+ result.clear();
+ return result;
+ }
+
+ // Base64 encodes with no padding |data_len| bytes of |data| into |output|.
+ static void Base64Encode(const uint8_t* data,
+ size_t data_len,
+ std::string* output) {
+ base::Base64Encode(
+ std::string(reinterpret_cast<const char*>(data), data_len), output);
+ // Remove padding.
+ size_t len = output->size();
+ if (len >= 2) {
+ if ((*output)[len - 1] == '=') {
+ len--;
+ if ((*output)[len - 1] == '=') {
+ len--;
+ }
+ output->resize(len);
+ }
+ }
+ }
+
+ // Returns a std::string containing hex and ASCII representations of |binary|,
+ // side-by-side in the style of hexdump. Non-printable characters will be
+ // printed as '.' in the ASCII output.
+ // For example, given the input "Hello, QUIC!\01\02\03\04", returns:
+ // "0x0000: 4865 6c6c 6f2c 2051 5549 4321 0102 0304 Hello,.QUIC!...."
+ static std::string HexDump(QuicheStringPiece binary_input) {
+ return net::HexDump(binary_input);
+ }
+
+ // Returns true if |data| contains any uppercase characters.
+ static bool ContainsUpperCase(QuicheStringPiece data) {
+ return std::any_of(data.begin(), data.end(), base::IsAsciiUpper<char>);
+ }
+
+ // Returns true if |data| contains only decimal digits.
+ static bool IsAllDigits(QuicheStringPiece data) {
+ return std::all_of(data.begin(), data.end(),
+ base::IsAsciiDigit<QuicheStringPiece::value_type>);
+ }
+
+ // Splits |data| into a vector of pieces delimited by |delim|.
+ static std::vector<QuicheStringPiece> Split(QuicheStringPiece data,
+ char delim) {
+ return base::SplitStringPiece(data, QuicheStringPiece(&delim, 1),
+ base::KEEP_WHITESPACE, base::SPLIT_WANT_ALL);
+ }
+};
+
+} // namespace quiche
+
+#endif // NET_QUICHE_COMMON_PLATFORM_IMPL_QUICHE_TEXT_UTILS_IMPL_H_