text: // Copyright 2014 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 "config.h"
  #include "core/animation/AnimationInputHelpers.h"
  
  #include "core/css/parser/CSSParser.h"
  #include "core/css/resolver/CSSToStyleMap.h"
  #include "wtf/text/StringBuilder.h"
  
  namespace blink {
  
  CSSPropertyID AnimationInputHelpers::keyframeAttributeToCSSPropertyID(const String& propertyName)
  {
      // Disallow prefixed properties.
      if (propertyName[0] == '-' || isASCIIUpper(propertyName[0]))
          return CSSPropertyInvalid;
      if (propertyName == "cssFloat")
          return CSSPropertyFloat;
      StringBuilder builder;
      for (size_t i = 0; i < propertyName.length(); ++i) {
          if (isASCIIUpper(propertyName[i]))
              builder.append('-');
          builder.append(propertyName[i]);
      }
      return cssPropertyID(builder.toString());
  }
  
  PassRefPtr<TimingFunction> AnimationInputHelpers::parseTimingFunction(const String& string)
  {
      if (string.isEmpty())
          return nullptr;
  
      RefPtrWillBeRawPtr<CSSValue> value = CSSParser::parseSingleValue(CSSPropertyTransitionTimingFunction, string);
      if (!value || value->isInitialValue() || value->isInheritedValue())
          return nullptr;
      CSSValueList* valueList = toCSSValueList(value.get());
      if (valueList->length() > 1)
          return nullptr;
      return CSSToStyleMap::mapAnimationTimingFunction(valueList->item(0), true);
  }
  
  } // namespace blink
  