diff options
author | tedvessenes@gmail.com <tedvessenes@gmail.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-17 21:35:27 +0000 |
---|---|---|
committer | tedvessenes@gmail.com <tedvessenes@gmail.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-17 21:35:27 +0000 |
commit | 31d5661563a8dafc0409cf677a4e149c08ddb770 (patch) | |
tree | 602724525407700923eaca5e3f9b9e01bff5c016 /net | |
parent | 3acc642339a305cb5fd1f3f3b485c3df2bfd4155 (diff) | |
download | chromium_src-31d5661563a8dafc0409cf677a4e149c08ddb770.zip chromium_src-31d5661563a8dafc0409cf677a4e149c08ddb770.tar.gz chromium_src-31d5661563a8dafc0409cf677a4e149c08ddb770.tar.bz2 |
Standardize StringToInt{,64} interface.
These changes address issue #106655. All variants of StringToInt have been
converted to use the StringPiece class. One instance of conversion, in
chrome/browser/history/text_database.cc, required copying an underlying
string. This is because the string type in question could use 8 or 16
bit characters depending on the OS type, and because StringPiece is not
implemented as a template, the code cannot specify whether to create a
StringPiece or StringPiece16. This should be remedied in a future CL.
R=erikwright@chromium.org
BUG=106655
TEST=
Review URL: http://codereview.chromium.org/8921006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@114929 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net')
-rw-r--r-- | net/base/net_util.cc | 4 | ||||
-rw-r--r-- | net/base/x509_cert_types.cc | 4 | ||||
-rw-r--r-- | net/ftp/ftp_ctrl_response_buffer.cc | 10 | ||||
-rw-r--r-- | net/ftp/ftp_util.cc | 27 | ||||
-rw-r--r-- | net/http/http_chunked_decoder.cc | 10 | ||||
-rw-r--r-- | net/http/http_response_headers.cc | 20 | ||||
-rw-r--r-- | net/proxy/proxy_bypass_rules.cc | 5 |
7 files changed, 46 insertions, 34 deletions
diff --git a/net/base/net_util.cc b/net/base/net_util.cc index 7ae4363d..180a905 100644 --- a/net/base/net_util.cc +++ b/net/base/net_util.cc @@ -1985,8 +1985,8 @@ void SetExplicitlyAllowedPorts(const std::string& allowed_ports) { if (i == size || allowed_ports[i] == kComma) { if (i > last) { int port; - base::StringToInt(allowed_ports.begin() + last, - allowed_ports.begin() + i, + base::StringToInt(base::StringPiece(allowed_ports.begin() + last, + allowed_ports.begin() + i), &port); ports.insert(port); } diff --git a/net/base/x509_cert_types.cc b/net/base/x509_cert_types.cc index 6beb3ec..7578ccd 100644 --- a/net/base/x509_cert_types.cc +++ b/net/base/x509_cert_types.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2006-2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 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. @@ -20,7 +20,7 @@ namespace { // untouched otherwise. Returns the parsed integer. int ParseIntAndAdvance(const char** field, size_t field_len, bool* ok) { int result = 0; - *ok &= base::StringToInt(*field, *field + field_len, &result); + *ok &= base::StringToInt(base::StringPiece(*field, field_len), &result); *field += field_len; return result; } diff --git a/net/ftp/ftp_ctrl_response_buffer.cc b/net/ftp/ftp_ctrl_response_buffer.cc index 4aeef1f..670c70d 100644 --- a/net/ftp/ftp_ctrl_response_buffer.cc +++ b/net/ftp/ftp_ctrl_response_buffer.cc @@ -1,11 +1,12 @@ -// Copyright (c) 2009 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. +// Copyright (c) 2011 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 "net/ftp/ftp_ctrl_response_buffer.h" #include "base/logging.h" #include "base/string_number_conversions.h" +#include "base/string_piece.h" //#include "base/string_util.h" #include "net/base/net_errors.h" @@ -91,7 +92,8 @@ FtpCtrlResponseBuffer::ParsedLine FtpCtrlResponseBuffer::ParseLine( ParsedLine result; if (line.length() >= 3) { - if (base::StringToInt(line.begin(), line.begin() + 3, &result.status_code)) + if (base::StringToInt(base::StringPiece(line.begin(), line.begin() + 3), + &result.status_code)) result.has_status_code = (100 <= result.status_code && result.status_code <= 599); if (result.has_status_code && line.length() >= 4 && line[3] == ' ') { diff --git a/net/ftp/ftp_util.cc b/net/ftp/ftp_util.cc index 553d513..f6bdf2f 100644 --- a/net/ftp/ftp_util.cc +++ b/net/ftp/ftp_util.cc @@ -12,6 +12,7 @@ #include "base/logging.h" #include "base/memory/singleton.h" #include "base/string_number_conversions.h" +#include "base/string_piece.h" #include "base/string_split.h" #include "base/string_tokenizer.h" #include "base/string_util.h" @@ -21,6 +22,8 @@ #include "unicode/dtfmtsym.h" #include "unicode/uchar.h" +using base::StringPiece16; + // For examples of Unix<->VMS path conversions, see the unit test file. On VMS // a path looks differently depending on whether it's a file or directory. @@ -211,26 +214,26 @@ bool FtpUtil::LsDateListingToTime(const string16& month, const string16& day, if (!base::StringToInt(rest, &time_exploded.year)) { // Maybe it's time. Does it look like time (HH:MM)? if (rest.length() == 5 && rest[2] == ':') { - if (!base::StringToInt(rest.begin(), - rest.begin() + 2, - &time_exploded.hour)) + if (!base::StringToInt(StringPiece16(rest.begin(), rest.begin() + 2), + &time_exploded.hour)) { return false; + } - if (!base::StringToInt(rest.begin() + 3, - rest.begin() + 5, - &time_exploded.minute)) + if (!base::StringToInt(StringPiece16(rest.begin() + 3, rest.begin() + 5), + &time_exploded.minute)) { return false; + } } else if (rest.length() == 4 && rest[1] == ':') { // Sometimes it's just H:MM. - if (!base::StringToInt(rest.begin(), - rest.begin() + 1, - &time_exploded.hour)) + if (!base::StringToInt(StringPiece16(rest.begin(), rest.begin() + 1), + &time_exploded.hour)) { return false; + } - if (!base::StringToInt(rest.begin() + 2, - rest.begin() + 4, - &time_exploded.minute)) + if (!base::StringToInt(StringPiece16(rest.begin() + 2, rest.begin() + 4), + &time_exploded.minute)) { return false; + } } else { return false; } diff --git a/net/http/http_chunked_decoder.cc b/net/http/http_chunked_decoder.cc index d5b16dd..87f54640 100644 --- a/net/http/http_chunked_decoder.cc +++ b/net/http/http_chunked_decoder.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 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. @@ -187,12 +187,14 @@ bool HttpChunkedDecoder::ParseChunkSize(const char* start, int len, int* out) { // Be more restrictive than HexStringToInt; // don't allow inputs with leading "-", "+", "0x", "0X" - if (base::StringPiece(start, len).find_first_not_of("0123456789abcdefABCDEF") - != base::StringPiece::npos) + base::StringPiece chunk_size(start, len); + if (chunk_size.find_first_not_of("0123456789abcdefABCDEF") + != base::StringPiece::npos) { return false; + } int parsed_number; - bool ok = base::HexStringToInt(start, start + len, &parsed_number); + bool ok = base::HexStringToInt(chunk_size, &parsed_number); if (ok && parsed_number >= 0) { *out = parsed_number; return true; diff --git a/net/http/http_response_headers.cc b/net/http/http_response_headers.cc index f249db8..98bd052 100644 --- a/net/http/http_response_headers.cc +++ b/net/http/http_response_headers.cc @@ -15,11 +15,13 @@ #include "base/metrics/histogram.h" #include "base/pickle.h" #include "base/string_number_conversions.h" +#include "base/string_piece.h" #include "base/string_util.h" #include "base/time.h" #include "net/base/escape.h" #include "net/http/http_util.h" +using base::StringPiece; using base::Time; using base::TimeDelta; @@ -698,7 +700,7 @@ void HttpResponseHeaders::ParseStatusLine( raw_headers_.push_back(' '); raw_headers_.append(code, p); raw_headers_.push_back(' '); - base::StringToInt(code, p, &response_code_); + base::StringToInt(StringPiece(code, p), &response_code_); // Skip whitespace. while (*p == ' ') @@ -1071,8 +1073,8 @@ bool HttpResponseHeaders::GetMaxAgeValue(TimeDelta* result) const { value.begin() + kMaxAgePrefixLen, kMaxAgePrefix)) { int64 seconds; - base::StringToInt64(value.begin() + kMaxAgePrefixLen, - value.end(), + base::StringToInt64(StringPiece(value.begin() + kMaxAgePrefixLen, + value.end()), &seconds); *result = TimeDelta::FromSeconds(seconds); return true; @@ -1250,8 +1252,8 @@ bool HttpResponseHeaders::GetContentRange(int64* first_byte_position, byte_range_resp_spec.begin() + minus_position; HttpUtil::TrimLWS(&first_byte_pos_begin, &first_byte_pos_end); - bool ok = base::StringToInt64(first_byte_pos_begin, - first_byte_pos_end, + bool ok = base::StringToInt64(StringPiece(first_byte_pos_begin, + first_byte_pos_end), first_byte_position); // Obtain last-byte-pos. @@ -1261,8 +1263,8 @@ bool HttpResponseHeaders::GetContentRange(int64* first_byte_position, byte_range_resp_spec.end(); HttpUtil::TrimLWS(&last_byte_pos_begin, &last_byte_pos_end); - ok &= base::StringToInt64(last_byte_pos_begin, - last_byte_pos_end, + ok &= base::StringToInt64(StringPiece(last_byte_pos_begin, + last_byte_pos_end), last_byte_position); if (!ok) { *first_byte_position = *last_byte_position = -1; @@ -1286,8 +1288,8 @@ bool HttpResponseHeaders::GetContentRange(int64* first_byte_position, if (LowerCaseEqualsASCII(instance_length_begin, instance_length_end, "*")) { return false; - } else if (!base::StringToInt64(instance_length_begin, - instance_length_end, + } else if (!base::StringToInt64(StringPiece(instance_length_begin, + instance_length_end), instance_length)) { *instance_length = -1; return false; diff --git a/net/proxy/proxy_bypass_rules.cc b/net/proxy/proxy_bypass_rules.cc index 3d622a8..1c0fd61 100644 --- a/net/proxy/proxy_bypass_rules.cc +++ b/net/proxy/proxy_bypass_rules.cc @@ -7,6 +7,7 @@ #include "base/stl_util.h" #include "base/stringprintf.h" #include "base/string_number_conversions.h" +#include "base/string_piece.h" #include "base/string_tokenizer.h" #include "base/string_util.h" #include "net/base/net_util.h" @@ -315,7 +316,9 @@ bool ProxyBypassRules::AddRuleFromStringInternal( host = raw; port = -1; if (pos_colon != std::string::npos) { - if (!base::StringToInt(raw.begin() + pos_colon + 1, raw.end(), &port) || + if (!base::StringToInt(base::StringPiece(raw.begin() + pos_colon + 1, + raw.end()), + &port) || (port < 0 || port > 0xFFFF)) { return false; // Port was invalid. } |