Replace QuicheTextUtils methods with absl::SimpleAtoi.
PiperOrigin-RevId: 339269770
Change-Id: I5a032260e18aa9f2ea23ffd4ff6bd6d8d28d77fc
diff --git a/common/platform/api/quiche_text_utils.h b/common/platform/api/quiche_text_utils.h
index 4de3647..5bc5f50 100644
--- a/common/platform/api/quiche_text_utils.h
+++ b/common/platform/api/quiche_text_utils.h
@@ -27,30 +27,6 @@
quiche::QuicheTextUtilsImpl::RemoveLeadingAndTrailingWhitespace(data);
}
- // Returns true if |in| represents a valid uint64, and stores that value in
- // |out|.
- static bool StringToUint64(absl::string_view in, uint64_t* out) {
- return quiche::QuicheTextUtilsImpl::StringToUint64(in, out);
- }
-
- // Returns true if |in| represents a valid int, and stores that value in
- // |out|.
- static bool StringToInt(absl::string_view in, int* out) {
- return quiche::QuicheTextUtilsImpl::StringToInt(in, out);
- }
-
- // Returns true if |in| represents a valid uint32, and stores that value in
- // |out|.
- static bool StringToUint32(absl::string_view in, uint32_t* out) {
- return quiche::QuicheTextUtilsImpl::StringToUint32(in, out);
- }
-
- // Returns true if |in| represents a valid size_t, and stores that value in
- // |out|.
- static bool StringToSizeT(absl::string_view in, size_t* out) {
- return quiche::QuicheTextUtilsImpl::StringToSizeT(in, out);
- }
-
// Returns a new string representing |in|.
static std::string Uint64ToString(uint64_t in) {
return quiche::QuicheTextUtilsImpl::Uint64ToString(in);
diff --git a/common/platform/api/quiche_text_utils_test.cc b/common/platform/api/quiche_text_utils_test.cc
index bbea2cd..012d33d 100644
--- a/common/platform/api/quiche_text_utils_test.cc
+++ b/common/platform/api/quiche_text_utils_test.cc
@@ -32,89 +32,6 @@
}
}
-TEST_F(QuicheTextUtilsTest, StringToNumbers) {
- const std::string kMaxInt32Plus1 = "2147483648";
- const std::string kMinInt32Minus1 = "-2147483649";
- const std::string kMaxUint32Plus1 = "4294967296";
-
- {
- // StringToUint64
- uint64_t uint64_val = 0;
- EXPECT_TRUE(quiche::QuicheTextUtils::StringToUint64("123", &uint64_val));
- EXPECT_EQ(123u, uint64_val);
- EXPECT_TRUE(quiche::QuicheTextUtils::StringToUint64("1234", &uint64_val));
- EXPECT_EQ(1234u, uint64_val);
- EXPECT_FALSE(quiche::QuicheTextUtils::StringToUint64("", &uint64_val));
- EXPECT_FALSE(quiche::QuicheTextUtils::StringToUint64("-123", &uint64_val));
- EXPECT_FALSE(
- quiche::QuicheTextUtils::StringToUint64("-123.0", &uint64_val));
- EXPECT_TRUE(
- quiche::QuicheTextUtils::StringToUint64(kMaxUint32Plus1, &uint64_val));
- EXPECT_EQ(4294967296u, uint64_val);
- }
-
- {
- // StringToint
- int int_val = 0;
- EXPECT_TRUE(quiche::QuicheTextUtils::StringToInt("123", &int_val));
- EXPECT_EQ(123, int_val);
- EXPECT_TRUE(quiche::QuicheTextUtils::StringToInt("1234", &int_val));
- EXPECT_EQ(1234, int_val);
- EXPECT_FALSE(quiche::QuicheTextUtils::StringToInt("", &int_val));
- EXPECT_TRUE(quiche::QuicheTextUtils::StringToInt("-123", &int_val));
- EXPECT_EQ(-123, int_val);
- EXPECT_FALSE(quiche::QuicheTextUtils::StringToInt("-123.0", &int_val));
- if (sizeof(int) > 4) {
- EXPECT_TRUE(
- quiche::QuicheTextUtils::StringToInt(kMinInt32Minus1, &int_val));
- EXPECT_EQ(-2147483649ll, int_val);
- EXPECT_TRUE(
- quiche::QuicheTextUtils::StringToInt(kMaxInt32Plus1, &int_val));
- EXPECT_EQ(2147483648ll, int_val);
- } else {
- EXPECT_FALSE(
- quiche::QuicheTextUtils::StringToInt(kMinInt32Minus1, &int_val));
- EXPECT_FALSE(
- quiche::QuicheTextUtils::StringToInt(kMaxInt32Plus1, &int_val));
- }
- }
-
- {
- // StringToUint32
- uint32_t uint32_val = 0;
- EXPECT_TRUE(quiche::QuicheTextUtils::StringToUint32("123", &uint32_val));
- EXPECT_EQ(123u, uint32_val);
- EXPECT_TRUE(quiche::QuicheTextUtils::StringToUint32("1234", &uint32_val));
- EXPECT_EQ(1234u, uint32_val);
- EXPECT_FALSE(quiche::QuicheTextUtils::StringToUint32("", &uint32_val));
- EXPECT_FALSE(quiche::QuicheTextUtils::StringToUint32("-123", &uint32_val));
- EXPECT_FALSE(
- quiche::QuicheTextUtils::StringToUint32("-123.0", &uint32_val));
- EXPECT_FALSE(
- quiche::QuicheTextUtils::StringToUint32(kMaxUint32Plus1, &uint32_val));
- }
-
- {
- // StringToSizeT
- size_t size_t_val = 0;
- EXPECT_TRUE(quiche::QuicheTextUtils::StringToSizeT("123", &size_t_val));
- EXPECT_EQ(123u, size_t_val);
- EXPECT_TRUE(quiche::QuicheTextUtils::StringToSizeT("1234", &size_t_val));
- EXPECT_EQ(1234u, size_t_val);
- EXPECT_FALSE(quiche::QuicheTextUtils::StringToSizeT("", &size_t_val));
- EXPECT_FALSE(quiche::QuicheTextUtils::StringToSizeT("-123", &size_t_val));
- EXPECT_FALSE(quiche::QuicheTextUtils::StringToSizeT("-123.0", &size_t_val));
- if (sizeof(size_t) > 4) {
- EXPECT_TRUE(
- quiche::QuicheTextUtils::StringToSizeT(kMaxUint32Plus1, &size_t_val));
- EXPECT_EQ(4294967296ull, size_t_val);
- } else {
- EXPECT_FALSE(
- quiche::QuicheTextUtils::StringToSizeT(kMaxUint32Plus1, &size_t_val));
- }
- }
-}
-
TEST_F(QuicheTextUtilsTest, Uint64ToString) {
EXPECT_EQ("123", quiche::QuicheTextUtils::Uint64ToString(123));
EXPECT_EQ("1234", quiche::QuicheTextUtils::Uint64ToString(1234));
diff --git a/common/quiche_data_reader.cc b/common/quiche_data_reader.cc
index 395d5c0..bbb4b87 100644
--- a/common/quiche_data_reader.cc
+++ b/common/quiche_data_reader.cc
@@ -6,6 +6,7 @@
#include <cstring>
+#include "absl/strings/numbers.h"
#include "absl/strings/string_view.h"
#include "net/third_party/quiche/src/common/platform/api/quiche_logging.h"
#include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h"
@@ -125,7 +126,7 @@
return false;
}
- return QuicheTextUtils::StringToUint64(digits, result);
+ return absl::SimpleAtoi(digits, result);
}
absl::string_view QuicheDataReader::ReadRemainingPayload() {
diff --git a/quic/core/http/quic_receive_control_stream.cc b/quic/core/http/quic_receive_control_stream.cc
index 493ad0d..744e2ec 100644
--- a/quic/core/http/quic_receive_control_stream.cc
+++ b/quic/core/http/quic_receive_control_stream.cc
@@ -6,6 +6,7 @@
#include <utility>
+#include "absl/strings/numbers.h"
#include "absl/strings/string_view.h"
#include "net/third_party/quiche/src/quic/core/http/http_constants.h"
#include "net/third_party/quiche/src/quic/core/http/http_decoder.h"
@@ -229,8 +230,7 @@
absl::string_view value = key_and_value[1];
int urgency;
- if (!quiche::QuicheTextUtils::StringToInt(value, &urgency) || urgency < 0 ||
- urgency > 7) {
+ if (!absl::SimpleAtoi(value, &urgency) || urgency < 0 || urgency > 7) {
stream_delegate()->OnStreamError(
QUIC_INVALID_STREAM_ID,
"Invalid value for PRIORITY_UPDATE urgency parameter.");
diff --git a/quic/core/http/quic_spdy_session.cc b/quic/core/http/quic_spdy_session.cc
index 8658f8e..eb7228b 100644
--- a/quic/core/http/quic_spdy_session.cc
+++ b/quic/core/http/quic_spdy_session.cc
@@ -11,6 +11,7 @@
#include <utility>
#include "absl/base/attributes.h"
+#include "absl/strings/numbers.h"
#include "absl/strings/string_view.h"
#include "net/third_party/quiche/src/quic/core/http/http_constants.h"
#include "net/third_party/quiche/src/quic/core/http/quic_headers_stream.h"
@@ -524,8 +525,7 @@
const std::string& header_key = header.first;
const std::string& header_value = header.second;
if (header_key == kFinalOffsetHeaderKey) {
- if (!quiche::QuicheTextUtils::StringToSizeT(header_value,
- &final_byte_offset)) {
+ if (!absl::SimpleAtoi(header_value, &final_byte_offset)) {
connection()->CloseConnection(
QUIC_INVALID_HEADERS_STREAM_DATA,
"Trailers are malformed (no final offset)",
diff --git a/quic/core/http/quic_spdy_stream.cc b/quic/core/http/quic_spdy_stream.cc
index f069bad..c58bb03 100644
--- a/quic/core/http/quic_spdy_stream.cc
+++ b/quic/core/http/quic_spdy_stream.cc
@@ -9,6 +9,7 @@
#include <utility>
#include "absl/base/macros.h"
+#include "absl/strings/numbers.h"
#include "absl/strings/string_view.h"
#include "net/third_party/quiche/src/quic/core/http/http_constants.h"
#include "net/third_party/quiche/src/quic/core/http/http_decoder.h"
@@ -844,7 +845,7 @@
if (!isdigit(status[1]) || !isdigit(status[2])) {
return false;
}
- return quiche::QuicheTextUtils::StringToInt(status, status_code);
+ return absl::SimpleAtoi(status, status_code);
}
bool QuicSpdyStream::FinishedReadingTrailers() const {
diff --git a/quic/core/http/spdy_utils.cc b/quic/core/http/spdy_utils.cc
index 87025e4..0eb05a8 100644
--- a/quic/core/http/spdy_utils.cc
+++ b/quic/core/http/spdy_utils.cc
@@ -8,6 +8,7 @@
#include <string>
#include <vector>
+#include "absl/strings/numbers.h"
#include "absl/strings/string_view.h"
#include "net/third_party/quiche/src/quic/platform/api/quic_flag_utils.h"
#include "net/third_party/quiche/src/quic/platform/api/quic_flags.h"
@@ -34,7 +35,7 @@
quiche::QuicheTextUtils::Split(content_length_header, '\0');
for (const absl::string_view& value : values) {
uint64_t new_value;
- if (!quiche::QuicheTextUtils::StringToUint64(value, &new_value) ||
+ if (!absl::SimpleAtoi(value, &new_value) ||
!quiche::QuicheTextUtils::IsAllDigits(value)) {
QUIC_DLOG(ERROR)
<< "Content length was either unparseable or negative.";
@@ -96,7 +97,7 @@
// response body bytes expected.
if (expect_final_byte_offset && !found_final_byte_offset &&
name == kFinalOffsetHeaderKey &&
- quiche::QuicheTextUtils::StringToSizeT(p.second, final_byte_offset)) {
+ absl::SimpleAtoi(p.second, final_byte_offset)) {
found_final_byte_offset = true;
continue;
}
diff --git a/quic/core/quic_framer.cc b/quic/core/quic_framer.cc
index 155e76d..66765b0 100644
--- a/quic/core/quic_framer.cc
+++ b/quic/core/quic_framer.cc
@@ -14,6 +14,7 @@
#include "absl/base/attributes.h"
#include "absl/base/macros.h"
#include "absl/base/optimization.h"
+#include "absl/strings/numbers.h"
#include "absl/strings/string_view.h"
#include "net/third_party/quiche/src/quic/core/crypto/crypto_framer.h"
#include "net/third_party/quiche/src/quic/core/crypto/crypto_handshake.h"
@@ -6846,7 +6847,7 @@
quiche::QuicheTextUtils::Split(frame->error_details, ':');
uint64_t extracted_error_code;
if (ed.size() < 2 || !quiche::QuicheTextUtils::IsAllDigits(ed[0]) ||
- !quiche::QuicheTextUtils::StringToUint64(ed[0], &extracted_error_code)) {
+ !absl::SimpleAtoi(ed[0], &extracted_error_code)) {
if (frame->close_type == IETF_QUIC_TRANSPORT_CONNECTION_CLOSE &&
frame->wire_error_code == NO_IETF_QUIC_ERROR) {
frame->quic_error_code = QUIC_NO_ERROR;
diff --git a/quic/core/quic_versions.cc b/quic/core/quic_versions.cc
index 98bef7f..4c5571f 100644
--- a/quic/core/quic_versions.cc
+++ b/quic/core/quic_versions.cc
@@ -7,6 +7,7 @@
#include <string>
#include "absl/base/macros.h"
+#include "absl/strings/numbers.h"
#include "net/third_party/quiche/src/quic/core/crypto/quic_random.h"
#include "net/third_party/quiche/src/quic/core/quic_tag.h"
#include "net/third_party/quiche/src/quic/core/quic_types.h"
@@ -333,8 +334,7 @@
return UnsupportedQuicVersion();
}
int quic_version_number = 0;
- if (quiche::QuicheTextUtils::StringToInt(version_string,
- &quic_version_number) &&
+ if (absl::SimpleAtoi(version_string, &quic_version_number) &&
quic_version_number > 0) {
QuicTransportVersion transport_version =
static_cast<QuicTransportVersion>(quic_version_number);
diff --git a/quic/test_tools/qpack/qpack_offline_decoder.cc b/quic/test_tools/qpack/qpack_offline_decoder.cc
index 211417f..38cd8fb 100644
--- a/quic/test_tools/qpack/qpack_offline_decoder.cc
+++ b/quic/test_tools/qpack/qpack_offline_decoder.cc
@@ -31,6 +31,7 @@
#include <utility>
#include "absl/strings/match.h"
+#include "absl/strings/numbers.h"
#include "absl/strings/string_view.h"
#include "net/third_party/quiche/src/quic/core/quic_types.h"
#include "net/third_party/quiche/src/quic/platform/api/quic_file_utils.h"
@@ -102,8 +103,7 @@
// Maximum allowed number of blocked streams.
uint64_t max_blocked_streams = 0;
- if (!quiche::QuicheTextUtils::StringToUint64(*piece_it,
- &max_blocked_streams)) {
+ if (!absl::SimpleAtoi(*piece_it, &max_blocked_streams)) {
QUIC_LOG(ERROR) << "Error parsing part of input filename \"" << *piece_it
<< "\" as an integer.";
return false;
@@ -113,8 +113,7 @@
// Maximum Dynamic Table Capacity in bytes
uint64_t maximum_dynamic_table_capacity = 0;
- if (!quiche::QuicheTextUtils::StringToUint64(
- *piece_it, &maximum_dynamic_table_capacity)) {
+ if (!absl::SimpleAtoi(*piece_it, &maximum_dynamic_table_capacity)) {
QUIC_LOG(ERROR) << "Error parsing part of input filename \"" << *piece_it
<< "\" as an integer.";
return false;
diff --git a/quic/tools/quic_memory_cache_backend.cc b/quic/tools/quic_memory_cache_backend.cc
index 84596fd..f6ecadd 100644
--- a/quic/tools/quic_memory_cache_backend.cc
+++ b/quic/tools/quic_memory_cache_backend.cc
@@ -7,6 +7,7 @@
#include <utility>
#include "absl/strings/match.h"
+#include "absl/strings/numbers.h"
#include "absl/strings/string_view.h"
#include "net/third_party/quiche/src/quic/core/http/spdy_utils.h"
#include "net/third_party/quiche/src/quic/platform/api/quic_bug_tracker.h"
@@ -145,8 +146,8 @@
if (it == responses_.end()) {
uint64_t ignored = 0;
if (generate_bytes_response_) {
- if (quiche::QuicheTextUtils::StringToUint64(
- absl::string_view(path.data() + 1, path.size() - 1), &ignored)) {
+ if (absl::SimpleAtoi(absl::string_view(path.data() + 1, path.size() - 1),
+ &ignored)) {
// The actual parsed length is ignored here and will be recomputed
// by the caller.
return generate_bytes_response_.get();
diff --git a/quic/tools/quic_reject_reason_decoder_bin.cc b/quic/tools/quic_reject_reason_decoder_bin.cc
index f7e3b75..f17cd03 100644
--- a/quic/tools/quic_reject_reason_decoder_bin.cc
+++ b/quic/tools/quic_reject_reason_decoder_bin.cc
@@ -7,6 +7,7 @@
#include <iostream>
+#include "absl/strings/numbers.h"
#include "net/third_party/quiche/src/quic/core/crypto/crypto_handshake.h"
#include "net/third_party/quiche/src/quic/core/crypto/crypto_utils.h"
#include "net/third_party/quiche/src/quic/platform/api/quic_flags.h"
@@ -27,7 +28,7 @@
}
uint32_t packed_error = 0;
- if (!quiche::QuicheTextUtils::StringToUint32(args[0], &packed_error)) {
+ if (!absl::SimpleAtoi(args[0], &packed_error)) {
std::cerr << "Unable to parse: " << args[0] << "\n";
return 2;
}
diff --git a/quic/tools/quic_simple_server_stream.cc b/quic/tools/quic_simple_server_stream.cc
index bbae2bc..93b4356 100644
--- a/quic/tools/quic_simple_server_stream.cc
+++ b/quic/tools/quic_simple_server_stream.cc
@@ -7,6 +7,7 @@
#include <list>
#include <utility>
+#include "absl/strings/numbers.h"
#include "absl/strings/string_view.h"
#include "net/third_party/quiche/src/quic/core/http/quic_spdy_stream.h"
#include "net/third_party/quiche/src/quic/core/http/spdy_utils.h"
@@ -257,8 +258,7 @@
if (response->response_type() == QuicBackendResponse::GENERATE_BYTES) {
QUIC_DVLOG(1) << "Stream " << id() << " sending a generate bytes response.";
std::string path = request_headers_[":path"].as_string().substr(1);
- if (!quiche::QuicheTextUtils::StringToUint64(path,
- &generate_bytes_length_)) {
+ if (!absl::SimpleAtoi(path, &generate_bytes_length_)) {
QUIC_LOG(ERROR) << "Path is not a number.";
SendNotFoundResponse();
return;
diff --git a/quic/tools/quic_spdy_client_base.cc b/quic/tools/quic_spdy_client_base.cc
index e96b19c..134e673 100644
--- a/quic/tools/quic_spdy_client_base.cc
+++ b/quic/tools/quic_spdy_client_base.cc
@@ -6,6 +6,7 @@
#include <utility>
+#include "absl/strings/numbers.h"
#include "absl/strings/string_view.h"
#include "net/third_party/quiche/src/quic/core/crypto/quic_random.h"
#include "net/third_party/quiche/src/quic/core/http/spdy_utils.h"
@@ -91,8 +92,7 @@
auto status = response_headers.find(":status");
if (status == response_headers.end()) {
QUIC_LOG(ERROR) << "Missing :status response header";
- } else if (!quiche::QuicheTextUtils::StringToInt(status->second,
- &latest_response_code_)) {
+ } else if (!absl::SimpleAtoi(status->second, &latest_response_code_)) {
QUIC_LOG(ERROR) << "Invalid :status response header: " << status->second;
}
latest_response_headers_ = response_headers.DebugString();