From 31d5661563a8dafc0409cf677a4e149c08ddb770 Mon Sep 17 00:00:00 2001 From: "tedvessenes@gmail.com" Date: Sat, 17 Dec 2011 21:35:27 +0000 Subject: 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 --- net/http/http_chunked_decoder.cc | 10 ++++++---- net/http/http_response_headers.cc | 20 +++++++++++--------- 2 files changed, 17 insertions(+), 13 deletions(-) (limited to 'net/http') 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; -- cgit v1.1