| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "core/css/cssom/CSSOMTypes.h" | 5 #include "core/css/cssom/CSSOMTypes.h" |
| 6 | 6 |
| 7 #include "core/css/CSSPropertyMetadata.h" | 7 #include "core/css/CSSPropertyMetadata.h" |
| 8 #include "core/css/cssom/CSSOMKeywords.h" | 8 #include "core/css/cssom/CSSOMKeywords.h" |
| 9 #include "core/css/cssom/CSSKeywordValue.h" | 9 #include "core/css/cssom/CSSKeywordValue.h" |
| 10 #include "core/css/cssom/CSSLengthValue.h" | |
| 11 #include "core/css/cssom/CSSStyleValue.h" | 10 #include "core/css/cssom/CSSStyleValue.h" |
| 12 | 11 |
| 13 namespace blink { | 12 namespace blink { |
| 14 | 13 |
| 15 bool CSSOMTypes::PropertyCanTake(CSSPropertyID id, | 14 bool CSSOMTypes::PropertyCanTake(CSSPropertyID id, |
| 16 const CSSStyleValue& styleValue) { | 15 const CSSStyleValue& styleValue) { |
| 17 // Shortcut special case. | 16 // Shortcut special case. |
| 18 if (styleValue.GetType() == CSSStyleValue::kSimpleLengthType || | 17 if (styleValue.GetType() == CSSStyleValue::kSimpleLengthType || |
| 19 styleValue.GetType() == CSSStyleValue::kCalcLengthType) { | 18 styleValue.GetType() == CSSStyleValue::kCalcLengthType) { |
| 20 if (ToCSSLengthValue(styleValue).ContainsPercent() && | 19 // TODO(meade): Rewrite this once the new length types are spec'd. |
| 21 !CSSPropertyMetadata::PropertySupportsPercentage(id)) { | 20 // if (ToCSSLengthValue(styleValue).ContainsPercent() && |
| 22 return false; | 21 // !CSSPropertyMetadata::PropertySupportsPercentage(id)) { |
| 23 } | 22 // return false; |
| 23 // } |
| 24 } else if (styleValue.GetType() == CSSStyleValue::kKeywordType) { | 24 } else if (styleValue.GetType() == CSSStyleValue::kKeywordType) { |
| 25 // Keywords are also handled differently. | 25 // Keywords are also handled differently. |
| 26 return CSSOMKeywords::ValidKeywordForProperty( | 26 return CSSOMKeywords::ValidKeywordForProperty( |
| 27 id, ToCSSKeywordValue(styleValue)); | 27 id, ToCSSKeywordValue(styleValue)); |
| 28 } else if (styleValue.GetType() == CSSStyleValue::kUnknown) { | 28 } else if (styleValue.GetType() == CSSStyleValue::kUnknown) { |
| 29 // The check happens later in this case. | 29 // The check happens later in this case. |
| 30 return true; | 30 return true; |
| 31 } | 31 } |
| 32 | 32 |
| 33 return CSSOMTypes::PropertyCanTakeType(id, styleValue.GetType()); | 33 return CSSOMTypes::PropertyCanTakeType(id, styleValue.GetType()); |
| 34 } | 34 } |
| 35 | 35 |
| 36 bool CSSOMTypes::PropertyCanTakeType(CSSPropertyID id, | 36 bool CSSOMTypes::PropertyCanTakeType(CSSPropertyID id, |
| 37 CSSStyleValue::StyleValueType type) { | 37 CSSStyleValue::StyleValueType type) { |
| 38 switch (id) { | 38 switch (id) { |
| 39 {% for property_id, property in properties.items() if property.typedom_types
%} | 39 {% for property_id, property in properties.items() if property.typedom_types
%} |
| 40 case {{property_id}}: | 40 case {{property_id}}: |
| 41 return ( | 41 return ( |
| 42 {% for type in property.typedom_types %} | 42 {% for type in property.typedom_types %} |
| 43 {{ "|| " if not loop.first }}type == CSSStyleValue::k{{type}}Type | 43 {{ "|| " if not loop.first }}type == CSSStyleValue::k{{type}}Type |
| 44 {% endfor %} | 44 {% endfor %} |
| 45 ); | 45 ); |
| 46 {% endfor %} | 46 {% endfor %} |
| 47 default: | 47 default: |
| 48 return false; | 48 return false; |
| 49 } | 49 } |
| 50 } | 50 } |
| 51 | 51 |
| 52 } // namespace blink | 52 } // namespace blink |
| OLD | NEW |