OLD | NEW |
---|---|
1 /* | 1 /* |
2 * (C) 1999-2003 Lars Knoll (knoll@kde.org) | 2 * (C) 1999-2003 Lars Knoll (knoll@kde.org) |
3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012 Apple Inc. All r ights reserved. | 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012 Apple Inc. All r ights reserved. |
4 * Copyright (C) 2011 Research In Motion Limited. All rights reserved. | 4 * Copyright (C) 2011 Research In Motion Limited. All rights reserved. |
5 * Copyright (C) 2013 Intel Corporation. All rights reserved. | 5 * Copyright (C) 2013 Intel Corporation. All rights reserved. |
6 * | 6 * |
7 * This library is free software; you can redistribute it and/or | 7 * This library is free software; you can redistribute it and/or |
8 * modify it under the terms of the GNU Library General Public | 8 * modify it under the terms of the GNU Library General Public |
9 * License as published by the Free Software Foundation; either | 9 * License as published by the Free Software Foundation; either |
10 * version 2 of the License, or (at your option) any later version. | 10 * version 2 of the License, or (at your option) any later version. |
11 * | 11 * |
12 * This library is distributed in the hope that it will be useful, | 12 * This library is distributed in the hope that it will be useful, |
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
15 * Library General Public License for more details. | 15 * Library General Public License for more details. |
16 * | 16 * |
17 * You should have received a copy of the GNU Library General Public License | 17 * You should have received a copy of the GNU Library General Public License |
18 * along with this library; see the file COPYING.LIB. If not, write to | 18 * along with this library; see the file COPYING.LIB. If not, write to |
19 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | 19 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
20 * Boston, MA 02110-1301, USA. | 20 * Boston, MA 02110-1301, USA. |
21 */ | 21 */ |
22 | 22 |
23 #include "config.h" | 23 #include "config.h" |
24 #include "core/css/StylePropertySerializer.h" | 24 #include "core/css/StylePropertySerializer.h" |
25 | 25 |
26 #include "core/CSSValueKeywords.h" | 26 #include "core/CSSValueKeywords.h" |
27 #include "core/StylePropertyShorthand.h" | 27 #include "core/StylePropertyShorthand.h" |
28 #include "core/css/CSSCustomPropertyDeclaration.h" | |
28 #include "core/css/CSSPropertyMetadata.h" | 29 #include "core/css/CSSPropertyMetadata.h" |
29 #include "core/css/CSSValuePool.h" | 30 #include "core/css/CSSValuePool.h" |
30 #include "wtf/BitArray.h" | 31 #include "wtf/BitArray.h" |
31 #include "wtf/text/StringBuilder.h" | 32 #include "wtf/text/StringBuilder.h" |
32 | 33 |
33 namespace blink { | 34 namespace blink { |
34 | 35 |
35 static bool isInitialOrInherit(const String& value) | 36 static bool isInitialOrInherit(const String& value) |
36 { | 37 { |
37 DEFINE_STATIC_LOCAL(String, initial, ("initial")); | 38 DEFINE_STATIC_LOCAL(String, initial, ("initial")); |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
169 return false; | 170 return false; |
170 StylePropertySerializer::PropertyValueForSerializer value = propertyAt(index ); | 171 StylePropertySerializer::PropertyValueForSerializer value = propertyAt(index ); |
171 return value.isImportant(); | 172 return value.isImportant(); |
172 } | 173 } |
173 | 174 |
174 StylePropertySerializer::StylePropertySerializer(const StylePropertySet& propert ies) | 175 StylePropertySerializer::StylePropertySerializer(const StylePropertySet& propert ies) |
175 : m_propertySet(properties) | 176 : m_propertySet(properties) |
176 { | 177 { |
177 } | 178 } |
178 | 179 |
180 String StylePropertySerializer::getCustomPropertyText(const PropertyValueForSeri alizer& property, bool isNotFirstDecl) const | |
Timothy Loh
2015/11/14 02:21:05
can this be static (not on the StylePropertySerial
leviw_travelin_and_unemployed
2015/11/17 01:25:07
Not if it wants to reference PropertyValueForSeria
| |
181 { | |
182 ASSERT(property.id() == CSSPropertyVariable); | |
183 StringBuilder result; | |
184 if (isNotFirstDecl) | |
185 result.append(' '); | |
186 const CSSCustomPropertyDeclaration* value = toCSSCustomPropertyDeclaration(p roperty.value()); | |
187 result.append(value->name()); | |
188 result.appendLiteral(": "); | |
189 result.append(value->value()->tokenRange().serialize()); | |
190 if (property.isImportant()) | |
191 result.appendLiteral(" !important"); | |
192 result.append(';'); | |
193 return result.toString(); | |
194 } | |
195 | |
179 String StylePropertySerializer::getPropertyText(CSSPropertyID propertyID, const String& value, bool isImportant, bool isNotFirstDecl) const | 196 String StylePropertySerializer::getPropertyText(CSSPropertyID propertyID, const String& value, bool isImportant, bool isNotFirstDecl) const |
180 { | 197 { |
181 StringBuilder result; | 198 StringBuilder result; |
182 if (isNotFirstDecl) | 199 if (isNotFirstDecl) |
183 result.append(' '); | 200 result.append(' '); |
184 result.append(getPropertyName(propertyID)); | 201 result.append(getPropertyName(propertyID)); |
185 result.appendLiteral(": "); | 202 result.appendLiteral(": "); |
186 result.append(value); | 203 result.append(value); |
187 if (isImportant) | 204 if (isImportant) |
188 result.appendLiteral(" !important"); | 205 result.appendLiteral(" !important"); |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
336 case CSSPropertyWebkitMaskPositionY: | 353 case CSSPropertyWebkitMaskPositionY: |
337 case CSSPropertyWebkitMaskRepeatX: | 354 case CSSPropertyWebkitMaskRepeatX: |
338 case CSSPropertyWebkitMaskRepeatY: | 355 case CSSPropertyWebkitMaskRepeatY: |
339 case CSSPropertyWebkitMaskImage: | 356 case CSSPropertyWebkitMaskImage: |
340 case CSSPropertyWebkitMaskRepeat: | 357 case CSSPropertyWebkitMaskRepeat: |
341 case CSSPropertyWebkitMaskPosition: | 358 case CSSPropertyWebkitMaskPosition: |
342 case CSSPropertyWebkitMaskClip: | 359 case CSSPropertyWebkitMaskClip: |
343 case CSSPropertyWebkitMaskOrigin: | 360 case CSSPropertyWebkitMaskOrigin: |
344 shorthandPropertyID = CSSPropertyWebkitMask; | 361 shorthandPropertyID = CSSPropertyWebkitMask; |
345 break; | 362 break; |
363 case CSSPropertyVariable: | |
364 result.append(getCustomPropertyText(property, numDecls++)); | |
365 continue; | |
346 case CSSPropertyAll: | 366 case CSSPropertyAll: |
347 result.append(getPropertyText(propertyID, property.value()->cssText( ), property.isImportant(), numDecls++)); | 367 result.append(getPropertyText(propertyID, property.value()->cssText( ), property.isImportant(), numDecls++)); |
348 continue; | 368 continue; |
349 default: | 369 default: |
350 break; | 370 break; |
351 } | 371 } |
352 | 372 |
353 unsigned shortPropertyIndex = shorthandPropertyID - firstCSSProperty; | 373 unsigned shortPropertyIndex = shorthandPropertyID - firstCSSProperty; |
354 if (shorthandPropertyID) { | 374 if (shorthandPropertyID) { |
355 if (shorthandPropertyUsed.get(shortPropertyIndex)) | 375 if (shorthandPropertyUsed.get(shortPropertyIndex)) |
(...skipping 615 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
971 isInitialValue = false; | 991 isInitialValue = false; |
972 if (!value->isInheritedValue()) | 992 if (!value->isInheritedValue()) |
973 isInheritedValue = false; | 993 isInheritedValue = false; |
974 if (isImportant != m_propertySet.propertyIsImportant(shorthand.propertie s()[i])) | 994 if (isImportant != m_propertySet.propertyIsImportant(shorthand.propertie s()[i])) |
975 return false; | 995 return false; |
976 } | 996 } |
977 return isInitialValue || isInheritedValue; | 997 return isInitialValue || isInheritedValue; |
978 } | 998 } |
979 | 999 |
980 } | 1000 } |
OLD | NEW |