| Index: third_party/WebKit/Source/wtf/text/StringToNumber.cpp | 
| diff --git a/third_party/WebKit/Source/wtf/text/StringToNumber.cpp b/third_party/WebKit/Source/wtf/text/StringToNumber.cpp | 
| deleted file mode 100644 | 
| index 423bf6812c8fd67b676b0d0200c1ce9f18b6e009..0000000000000000000000000000000000000000 | 
| --- a/third_party/WebKit/Source/wtf/text/StringToNumber.cpp | 
| +++ /dev/null | 
| @@ -1,322 +0,0 @@ | 
| -// 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. | 
| - | 
| -#include "wtf/text/StringToNumber.h" | 
| - | 
| -#include "wtf/ASCIICType.h" | 
| -#include "wtf/dtoa.h" | 
| -#include "wtf/text/StringImpl.h" | 
| -#include <type_traits> | 
| - | 
| -namespace WTF { | 
| - | 
| -static bool isCharacterAllowedInBase(UChar c, int base) { | 
| -  if (c > 0x7F) | 
| -    return false; | 
| -  if (isASCIIDigit(c)) | 
| -    return c - '0' < base; | 
| -  if (isASCIIAlpha(c)) { | 
| -    if (base > 36) | 
| -      base = 36; | 
| -    return (c >= 'a' && c < 'a' + base - 10) || | 
| -           (c >= 'A' && c < 'A' + base - 10); | 
| -  } | 
| -  return false; | 
| -} | 
| - | 
| -template <typename IntegralType, typename CharType> | 
| -static inline IntegralType toIntegralType(const CharType* data, | 
| -                                          size_t length, | 
| -                                          bool* ok, | 
| -                                          int base) { | 
| -  static_assert(std::is_integral<IntegralType>::value, | 
| -                "IntegralType must be an integral type."); | 
| -  static constexpr IntegralType integralMax = | 
| -      std::numeric_limits<IntegralType>::max(); | 
| -  static constexpr IntegralType integralMin = | 
| -      std::numeric_limits<IntegralType>::min(); | 
| -  static constexpr bool isSigned = std::numeric_limits<IntegralType>::is_signed; | 
| - | 
| -  IntegralType value = 0; | 
| -  bool isOk = false; | 
| -  bool isNegative = false; | 
| - | 
| -  if (!data) | 
| -    goto bye; | 
| - | 
| -  // skip leading whitespace | 
| -  while (length && isSpaceOrNewline(*data)) { | 
| -    --length; | 
| -    ++data; | 
| -  } | 
| - | 
| -  if (isSigned && length && *data == '-') { | 
| -    --length; | 
| -    ++data; | 
| -    isNegative = true; | 
| -  } else if (length && *data == '+') { | 
| -    --length; | 
| -    ++data; | 
| -  } | 
| - | 
| -  if (!length || !isCharacterAllowedInBase(*data, base)) | 
| -    goto bye; | 
| - | 
| -  while (length && isCharacterAllowedInBase(*data, base)) { | 
| -    --length; | 
| -    IntegralType digitValue; | 
| -    CharType c = *data; | 
| -    if (isASCIIDigit(c)) | 
| -      digitValue = c - '0'; | 
| -    else if (c >= 'a') | 
| -      digitValue = c - 'a' + 10; | 
| -    else | 
| -      digitValue = c - 'A' + 10; | 
| - | 
| -    bool overflow; | 
| -    if (isNegative) { | 
| -      // Overflow condition: | 
| -      //       value * base - digitValue < integralMin | 
| -      //   <=> value < (integralMin + digitValue) / base | 
| -      // We must be careful of rounding errors here, but the default rounding | 
| -      // mode (round to zero) works well, so we can use this formula as-is. | 
| -      overflow = value < (integralMin + digitValue) / base; | 
| -    } else { | 
| -      // Overflow condition: | 
| -      //       value * base + digitValue > integralMax | 
| -      //   <=> value > (integralMax + digitValue) / base | 
| -      // Ditto regarding rounding errors. | 
| -      overflow = value > (integralMax - digitValue) / base; | 
| -    } | 
| -    if (overflow) | 
| -      goto bye; | 
| - | 
| -    if (isNegative) | 
| -      value = base * value - digitValue; | 
| -    else | 
| -      value = base * value + digitValue; | 
| -    ++data; | 
| -  } | 
| - | 
| -  // skip trailing space | 
| -  while (length && isSpaceOrNewline(*data)) { | 
| -    --length; | 
| -    ++data; | 
| -  } | 
| - | 
| -  if (!length) | 
| -    isOk = true; | 
| -bye: | 
| -  if (ok) | 
| -    *ok = isOk; | 
| -  return isOk ? value : 0; | 
| -} | 
| - | 
| -template <typename CharType> | 
| -static unsigned lengthOfCharactersAsInteger(const CharType* data, | 
| -                                            size_t length) { | 
| -  size_t i = 0; | 
| - | 
| -  // Allow leading spaces. | 
| -  for (; i != length; ++i) { | 
| -    if (!isSpaceOrNewline(data[i])) | 
| -      break; | 
| -  } | 
| - | 
| -  // Allow sign. | 
| -  if (i != length && (data[i] == '+' || data[i] == '-')) | 
| -    ++i; | 
| - | 
| -  // Allow digits. | 
| -  for (; i != length; ++i) { | 
| -    if (!isASCIIDigit(data[i])) | 
| -      break; | 
| -  } | 
| - | 
| -  return i; | 
| -} | 
| - | 
| -int charactersToIntStrict(const LChar* data, | 
| -                          size_t length, | 
| -                          bool* ok, | 
| -                          int base) { | 
| -  return toIntegralType<int, LChar>(data, length, ok, base); | 
| -} | 
| - | 
| -int charactersToIntStrict(const UChar* data, | 
| -                          size_t length, | 
| -                          bool* ok, | 
| -                          int base) { | 
| -  return toIntegralType<int, UChar>(data, length, ok, base); | 
| -} | 
| - | 
| -unsigned charactersToUIntStrict(const LChar* data, | 
| -                                size_t length, | 
| -                                bool* ok, | 
| -                                int base) { | 
| -  return toIntegralType<unsigned, LChar>(data, length, ok, base); | 
| -} | 
| - | 
| -unsigned charactersToUIntStrict(const UChar* data, | 
| -                                size_t length, | 
| -                                bool* ok, | 
| -                                int base) { | 
| -  return toIntegralType<unsigned, UChar>(data, length, ok, base); | 
| -} | 
| - | 
| -int64_t charactersToInt64Strict(const LChar* data, | 
| -                                size_t length, | 
| -                                bool* ok, | 
| -                                int base) { | 
| -  return toIntegralType<int64_t, LChar>(data, length, ok, base); | 
| -} | 
| - | 
| -int64_t charactersToInt64Strict(const UChar* data, | 
| -                                size_t length, | 
| -                                bool* ok, | 
| -                                int base) { | 
| -  return toIntegralType<int64_t, UChar>(data, length, ok, base); | 
| -} | 
| - | 
| -uint64_t charactersToUInt64Strict(const LChar* data, | 
| -                                  size_t length, | 
| -                                  bool* ok, | 
| -                                  int base) { | 
| -  return toIntegralType<uint64_t, LChar>(data, length, ok, base); | 
| -} | 
| - | 
| -uint64_t charactersToUInt64Strict(const UChar* data, | 
| -                                  size_t length, | 
| -                                  bool* ok, | 
| -                                  int base) { | 
| -  return toIntegralType<uint64_t, UChar>(data, length, ok, base); | 
| -} | 
| - | 
| -int charactersToInt(const LChar* data, size_t length, bool* ok) { | 
| -  return toIntegralType<int, LChar>( | 
| -      data, lengthOfCharactersAsInteger<LChar>(data, length), ok, 10); | 
| -} | 
| - | 
| -int charactersToInt(const UChar* data, size_t length, bool* ok) { | 
| -  return toIntegralType<int, UChar>( | 
| -      data, lengthOfCharactersAsInteger(data, length), ok, 10); | 
| -} | 
| - | 
| -unsigned charactersToUInt(const LChar* data, size_t length, bool* ok) { | 
| -  return toIntegralType<unsigned, LChar>( | 
| -      data, lengthOfCharactersAsInteger<LChar>(data, length), ok, 10); | 
| -} | 
| - | 
| -unsigned charactersToUInt(const UChar* data, size_t length, bool* ok) { | 
| -  return toIntegralType<unsigned, UChar>( | 
| -      data, lengthOfCharactersAsInteger<UChar>(data, length), ok, 10); | 
| -} | 
| - | 
| -int64_t charactersToInt64(const LChar* data, size_t length, bool* ok) { | 
| -  return toIntegralType<int64_t, LChar>( | 
| -      data, lengthOfCharactersAsInteger<LChar>(data, length), ok, 10); | 
| -} | 
| - | 
| -int64_t charactersToInt64(const UChar* data, size_t length, bool* ok) { | 
| -  return toIntegralType<int64_t, UChar>( | 
| -      data, lengthOfCharactersAsInteger<UChar>(data, length), ok, 10); | 
| -} | 
| - | 
| -uint64_t charactersToUInt64(const LChar* data, size_t length, bool* ok) { | 
| -  return toIntegralType<uint64_t, LChar>( | 
| -      data, lengthOfCharactersAsInteger<LChar>(data, length), ok, 10); | 
| -} | 
| - | 
| -uint64_t charactersToUInt64(const UChar* data, size_t length, bool* ok) { | 
| -  return toIntegralType<uint64_t, UChar>( | 
| -      data, lengthOfCharactersAsInteger<UChar>(data, length), ok, 10); | 
| -} | 
| - | 
| -enum TrailingJunkPolicy { DisallowTrailingJunk, AllowTrailingJunk }; | 
| - | 
| -template <typename CharType, TrailingJunkPolicy policy> | 
| -static inline double toDoubleType(const CharType* data, | 
| -                                  size_t length, | 
| -                                  bool* ok, | 
| -                                  size_t& parsedLength) { | 
| -  size_t leadingSpacesLength = 0; | 
| -  while (leadingSpacesLength < length && | 
| -         isASCIISpace(data[leadingSpacesLength])) | 
| -    ++leadingSpacesLength; | 
| - | 
| -  double number = parseDouble(data + leadingSpacesLength, | 
| -                              length - leadingSpacesLength, parsedLength); | 
| -  if (!parsedLength) { | 
| -    if (ok) | 
| -      *ok = false; | 
| -    return 0.0; | 
| -  } | 
| - | 
| -  parsedLength += leadingSpacesLength; | 
| -  if (ok) | 
| -    *ok = policy == AllowTrailingJunk || parsedLength == length; | 
| -  return number; | 
| -} | 
| - | 
| -double charactersToDouble(const LChar* data, size_t length, bool* ok) { | 
| -  size_t parsedLength; | 
| -  return toDoubleType<LChar, DisallowTrailingJunk>(data, length, ok, | 
| -                                                   parsedLength); | 
| -} | 
| - | 
| -double charactersToDouble(const UChar* data, size_t length, bool* ok) { | 
| -  size_t parsedLength; | 
| -  return toDoubleType<UChar, DisallowTrailingJunk>(data, length, ok, | 
| -                                                   parsedLength); | 
| -} | 
| - | 
| -double charactersToDouble(const LChar* data, | 
| -                          size_t length, | 
| -                          size_t& parsedLength) { | 
| -  return toDoubleType<LChar, AllowTrailingJunk>(data, length, nullptr, | 
| -                                                parsedLength); | 
| -} | 
| - | 
| -double charactersToDouble(const UChar* data, | 
| -                          size_t length, | 
| -                          size_t& parsedLength) { | 
| -  return toDoubleType<UChar, AllowTrailingJunk>(data, length, nullptr, | 
| -                                                parsedLength); | 
| -} | 
| - | 
| -float charactersToFloat(const LChar* data, size_t length, bool* ok) { | 
| -  // FIXME: This will return ok even when the string fits into a double but | 
| -  // not a float. | 
| -  size_t parsedLength; | 
| -  return static_cast<float>(toDoubleType<LChar, DisallowTrailingJunk>( | 
| -      data, length, ok, parsedLength)); | 
| -} | 
| - | 
| -float charactersToFloat(const UChar* data, size_t length, bool* ok) { | 
| -  // FIXME: This will return ok even when the string fits into a double but | 
| -  // not a float. | 
| -  size_t parsedLength; | 
| -  return static_cast<float>(toDoubleType<UChar, DisallowTrailingJunk>( | 
| -      data, length, ok, parsedLength)); | 
| -} | 
| - | 
| -float charactersToFloat(const LChar* data, | 
| -                        size_t length, | 
| -                        size_t& parsedLength) { | 
| -  // FIXME: This will return ok even when the string fits into a double but | 
| -  // not a float. | 
| -  return static_cast<float>( | 
| -      toDoubleType<LChar, AllowTrailingJunk>(data, length, 0, parsedLength)); | 
| -} | 
| - | 
| -float charactersToFloat(const UChar* data, | 
| -                        size_t length, | 
| -                        size_t& parsedLength) { | 
| -  // FIXME: This will return ok even when the string fits into a double but | 
| -  // not a float. | 
| -  return static_cast<float>( | 
| -      toDoubleType<UChar, AllowTrailingJunk>(data, length, 0, parsedLength)); | 
| -} | 
| - | 
| -}  // namespace WTF | 
|  |