Replace CSSPropertyNames.in with a JSON file
authordbates@webkit.org <dbates@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 28 Nov 2016 19:11:38 +0000 (19:11 +0000)
committerdbates@webkit.org <dbates@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 28 Nov 2016 19:11:38 +0000 (19:11 +0000)
commit02a342257352f9ed0173df33edb5db15512392d6
tree7be28c45ed1251af2fc7e5add0203b45ad6aad37
parent22a0caf3e0312390acb932dd9eb212e17474d9d4
Replace CSSPropertyNames.in with a JSON file
https://bugs.webkit.org/show_bug.cgi?id=164691

Reviewed by Simon Fraser.

Convert CSSPropertyNames.in to a structured JSON file. This is the first step towards
exposing a CSS feature status dashboard and generating more of the boilerplate code
for a CSS property.

A side effect of this change is that makeprop.pl no longer detects duplicate CSS property
definitions. We will look to bring such duplication detection back in a subsequent
commit.

* CMakeLists.txt: Substitute CSSProperties.json for CSSPropertyNames.in and update the
invocation of makeprop.pl as we no longer need to pass the bindings/scripts/preprocessor.pm
Perl module. Makeprop.pl supports conditional CSS properties and values without the need
to preprocess CSSProperties.json using the C preprocessor.
* DerivedSources.make: Ditto. Pass WTF_PLATFORM_IOS to makeprop.pl when building for iOS
as we no longer make use of bindings/scripts/preprocessor.pm.
* css/CSSProperties.json: Added.
* css/CSSPropertyNames.in: Removed.
* css/StyleResolver.cpp: Remove variable lastHighPriorityProperty as we now generate it.
* css/makeprop.pl: Extracted the input file name, now CSSProperties.json, into a global variable
and referenced this variable throughout this script instead of hardcoding the input file name at
each call site. Updated code to handle CSS longhand names being encoded in a JSON array as opposed
to a string of '|'-separated values. I added a FIXME comment to do the same for the codegen property
"custom". Fixed Perl uninitialized variable warnings when die()-ing with error "Unknown CSS property
used in all shorthand ..." or "Unknown CSS property used in longhands ...".
(isPropertyEnabled): Added. Determine whether code should be generated for a property.
(addProperty): Added.
(sortByDescendingPriorityAndName): Added.
(getScopeForFunction): Lowercase option names so that we can use a consistent case throughout
the JSON file.
(getNameForMethods): Ditto.
(generateColorValueSetter):
(generateAnimationPropertyInitialValueSetter): Ditto.
(generateAnimationPropertyInheritValueSetter): Ditto.
(generateFillLayerPropertyInitialValueSetter): Ditto.
(generateFillLayerPropertyInheritValueSetter): Ditto.
(generateSetValueStatement): Ditto.
(generateInitialValueSetter): Ditto.
(generateInheritValueSetter): Ditto.
(generateValueSetter): Ditto.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@209001 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Source/WebCore/CMakeLists.txt
Source/WebCore/ChangeLog
Source/WebCore/DerivedSources.make
Source/WebCore/css/CSSProperties.json [new file with mode: 0644]
Source/WebCore/css/CSSPropertyNames.in [deleted file]
Source/WebCore/css/StyleResolver.cpp
Source/WebCore/css/makeprop.pl