 Chromium Code Reviews
 Chromium Code Reviews Issue 87973002:
  add pan-x and pan-y support to CSS touch-action parsing.  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/blink.git@master
    
  
    Issue 87973002:
  add pan-x and pan-y support to CSS touch-action parsing.  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/blink.git@master| Index: Source/core/css/CSSParser-in.cpp | 
| diff --git a/Source/core/css/CSSParser-in.cpp b/Source/core/css/CSSParser-in.cpp | 
| old mode 100644 | 
| new mode 100755 | 
| index be3c9a619c9277d8376e918480e6de866ab13566..fc1db96fdbfa317f3e29afc116388f5cf69f16b2 | 
| --- a/Source/core/css/CSSParser-in.cpp | 
| +++ b/Source/core/css/CSSParser-in.cpp | 
| @@ -621,10 +621,6 @@ static inline bool isValidKeywordPropertyAndValue(CSSPropertyID propertyId, int | 
| if ((valueID >= CSSValueCapitalize && valueID <= CSSValueLowercase) || valueID == CSSValueNone) | 
| return true; | 
| break; | 
| - case CSSPropertyTouchAction: // auto | none | 
| - if (RuntimeEnabledFeatures::cssTouchActionEnabled() && (valueID == CSSValueAuto || valueID == CSSValueNone)) | 
| - return true; | 
| - break; | 
| case CSSPropertyTouchActionDelay: // none | script | 
| if (RuntimeEnabledFeatures::cssTouchActionEnabled() && (valueID == CSSValueScript || valueID == CSSValueNone)) | 
| return true; | 
| @@ -882,7 +878,6 @@ static inline bool isKeywordPropertyID(CSSPropertyID propertyId) | 
| case CSSPropertyTextTransform: | 
| case CSSPropertyTextUnderlineMode: | 
| case CSSPropertyTextUnderlineStyle: | 
| - case CSSPropertyTouchAction: | 
| case CSSPropertyTouchActionDelay: | 
| case CSSPropertyVisibility: | 
| case CSSPropertyWebkitAppearance: | 
| @@ -2706,6 +2701,11 @@ bool CSSParser::parseValue(CSSPropertyID propId, bool important) | 
| case CSSPropertyShapeImageThreshold: | 
| validPrimitive = (RuntimeEnabledFeatures::cssShapesEnabled() && !id && validUnit(value, FNumber)); | 
| break; | 
| + | 
| + case CSSPropertyTouchAction: | 
| + // auto | none | [panX || panY] | 
| 
Rick Byers
2013/12/12 15:30:35
still need to correct 'panX' to 'pan-x' etc.
 
gnana
2013/12/13 11:10:54
Done.
:-)
 | 
| + return parseTouchAction(propId, important); | 
| + | 
| case CSSPropertyBorderBottomStyle: | 
| case CSSPropertyBorderCollapse: | 
| case CSSPropertyBorderLeftStyle: | 
| @@ -2746,7 +2746,6 @@ bool CSSParser::parseValue(CSSPropertyID propId, bool important) | 
| case CSSPropertyTextTransform: | 
| case CSSPropertyTextUnderlineMode: | 
| case CSSPropertyTextUnderlineStyle: | 
| - case CSSPropertyTouchAction: | 
| case CSSPropertyTouchActionDelay: | 
| case CSSPropertyVariable: | 
| case CSSPropertyVisibility: | 
| @@ -9014,6 +9013,50 @@ bool CSSParser::parsePerspectiveOrigin(CSSPropertyID propId, CSSPropertyID& prop | 
| return value; | 
| } | 
| +bool CSSParser::parseTouchAction(CSSPropertyID propId, bool important) | 
| +{ | 
| + if (propId == CSSPropertyTouchAction | 
| + && !RuntimeEnabledFeatures::cssTouchActionEnabled()) | 
| + return false; | 
| + | 
| + CSSParserValue* value = m_valueList->current(); | 
| + RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); | 
| + if (m_valueList->size() == 1 && value && (value->id == CSSValueAuto || value->id == CSSValueNone)) { | 
| + list->append(cssValuePool().createIdentifierValue(value->id)); | 
| + addProperty(propId, list.release(), important); | 
| + m_valueList->next(); | 
| + return true; | 
| + } | 
| + | 
| + bool isValid = true; | 
| + while (isValid && value) { | 
| + switch (value->id) { | 
| + case CSSValuePanX: | 
| + case CSSValuePanY: { | 
| + RefPtr<CSSValue> panValue = cssValuePool().createIdentifierValue(value->id); | 
| 
Rick Byers
2013/12/12 15:30:35
nit: remove one of the two spaces after '='
 
gnana
2013/12/13 11:10:54
Done.
 | 
| + if (list->hasValue(panValue.get())) { | 
| + isValid = false; | 
| + break; | 
| + } | 
| + list->append(panValue.release()); | 
| + break; | 
| + } | 
| + default: | 
| + isValid = false; | 
| + break; | 
| + } | 
| + if (isValid) | 
| + value = m_valueList->next(); | 
| + } | 
| + | 
| + if (list->length() && isValid) { | 
| + addProperty(propId, list.release(), important); | 
| + return true; | 
| + } | 
| + | 
| + return false; | 
| +} | 
| + | 
| void CSSParser::addTextDecorationProperty(CSSPropertyID propId, PassRefPtr<CSSValue> value, bool important) | 
| { | 
| // The text-decoration-line property takes priority over text-decoration, unless the latter has important priority set. |