| Index: Source/core/html/HTMLDimension.cpp
|
| diff --git a/Source/core/html/HTMLDimension.cpp b/Source/core/html/HTMLDimension.cpp
|
| deleted file mode 100644
|
| index e7bcc8711d7e749112ff4886818f53d817468b0b..0000000000000000000000000000000000000000
|
| --- a/Source/core/html/HTMLDimension.cpp
|
| +++ /dev/null
|
| @@ -1,133 +0,0 @@
|
| -/*
|
| - * Copyright (C) 2013 Google Inc. All rights reserved.
|
| - *
|
| - * Redistribution and use in source and binary forms, with or without
|
| - * modification, are permitted provided that the following conditions are
|
| - * met:
|
| - *
|
| - * * Redistributions of source code must retain the above copyright
|
| - * notice, this list of conditions and the following disclaimer.
|
| - * * Redistributions in binary form must reproduce the above
|
| - * copyright notice, this list of conditions and the following disclaimer
|
| - * in the documentation and/or other materials provided with the
|
| - * distribution.
|
| - * * Neither the name of Google Inc. nor the names of its
|
| - * contributors may be used to endorse or promote products derived from
|
| - * this software without specific prior written permission.
|
| - *
|
| - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
| - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
| - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
| - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
| - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
| - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
| - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
| - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
| - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
| - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| - */
|
| -
|
| -#include "config.h"
|
| -#include "core/html/HTMLDimension.h"
|
| -
|
| -#include "wtf/text/WTFString.h"
|
| -
|
| -namespace WebCore {
|
| -
|
| -template <typename CharacterType>
|
| -static Length parseDimension(const CharacterType* characters, size_t lastParsedIndex, size_t endOfCurrentToken)
|
| -{
|
| - LengthType type = Fixed;
|
| - double value = 0.;
|
| -
|
| - // HTML5's split removes leading and trailing spaces so we need to skip the leading spaces here.
|
| - while (lastParsedIndex < endOfCurrentToken && isASCIISpace((characters[lastParsedIndex])))
|
| - ++lastParsedIndex;
|
| -
|
| - // This is Step 5.5. in the algorithm. Going to the last step would make the code less readable.
|
| - if (lastParsedIndex >= endOfCurrentToken)
|
| - return Length(value, Relative);
|
| -
|
| - size_t position = lastParsedIndex;
|
| - while (position < endOfCurrentToken && isASCIIDigit(characters[position]))
|
| - ++position;
|
| -
|
| - if (position > lastParsedIndex) {
|
| - bool ok = false;
|
| - unsigned integerValue = charactersToUIntStrict(characters + lastParsedIndex, position - lastParsedIndex, &ok);
|
| - ASSERT(ok);
|
| - value += integerValue;
|
| -
|
| - if (characters[position] == '.') {
|
| - ++position;
|
| - size_t fractionStart = position;
|
| - Vector<CharacterType> fractionNumbers;
|
| - while (position < endOfCurrentToken && (isASCIIDigit(characters[position]) || isASCIISpace(characters[position]))) {
|
| - if (isASCIIDigit(characters[position]))
|
| - fractionNumbers.append(characters[position]);
|
| - ++position;
|
| - }
|
| -
|
| - if (fractionNumbers.size()) {
|
| - double fractionValue = charactersToUIntStrict(fractionNumbers.data(), fractionNumbers.size(), &ok);
|
| - ASSERT(ok);
|
| -
|
| - value += fractionValue / pow(10., static_cast<double>(fractionNumbers.size()));
|
| - }
|
| - }
|
| - }
|
| -
|
| - while (position < endOfCurrentToken && isASCIISpace(characters[position]))
|
| - ++position;
|
| -
|
| - if (position < endOfCurrentToken) {
|
| - if (characters[position] == '*')
|
| - type = Relative;
|
| - else if (characters[position] == '%')
|
| - type = Percent;
|
| - }
|
| -
|
| - return Length(value, type);
|
| -}
|
| -
|
| -static Length parseDimension(const String& rawToken, size_t lastParsedIndex, size_t endOfCurrentToken)
|
| -{
|
| - if (rawToken.is8Bit())
|
| - return parseDimension<LChar>(rawToken.characters8(), lastParsedIndex, endOfCurrentToken);
|
| - return parseDimension<UChar>(rawToken.characters16(), lastParsedIndex, endOfCurrentToken);
|
| -}
|
| -
|
| -// This implements the "rules for parsing a list of dimensions" per HTML5.
|
| -// http://www.whatwg.org/specs/web-apps/current-work/multipage/common-microsyntaxes.html#rules-for-parsing-a-list-of-dimensions
|
| -Vector<Length> parseListOfDimensions(const String& input)
|
| -{
|
| - static const char comma = ',';
|
| -
|
| - // Step 2. Remove the last character if it's a comma.
|
| - String trimmedString = input;
|
| - if (trimmedString.endsWith(comma))
|
| - trimmedString.truncate(trimmedString.length() - 1);
|
| -
|
| - // HTML5's split doesn't return a token for an empty string so
|
| - // we need to match them here.
|
| - if (trimmedString.isEmpty())
|
| - return Vector<Length>();
|
| -
|
| - // Step 3. To avoid String copies, we just look for commas instead of splitting.
|
| - Vector<Length> parsedLength;
|
| - size_t lastParsedIndex = 0;
|
| - while (true) {
|
| - size_t nextComma = trimmedString.find(comma, lastParsedIndex);
|
| - if (nextComma == notFound)
|
| - break;
|
| -
|
| - parsedLength.append(parseDimension(trimmedString, lastParsedIndex, nextComma));
|
| - lastParsedIndex = nextComma + 1;
|
| - }
|
| -
|
| - parsedLength.append(parseDimension(trimmedString, lastParsedIndex, trimmedString.length()));
|
| - return parsedLength;
|
| -}
|
| -
|
| -} // namespace WebCore
|
|
|