| Index: Source/core/css/parser/BisonCSSParser-in.cpp
 | 
| diff --git a/Source/core/css/parser/BisonCSSParser-in.cpp b/Source/core/css/parser/BisonCSSParser-in.cpp
 | 
| index 8ab5561a934df07b7f2c67e060129f53b35a1b19..77322cd16e7eaff9860e06c87f8001b55d263f53 100644
 | 
| --- a/Source/core/css/parser/BisonCSSParser-in.cpp
 | 
| +++ b/Source/core/css/parser/BisonCSSParser-in.cpp
 | 
| @@ -551,6 +551,7 @@ bool isValidKeywordPropertyAndValue(CSSPropertyID propertyId, int valueID, const
 | 
|          if ((valueID >= CSSValueCheckbox && valueID <= CSSValueTextarea) || valueID == CSSValueNone)
 | 
|              return true;
 | 
|          break;
 | 
| +    case CSSPropertyBackfaceVisibility:
 | 
|      case CSSPropertyWebkitBackfaceVisibility:
 | 
|          if (valueID == CSSValueVisible || valueID == CSSValueHidden)
 | 
|              return true;
 | 
| @@ -687,6 +688,7 @@ bool isValidKeywordPropertyAndValue(CSSPropertyID propertyId, int valueID, const
 | 
|          if (valueID == CSSValueDisc || valueID == CSSValueCircle || valueID == CSSValueSquare || valueID == CSSValueNone)
 | 
|              return true;
 | 
|          break;
 | 
| +    case CSSPropertyTransformStyle:
 | 
|      case CSSPropertyWebkitTransformStyle:
 | 
|          if (valueID == CSSValueFlat || valueID == CSSValuePreserve3d)
 | 
|              return true;
 | 
| @@ -783,6 +785,7 @@ bool isKeywordPropertyID(CSSPropertyID propertyId)
 | 
|      case CSSPropertyTouchActionDelay:
 | 
|      case CSSPropertyVisibility:
 | 
|      case CSSPropertyWebkitAppearance:
 | 
| +    case CSSPropertyBackfaceVisibility:
 | 
|      case CSSPropertyWebkitBackfaceVisibility:
 | 
|      case CSSPropertyWebkitBorderAfterStyle:
 | 
|      case CSSPropertyWebkitBorderBeforeStyle:
 | 
| @@ -821,6 +824,7 @@ bool isKeywordPropertyID(CSSPropertyID propertyId)
 | 
|      case CSSPropertyWebkitTextCombine:
 | 
|      case CSSPropertyWebkitTextEmphasisPosition:
 | 
|      case CSSPropertyWebkitTextSecurity:
 | 
| +    case CSSPropertyTransformStyle:
 | 
|      case CSSPropertyWebkitTransformStyle:
 | 
|      case CSSPropertyWebkitUserDrag:
 | 
|      case CSSPropertyWebkitUserModify:
 | 
| @@ -967,7 +971,7 @@ static PassRefPtrWillBeRawPtr<CSSValueList> parseTranslateTransformList(CharType
 | 
|  
 | 
|  static bool parseTranslateTransform(MutableStylePropertySet* properties, CSSPropertyID propertyID, const String& string, bool important)
 | 
|  {
 | 
| -    if (propertyID != CSSPropertyWebkitTransform)
 | 
| +    if (propertyID != CSSPropertyTransform && propertyID != CSSPropertyWebkitTransform)
 | 
|          return false;
 | 
|      if (string.isEmpty())
 | 
|          return false;
 | 
| @@ -985,7 +989,7 @@ static bool parseTranslateTransform(MutableStylePropertySet* properties, CSSProp
 | 
|          if (!transformList)
 | 
|              return false;
 | 
|      }
 | 
| -    properties->addParsedProperty(CSSProperty(CSSPropertyWebkitTransform, transformList.release(), important));
 | 
| +    properties->addParsedProperty(CSSProperty(propertyID, transformList.release(), important));
 | 
|      return true;
 | 
|  }
 | 
|  
 | 
| @@ -1414,14 +1418,14 @@ private:
 | 
|      CSSPropertyParser::Units m_unit;
 | 
|  };
 | 
|  
 | 
| -PassRefPtrWillBeRawPtr<CSSValueList> CSSPropertyParser::parseTransform()
 | 
| +PassRefPtrWillBeRawPtr<CSSValueList> CSSPropertyParser::parseTransform(CSSPropertyID propId)
 | 
|  {
 | 
|      if (!m_valueList)
 | 
|          return nullptr;
 | 
|  
 | 
|      RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
 | 
|      for (CSSParserValue* value = m_valueList->current(); value; value = m_valueList->next()) {
 | 
| -        RefPtrWillBeRawPtr<CSSValue> parsedTransformValue = parseTransformValue(value);
 | 
| +        RefPtrWillBeRawPtr<CSSValue> parsedTransformValue = parseTransformValue(propId, value);
 | 
|          if (!parsedTransformValue)
 | 
|              return nullptr;
 | 
|  
 | 
| @@ -1431,7 +1435,7 @@ PassRefPtrWillBeRawPtr<CSSValueList> CSSPropertyParser::parseTransform()
 | 
|      return list.release();
 | 
|  }
 | 
|  
 | 
| -PassRefPtrWillBeRawPtr<CSSValue> CSSPropertyParser::parseTransformValue(CSSParserValue *value)
 | 
| +PassRefPtrWillBeRawPtr<CSSValue> CSSPropertyParser::parseTransformValue(CSSPropertyID propId, CSSParserValue *value)
 | 
|  {
 | 
|      if (value->unit != CSSParserValue::Function || !value->function)
 | 
|          return nullptr;
 | 
| @@ -1475,7 +1479,8 @@ PassRefPtrWillBeRawPtr<CSSValue> CSSPropertyParser::parseTransformValue(CSSParse
 | 
|                  return nullptr;
 | 
|          } else if (info.type() == CSSTransformValue::PerspectiveTransformOperation && !argNumber) {
 | 
|              // 1st param of perspective() must be a non-negative number (deprecated) or length.
 | 
| -            if (!validUnit(a, FNumber | FLength | FNonNeg, HTMLStandardMode))
 | 
| +            if ((propId == CSSPropertyWebkitTransform && !validUnit(a, FNumber | FLength | FNonNeg, HTMLStandardMode))
 | 
| +                || (propId == CSSPropertyTransform && !validUnit(a, FLength | FNonNeg, HTMLStandardMode)))
 | 
|                  return nullptr;
 | 
|          } else if (!validUnit(a, unit, HTMLStandardMode)) {
 | 
|              return nullptr;
 | 
| 
 |