<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[209001] trunk/Source/WebCore</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/209001">209001</a></dd>
<dt>Author</dt> <dd>dbates@webkit.org</dd>
<dt>Date</dt> <dd>2016-11-28 11:11:38 -0800 (Mon, 28 Nov 2016)</dd>
</dl>
<h3>Log Message</h3>
<pre>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.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreCMakeListstxt">trunk/Source/WebCore/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreDerivedSourcesmake">trunk/Source/WebCore/DerivedSources.make</a></li>
<li><a href="#trunkSourceWebCorecssStyleResolvercpp">trunk/Source/WebCore/css/StyleResolver.cpp</a></li>
<li><a href="#trunkSourceWebCorecssmakeproppl">trunk/Source/WebCore/css/makeprop.pl</a></li>
</ul>
<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWebCorecssCSSPropertiesjson">trunk/Source/WebCore/css/CSSProperties.json</a></li>
</ul>
<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceWebCorecssCSSPropertyNamesin">trunk/Source/WebCore/css/CSSPropertyNames.in</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/CMakeLists.txt (209000 => 209001)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/CMakeLists.txt        2016-11-28 18:28:50 UTC (rev 209000)
+++ trunk/Source/WebCore/CMakeLists.txt        2016-11-28 19:11:38 UTC (rev 209001)
</span><span class="lines">@@ -3002,7 +3002,7 @@
</span><span class="cx"> endif ()
</span><span class="cx">
</span><span class="cx"> set(WebCore_CSS_PROPERTY_NAMES
</span><del>- ${WEBCORE_DIR}/css/CSSPropertyNames.in
</del><ins>+ ${WEBCORE_DIR}/css/CSSProperties.json
</ins><span class="cx"> )
</span><span class="cx">
</span><span class="cx"> set(WebCore_CSS_VALUE_KEYWORDS
</span><span class="lines">@@ -3602,12 +3602,12 @@
</span><span class="cx">
</span><span class="cx"> # Generate CSS property names
</span><span class="cx"> add_custom_command(
</span><del>- OUTPUT ${DERIVED_SOURCES_WEBCORE_DIR}/CSSPropertyNames.in ${DERIVED_SOURCES_WEBCORE_DIR}/CSSPropertyNames.h ${DERIVED_SOURCES_WEBCORE_DIR}/CSSPropertyNames.cpp ${DERIVED_SOURCES_WEBCORE_DIR}/CSSPropertyNames.gperf ${DERIVED_SOURCES_WEBCORE_DIR}/StyleBuilder.cpp ${DERIVED_SOURCES_WEBCORE_DIR}/StylePropertyShorthandFunctions.h ${DERIVED_SOURCES_WEBCORE_DIR}/StylePropertyShorthandFunctions.cpp
</del><ins>+ OUTPUT ${DERIVED_SOURCES_WEBCORE_DIR}/CSSProperties.json ${DERIVED_SOURCES_WEBCORE_DIR}/CSSPropertyNames.h ${DERIVED_SOURCES_WEBCORE_DIR}/CSSPropertyNames.cpp ${DERIVED_SOURCES_WEBCORE_DIR}/CSSPropertyNames.gperf ${DERIVED_SOURCES_WEBCORE_DIR}/StyleBuilder.cpp ${DERIVED_SOURCES_WEBCORE_DIR}/StylePropertyShorthandFunctions.h ${DERIVED_SOURCES_WEBCORE_DIR}/StylePropertyShorthandFunctions.cpp
</ins><span class="cx"> MAIN_DEPENDENCY ${WEBCORE_DIR}/css/makeprop.pl
</span><span class="cx"> DEPENDS ${WebCore_CSS_PROPERTY_NAMES}
</span><span class="cx"> WORKING_DIRECTORY ${DERIVED_SOURCES_WEBCORE_DIR}
</span><del>- COMMAND ${PERL_EXECUTABLE} -ne "print" ${WebCore_CSS_PROPERTY_NAMES} > ${DERIVED_SOURCES_WEBCORE_DIR}/CSSPropertyNames.in
- COMMAND ${PERL_EXECUTABLE} ${WEBCORE_DIR}/css/makeprop.pl --defines "${FEATURE_DEFINES_WITH_SPACE_SEPARATOR}" --preprocessor "${CODE_GENERATOR_PREPROCESSOR}" --gperf-executable "${GPERF_EXECUTABLE}"
</del><ins>+ COMMAND ${PERL_EXECUTABLE} -ne "print" ${WebCore_CSS_PROPERTY_NAMES} > ${DERIVED_SOURCES_WEBCORE_DIR}/CSSProperties.json
+ COMMAND ${PERL_EXECUTABLE} ${WEBCORE_DIR}/css/makeprop.pl --defines "${FEATURE_DEFINES_WITH_SPACE_SEPARATOR}" --gperf-executable "${GPERF_EXECUTABLE}"
</ins><span class="cx"> VERBATIM)
</span><span class="cx"> list(APPEND WebCore_DERIVED_SOURCES ${DERIVED_SOURCES_WEBCORE_DIR}/CSSPropertyNames.cpp)
</span><span class="cx"> list(APPEND WebCore_DERIVED_SOURCES ${DERIVED_SOURCES_WEBCORE_DIR}/StyleBuilder.cpp)
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (209000 => 209001)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-11-28 18:28:50 UTC (rev 209000)
+++ trunk/Source/WebCore/ChangeLog        2016-11-28 19:11:38 UTC (rev 209001)
</span><span class="lines">@@ -1,3 +1,49 @@
</span><ins>+2016-11-28 Daniel Bates <dabates@apple.com>
+
+ 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.
+
</ins><span class="cx"> 2016-11-28 Dave Hyatt <hyatt@apple.com>
</span><span class="cx">
</span><span class="cx"> [CSS Parser] Support -webkit-animation-trigger
</span></span></pre></div>
<a id="trunkSourceWebCoreDerivedSourcesmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/DerivedSources.make (209000 => 209001)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/DerivedSources.make        2016-11-28 18:28:50 UTC (rev 209000)
+++ trunk/Source/WebCore/DerivedSources.make        2016-11-28 19:11:38 UTC (rev 209001)
</span><span class="lines">@@ -932,18 +932,27 @@
</span><span class="cx">
</span><span class="cx"> # --------
</span><span class="cx">
</span><ins>+ADDITIONAL_CSS_PROPERTIES_DEFINES :=
+
+ifeq ($(WTF_PLATFORM_IOS), 1)
+ ADDITIONAL_CSS_PROPERTIES_DEFINES := WTF_PLATFORM_IOS
+endif
+
+# --------
+
</ins><span class="cx"> # CSS property names and value keywords
</span><span class="cx">
</span><del>-WEBCORE_CSS_PROPERTY_NAMES := $(WebCore)/css/CSSPropertyNames.in
</del><ins>+WEBCORE_CSS_PROPERTY_NAMES := $(WebCore)/css/CSSProperties.json
</ins><span class="cx"> WEBCORE_CSS_VALUE_KEYWORDS := $(WebCore)/css/CSSValueKeywords.in
</span><span class="cx"> WEBCORE_CSS_VALUE_KEYWORDS := $(WEBCORE_CSS_VALUE_KEYWORDS) $(WebCore)/css/SVGCSSValueKeywords.in
</span><span class="cx"> WEBCORE_CSS_VALUE_KEYWORDS_DEFINES := $(FEATURE_DEFINES) $(ADDITIONAL_CSS_VALUE_KEYWORDS_DEFINES)
</span><ins>+WEBCORE_CSS_PROPERTIES_DEFINES := $(FEATURE_DEFINES) $(ADDITIONAL_CSS_PROPERTIES_DEFINES)
</ins><span class="cx">
</span><span class="cx"> CSSPropertyNames.h CSSPropertyNames.cpp StyleBuilder.cpp StylePropertyShorthandFunctions.h StylePropertyShorthandFunctions.cpp : makeprop.intermediate
</span><span class="cx"> .INTERMEDIATE : makeprop.intermediate
</span><del>-makeprop.intermediate : $(WEBCORE_CSS_PROPERTY_NAMES) css/makeprop.pl bindings/scripts/preprocessor.pm $(PLATFORM_FEATURE_DEFINES)
-        $(PERL) -pe '' $(WEBCORE_CSS_PROPERTY_NAMES) > CSSPropertyNames.in
-        $(PERL) "$(WebCore)/css/makeprop.pl" --defines "$(FEATURE_DEFINES)"
</del><ins>+makeprop.intermediate : $(WEBCORE_CSS_PROPERTY_NAMES) css/makeprop.pl $(PLATFORM_FEATURE_DEFINES)
+        $(PERL) -pe '' $(WEBCORE_CSS_PROPERTY_NAMES) > CSSProperties.json
+        $(PERL) "$(WebCore)/css/makeprop.pl" --defines "$(WEBCORE_CSS_PROPERTIES_DEFINES)"
</ins><span class="cx">
</span><span class="cx"> CSSValueKeywords.h CSSValueKeywords.cpp : makevalues.intermediate
</span><span class="cx"> .INTERMEDIATE : makevalues.intermediate
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSPropertiesjson"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/css/CSSProperties.json (0 => 209001)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSProperties.json         (rev 0)
+++ trunk/Source/WebCore/css/CSSProperties.json        2016-11-28 19:11:38 UTC (rev 209001)
</span><span class="lines">@@ -0,0 +1,4151 @@
</span><ins>+{
+ "instructions": [
+ "CSS Properties",
+ "",
+ "Some properties are used internally, but are not part of CSS. They are used to get",
+ "HTML4 compatibility in the rendering engine.",
+ "",
+ "Microsoft extensions are documented here:",
+ "http://msdn.microsoft.com/workshop/author/css/reference/attributes.asp",
+ "",
+ "1. Possible Keys",
+ "",
+ "Keys that control CSS behavior:",
+ "",
+ "* inherited:",
+ "Whether the property is inherited.",
+ "",
+ "* animatable:",
+ "Indicates that this CSS property is an animation / transition property.",
+ "It must have corresponding methods on the Animation class.",
+ "",
+ "Keys that control code generation:",
+ "",
+ "* initial:",
+ "Overrides the method name on RenderStyle to get the initial value for",
+ "the property. By default, \"initial\" + PropertyId is used (e.g.",
+ "initialBorderCollapse()).",
+ "",
+ "* getter:",
+ "Overrides the method name on RenderStyle to get the current value for",
+ "the property. By default, the PropertyId with first letter lowercased",
+ "is used (e.g. borderCollapse()).",
+ "",
+ "* setter:",
+ "Overrides the method name on RenderStyle to set the current value for",
+ "the property. By default, \"set\" + PropertyId is used (e.g.",
+ "setBorderCollapse()).",
+ "",
+ "* name-for-methods:",
+ "Overrides the getter / setter / initial method names on RenderStyle.",
+ "For example, '\"name-for-methods\": \"OverflowWrap\"' will use",
+ "\"overflowWrap() / setOverflowWrap() / initialOverflowWrap()\".",
+ "",
+ "* converter:",
+ "The name of the converter helper function in css/StyleBuilderConverter.h",
+ "to use. The converter helper function takes ",
+ "If converting the input CSSValue into the setter method argument type",
+ "is not trivial (i.e. the CSSPrimitiveValue cannot be implicitly converted",
+ "to the expected type), then you can indicate that a converter helper",
+ "function in css/StyleBuilderConverter.h should be used.",
+ "",
+ "* conditional-converter:",
+ "Similar to property converter, but the converter function returns a",
+ "WTF::Optional<> to indicate if the property setter should be called",
+ "or not.",
+ "",
+ "* custom:",
+ "A string that is \"All\", \"Initial\", \"Inherit\", or \"Value\" or some combination",
+ "of the latter three separated by '|' (e.g. \"Inherit|Value\"). These options",
+ "are described as follows:",
+ "",
+ "All - the CSS property requires special handling to set its initial value,",
+ "inherit value, and its value. Prefer this option over listing the individual",
+ "options.",
+ "",
+ "Initial - the CSS property requires special handling to set its initial value.",
+ "",
+ "Inherit - the CSS property requires special handling to set its inherit value.",
+ "",
+ "Value - the CSS property requires special handling to set its value, and a",
+ "regular converter helper cannot be used.",
+ "",
+ "The custom code for the property should be located in css/StyleBuilderCustom.h",
+ "and named applyValue[CSSPropertyName]().",
+ "",
+ "* svg:",
+ "Indicates that this is an SVG CSS property and that the corresponding",
+ "methods are on SVGRenderStyle instead of RenderStyle.",
+ "",
+ "* auto-functions:",
+ "Indicates that this CSS property requires handling of \"auto\" and has",
+ "corresponding hasAutoXXX() / setHasAutoXXX() methods on RenderStyle.",
+ "",
+ "* visited-link-color-support:",
+ "Indicates that this CSS property is a color property with a",
+ "\"setVisitedLinkXXX()\" setter on RenderStyle to be called when",
+ "StyleResolver::applyPropertyToVisitedLinkStyle() return true.",
+ "The regular setter on RenderStyle will only be called if",
+ "StyleResolver::applyPropertyToRegularStyle() returns true.",
+ "",
+ "* no-default-color:",
+ "Should only with used with \"VisitedLinkColorSupport\". It indicates that for",
+ "setting the inherited value, it will not fallback to using the parent's",
+ "\"color\" property if the inherited color is invalid.",
+ "",
+ "* fone-property:",
+ "Indicates that this CSS property is font-related. It must have corresponding",
+ "methods on the FontDescription class.",
+ "",
+ "* fill-layer-property:",
+ "Indicates that this CSS property is a FillLayer property. It must have",
+ "corresponding methods on the FillLayer class.",
+ "",
+ "* skip-builder:",
+ "Ignore this property in the StyleBuilder.",
+ "",
+ "* longhands:",
+ "Indicated the array longhand property names associated with this shorthand",
+ "property. Shorthand properties should not use the StyleBuilder. An",
+ "ASSERT_NOT_REACHED() will be generated for this property in the StyleBuilder.",
+ "property1, property2, ... are the longhands for this shorthand property. A",
+ "corresponding \"StylePropertyShorthand propertyIdShorthand()\" function will be",
+ "generated in StylePropertyShorthandFunctions.h header.",
+ "",
+ "* high-priority:",
+ "Whether the property needs to be applied before non-high-priority properties",
+ "in CSS cascading order.",
+ "",
+ "* aliases:",
+ "An array of the alternative names for this property.",
+ "",
+ "* enable-if:",
+ "Indicates that code should only be generated for this property/value if the",
+ "specified macro define is enabled. Prefix the macro define with '!' to",
+ "generate code when the macro define is not enabled.",
+ "",
+ "2. Lesser known capabilities of this file format",
+ "",
+ "Conditional CSS keyword value:",
+ "",
+ "Typically the value of key \"values\" is an array of strings that represent the",
+ "CSS keyword values that are recognized by a CSS property. This array may also",
+ "contain objects of the form:",
+ "",
+ " {",
+ " \"value\": \"awesome\",",
+ " \"enable-if\": \"ENABLE_AWESOME_FEATURE\"",
+ " }",
+ "",
+ "The key \"value\" is the name of the conditional keyword and key \"enable-if\"",
+ "describes the code generation criterion. See the documentation for \"enable-if\"",
+ "above for more details.",
+ "",
+ "Conditonal CSS property definition:",
+ "",
+ "A CSS property can have more than one definition so long as the key \"enable-if\"",
+ "differs in each definition. For example, ",
+ "",
+ " \"awesome-property\": [",
+ " {",
+ " \"inherited\": true,",
+ " ...,",
+ " \"codegen-properties\": {",
+ " ...",
+ " \"enable-if\": \"ENABLE_AWESOME_FEATURE\"",
+ " }",
+ " },",
+ " {",
+ " \"inherited\": false,",
+ " ...,",
+ " \"codegen-properties\": {",
+ " ...",
+ " \"enable-if\": \"!ENABLE_AWESOME_FEATURE\"",
+ " }",
+ " },",
+ " ...",
+ " ],",
+ "",
+ "The first definition in parse order whose \"enable-if\" criterion evaluates",
+ "to true is chosen for code generation."
+ ],
+ "properties": {
+ "color": {
+ "inherited": true,
+ "codegen-properties": {
+ "visited-link-color-support": true,
+ "no-default-color": true,
+ "high-priority": true
+ }
+ },
+ "direction": {
+ "inherited": true,
+ "values": [
+ "ltr",
+ "rtl"
+ ],
+ "codegen-properties": {
+ "custom": "Value",
+ "high-priority": true
+ }
+ },
+ "display": {
+ "values": [
+ "inline",
+ "block",
+ "list-item",
+ "compact",
+ "inline-block",
+ "table",
+ "inline-table",
+ "table-row-group",
+ "table-header-group",
+ "table-footer-group",
+ "table-row",
+ "table-column-group",
+ "table-column",
+ "table-cell",
+ "table-caption",
+ "-webkit-box",
+ "-webkit-inline-box",
+ "flex",
+ "-webkit-flex",
+ "inline-flex",
+ "-webkit-inline-flex",
+ "contents",
+ "none",
+ {
+ "value": "grid",
+ "enable-if": "ENABLE_CSS_GRID_LAYOUT"
+ },
+ {
+ "value": "inline-grid",
+ "enable-if": "ENABLE_CSS_GRID_LAYOUT"
+ }
+ ],
+ "codegen-properties": {
+ "custom": "Inherit|Value",
+ "high-priority": true
+ }
+ },
+ "font-family": {
+ "inherited": true,
+ "codegen-properties": {
+ "custom": "All",
+ "high-priority": true
+ }
+ },
+ "font-size": {
+ "inherited": true,
+ "codegen-properties": {
+ "custom": "All",
+ "high-priority": true
+ }
+ },
+ "font-style": {
+ "inherited": true,
+ "values": [
+ "normal",
+ "italic",
+ "oblique"
+ ],
+ "codegen-properties": {
+ "name-for-methods": "Italic",
+ "font-property": true,
+ "high-priority": true
+ }
+ },
+ "font-weight": {
+ "inherited": true,
+ "codegen-properties": {
+ "custom": "All",
+ "high-priority": true
+ }
+ },
+ "text-rendering": {
+ "inherited": true,
+ "values": [
+ "auto",
+ "optimizespeed",
+ "optimizelegibility",
+ "geometricprecision"
+ ],
+ "codegen-properties": {
+ "name-for-methods": "TextRenderingMode",
+ "font-property": true,
+ "high-priority": true
+ }
+ },
+ "font-feature-settings": {
+ "inherited": true,
+ "codegen-properties": {
+ "name-for-methods": "FeatureSettings",
+ "converter": "FontFeatureSettings",
+ "custom": "Initial|Inherit",
+ "font-property": true,
+ "high-priority": true
+ }
+ },
+ "font-variation-settings": {
+ "inherited": true,
+ "codegen-properties": {
+ "name-for-methods": "VariationSettings",
+ "converter": "FontVariationSettings",
+ "custom": "Initial|Inherit",
+ "font-property": true,
+ "high-priority": true,
+ "enable-if": "ENABLE_VARIATION_FONTS"
+ }
+ },
+ "-webkit-font-kerning": {
+ "inherited": true,
+ "values": [
+ "auto",
+ "normal",
+ "none"
+ ],
+ "codegen-properties": {
+ "aliases": [
+ "font-kerning"
+ ],
+ "name-for-methods": "Kerning",
+ "font-property": true,
+ "high-priority": true
+ }
+ },
+ "-webkit-font-smoothing": {
+ "inherited": true,
+ "values": [
+ "auto",
+ "none",
+ "antialiased",
+ "subpixel-antialiased"
+ ],
+ "codegen-properties": {
+ "font-property": true,
+ "high-priority": true
+ }
+ },
+ "font-variant-ligatures": {
+ "inherited": true,
+ "codegen-properties": {
+ "name-for-methods": "VariantLigatures",
+ "custom": "All",
+ "font-property": true,
+ "high-priority": true
+ }
+ },
+ "font-variant-position": {
+ "inherited": true,
+ "values": [
+ "normal",
+ "sub",
+ "super"
+ ],
+ "codegen-properties": {
+ "name-for-methods": "VariantPosition",
+ "font-property": true,
+ "high-priority": true
+ }
+ },
+ "font-variant-caps": {
+ "inherited": true,
+ "values": [
+ "normal",
+ "small-caps",
+ "all-small-caps",
+ "petite-caps",
+ "all-petite-caps",
+ "unicase",
+ "titling-caps"
+ ],
+ "codegen-properties": {
+ "name-for-methods": "VariantCaps",
+ "font-property": true,
+ "high-priority": true
+ }
+ },
+ "font-variant-numeric": {
+ "inherited": true,
+ "codegen-properties": {
+ "name-for-methods": "VariantNumeric",
+ "custom": "All",
+ "font-property": true,
+ "high-priority": true
+ }
+ },
+ "font-variant-alternates": {
+ "inherited": true,
+ "values": [
+ "normal",
+ "historical-forms"
+ ],
+ "codegen-properties": {
+ "name-for-methods": "VariantAlternates",
+ "font-property": true,
+ "high-priority": true
+ }
+ },
+ "font-variant-east-asian": {
+ "inherited": true,
+ "codegen-properties": {
+ "name-for-methods": "VariantEastAsian",
+ "custom": "All",
+ "font-property": true,
+ "high-priority": true
+ }
+ },
+ "-webkit-locale": {
+ "inherited": true,
+ "codegen-properties": {
+ "custom": "Value",
+ "font-property": true,
+ "high-priority": true
+ }
+ },
+ "-webkit-text-orientation": {
+ "inherited": true,
+ "values": [
+ "sideways",
+ "sideways-right",
+ "vertical-right",
+ "mixed",
+ "upright"
+ ],
+ "codegen-properties": {
+ "aliases": [
+ "-epub-text-orientation"
+ ],
+ "custom": "Value",
+ "high-priority": true
+ }
+ },
+ "-webkit-text-size-adjust": {
+ "inherited": true,
+ "codegen-properties": {
+ "custom": "Value",
+ "high-priority": true,
+ "enable-if": "ENABLE_TEXT_AUTOSIZING"
+ }
+ },
+ "writing-mode": {
+ "inherited": true,
+ "values": [
+ "lr-tb",
+ "rl-tb",
+ "tb-rl",
+ "lr",
+ "rl",
+ "tb"
+ ],
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-writing-mode",
+ "-epub-writing-mode"
+ ],
+ "custom": "Value",
+ "high-priority": true
+ }
+ },
+ "-webkit-text-zoom": {
+ "inherited": true,
+ "values": [
+ "normal",
+ "reset"
+ ],
+ "codegen-properties": {
+ "custom": "Value",
+ "high-priority": true
+ }
+ },
+ "zoom": {
+ "codegen-properties": {
+ "custom": "All",
+ "high-priority": true
+ }
+ },
+ "font-synthesis": {
+ "inherited": true,
+ "codegen-properties": {
+ "converter": "FontSynthesis",
+ "font-property": true,
+ "high-priority": true
+ }
+ },
+ "-webkit-ruby-position": {
+ "*": [
+ "This is the highest priority property and \"is resolved before all other properties",
+ "to ensure that its value can be checked when determining a smart default font size\"",
+ "(<https://trac.webkit.org/browser/trunk/Source/WebCore/ChangeLog?rev=172861>)."
+ ],
+ "inherited": true,
+ "values": [
+ "before",
+ "after",
+ "inter-character"
+ ]
+ },
+ "alignment-baseline": {
+ "values": [
+ "auto",
+ "baseline",
+ "middle",
+ "before-edge",
+ "after-edge",
+ "central",
+ "text-before-edge",
+ "text-after-edge",
+ "ideographic",
+ "hanging",
+ "mathematical"
+ ],
+ "codegen-properties": {
+ "svg": true
+ }
+ },
+ "all": {
+ "codegen-properties": {
+ "longhands": [
+ "all"
+ ]
+ }
+ },
+ "animation": {
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-animation"
+ ],
+ "longhands": [
+ "animation-name",
+ "animation-duration",
+ "animation-timing-function",
+ "animation-delay",
+ "animation-iteration-count",
+ "animation-direction",
+ "animation-fill-mode",
+ "animation-play-state"
+ ]
+ }
+ },
+ "animation-delay": {
+ "animatable": true,
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-animation-delay"
+ ],
+ "name-for-methods": "Delay"
+ }
+ },
+ "animation-direction": {
+ "animatable": true,
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-animation-direction"
+ ],
+ "name-for-methods": "Direction"
+ }
+ },
+ "animation-duration": {
+ "animatable": true,
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-animation-duration"
+ ],
+ "name-for-methods": "Duration"
+ }
+ },
+ "animation-fill-mode": {
+ "animatable": true,
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-animation-fill-mode"
+ ],
+ "name-for-methods": "FillMode"
+ }
+ },
+ "animation-iteration-count": {
+ "animatable": true,
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-animation-iteration-count"
+ ],
+ "name-for-methods": "IterationCount"
+ }
+ },
+ "animation-name": {
+ "animatable": true,
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-animation-name"
+ ],
+ "name-for-methods": "Name"
+ }
+ },
+ "animation-play-state": {
+ "animatable": true,
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-animation-play-state"
+ ],
+ "name-for-methods": "PlayState"
+ }
+ },
+ "animation-timing-function": {
+ "animatable": true,
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-animation-timing-function"
+ ],
+ "name-for-methods": "TimingFunction"
+ }
+ },
+ "background": {
+ "codegen-properties": {
+ "longhands": [
+ "background-image",
+ "background-position-x",
+ "background-position-y",
+ "background-size",
+ "background-repeat-x",
+ "background-repeat-y",
+ "background-attachment",
+ "background-origin",
+ "background-clip",
+ "background-color"
+ ]
+ }
+ },
+ "background-attachment": {
+ "codegen-properties": {
+ "name-for-methods": "Attachment",
+ "fill-layer-property": true
+ }
+ },
+ "background-blend-mode": {
+ "codegen-properties": {
+ "name-for-methods": "BlendMode",
+ "fill-layer-property": true
+ }
+ },
+ "background-clip": {
+ "codegen-properties": {
+ "name-for-methods": "Clip",
+ "fill-layer-property": true
+ }
+ },
+ "background-color": {
+ "codegen-properties": {
+ "visited-link-color-support": true,
+ "no-default-color": true
+ }
+ },
+ "background-image": {
+ "codegen-properties": {
+ "name-for-methods": "Image",
+ "fill-layer-property": true
+ }
+ },
+ "background-origin": {
+ "codegen-properties": {
+ "name-for-methods": "Origin",
+ "fill-layer-property": true
+ }
+ },
+ "background-position": {
+ "codegen-properties": {
+ "longhands": [
+ "background-position-x",
+ "background-position-y"
+ ]
+ }
+ },
+ "background-position-x": {
+ "codegen-properties": {
+ "name-for-methods": "XPosition",
+ "fill-layer-property": true
+ }
+ },
+ "background-position-y": {
+ "codegen-properties": {
+ "name-for-methods": "YPosition",
+ "fill-layer-property": true
+ }
+ },
+ "background-repeat": {
+ "codegen-properties": {
+ "longhands": [
+ "background-repeat-x",
+ "background-repeat-y"
+ ]
+ }
+ },
+ "background-repeat-x": {
+ "codegen-properties": {
+ "name-for-methods": "RepeatX",
+ "fill-layer-property": true
+ }
+ },
+ "background-repeat-y": {
+ "codegen-properties": {
+ "name-for-methods": "RepeatY",
+ "fill-layer-property": true
+ }
+ },
+ "background-size": {
+ "codegen-properties": {
+ "name-for-methods": "Size",
+ "fill-layer-property": true
+ }
+ },
+ "baseline-shift": {
+ "codegen-properties": {
+ "custom": "Value",
+ "svg": true
+ }
+ },
+ "border": {
+ "codegen-properties": {
+ "longhands": [
+ "border-top-color",
+ "border-top-style",
+ "border-top-width",
+ "border-right-color",
+ "border-right-style",
+ "border-right-width",
+ "border-bottom-color",
+ "border-bottom-style",
+ "border-bottom-width",
+ "border-left-color",
+ "border-left-style",
+ "border-left-width"
+ ]
+ }
+ },
+ "border-bottom": {
+ "codegen-properties": {
+ "longhands": [
+ "border-bottom-width",
+ "border-bottom-style",
+ "border-bottom-color"
+ ]
+ }
+ },
+ "border-bottom-color": {
+ "codegen-properties": {
+ "initial": "invalidColor",
+ "visited-link-color-support": true
+ }
+ },
+ "border-bottom-left-radius": {
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-border-bottom-left-radius"
+ ],
+ "initial": "initialBorderRadius",
+ "converter": "Radius"
+ }
+ },
+ "border-bottom-right-radius": {
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-border-bottom-right-radius"
+ ],
+ "initial": "initialBorderRadius",
+ "converter": "Radius"
+ }
+ },
+ "border-bottom-style": {
+ "values": [
+ "none",
+ "hidden",
+ "inset",
+ "groove",
+ "outset",
+ "ridge",
+ "dotted",
+ "dashed",
+ "solid",
+ "double"
+ ],
+ "codegen-properties": {
+ "initial": "initialBorderStyle"
+ }
+ },
+ "border-bottom-width": {
+ "codegen-properties": {
+ "initial": "initialBorderWidth",
+ "converter": "LineWidth<float>"
+ }
+ },
+ "border-collapse": {
+ "inherited": true,
+ "values": [
+ "collapse",
+ "separate"
+ ]
+ },
+ "border-color": {
+ "codegen-properties": {
+ "longhands": [
+ "border-top-color",
+ "border-right-color",
+ "border-bottom-color",
+ "border-left-color"
+ ]
+ }
+ },
+ "border-image": {
+ "codegen-properties": {
+ "longhands": [
+ "border-image-source",
+ "border-image-slice",
+ "border-image-width",
+ "border-image-outset",
+ "border-image-repeat"
+ ]
+ }
+ },
+ "border-image-outset": {
+ "codegen-properties": {
+ "custom": "All"
+ }
+ },
+ "border-image-repeat": {
+ "codegen-properties": {
+ "custom": "All"
+ }
+ },
+ "border-image-slice": {
+ "codegen-properties": {
+ "custom": "All"
+ }
+ },
+ "border-image-source": {
+ "codegen-properties": {
+ "converter": "StyleImage<CSSPropertyBorderImageSource>"
+ }
+ },
+ "border-image-width": {
+ "codegen-properties": {
+ "custom": "All"
+ }
+ },
+ "border-left": {
+ "codegen-properties": {
+ "longhands": [
+ "border-left-width",
+ "border-left-style",
+ "border-left-color"
+ ]
+ }
+ },
+ "border-left-color": {
+ "codegen-properties": {
+ "initial": "invalidColor",
+ "visited-link-color-support": true
+ }
+ },
+ "border-left-style": {
+ "values": [
+ "none",
+ "hidden",
+ "inset",
+ "groove",
+ "outset",
+ "ridge",
+ "dotted",
+ "dashed",
+ "solid",
+ "double"
+ ],
+ "codegen-properties": {
+ "initial": "initialBorderStyle"
+ }
+ },
+ "border-left-width": {
+ "codegen-properties": {
+ "initial": "initialBorderWidth",
+ "converter": "LineWidth<float>"
+ }
+ },
+ "border-radius": {
+ "codegen-properties": {
+ "longhands": [
+ "border-top-left-radius",
+ "border-top-right-radius",
+ "border-bottom-right-radius",
+ "border-bottom-left-radius"
+ ]
+ }
+ },
+ "border-right": {
+ "codegen-properties": {
+ "longhands": [
+ "border-right-width",
+ "border-right-style",
+ "border-right-color"
+ ]
+ }
+ },
+ "border-right-color": {
+ "codegen-properties": {
+ "initial": "invalidColor",
+ "visited-link-color-support": true
+ }
+ },
+ "border-right-style": {
+ "values": [
+ "none",
+ "hidden",
+ "inset",
+ "groove",
+ "outset",
+ "ridge",
+ "dotted",
+ "dashed",
+ "solid",
+ "double"
+ ],
+ "codegen-properties": {
+ "initial": "initialBorderStyle"
+ }
+ },
+ "border-right-width": {
+ "codegen-properties": {
+ "initial": "initialBorderWidth",
+ "converter": "LineWidth<float>"
+ }
+ },
+ "border-spacing": {
+ "inherited": true,
+ "codegen-properties": {
+ "longhands": [
+ "-webkit-border-horizontal-spacing",
+ "-webkit-border-vertical-spacing"
+ ]
+ }
+ },
+ "border-style": {
+ "codegen-properties": {
+ "longhands": [
+ "border-top-style",
+ "border-right-style",
+ "border-bottom-style",
+ "border-left-style"
+ ]
+ }
+ },
+ "border-top": {
+ "codegen-properties": {
+ "longhands": [
+ "border-top-width",
+ "border-top-style",
+ "border-top-color"
+ ]
+ }
+ },
+ "border-top-color": {
+ "codegen-properties": {
+ "initial": "invalidColor",
+ "visited-link-color-support": true
+ }
+ },
+ "border-top-left-radius": {
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-border-top-left-radius"
+ ],
+ "initial": "initialBorderRadius",
+ "converter": "Radius"
+ }
+ },
+ "border-top-right-radius": {
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-border-top-right-radius"
+ ],
+ "initial": "initialBorderRadius",
+ "converter": "Radius"
+ }
+ },
+ "border-top-style": {
+ "values": [
+ "none",
+ "hidden",
+ "inset",
+ "groove",
+ "outset",
+ "ridge",
+ "dotted",
+ "dashed",
+ "solid",
+ "double"
+ ],
+ "codegen-properties": {
+ "initial": "initialBorderStyle"
+ }
+ },
+ "border-top-width": {
+ "codegen-properties": {
+ "initial": "initialBorderWidth",
+ "converter": "LineWidth<float>"
+ }
+ },
+ "border-width": {
+ "codegen-properties": {
+ "longhands": [
+ "border-top-width",
+ "border-right-width",
+ "border-bottom-width",
+ "border-left-width"
+ ]
+ }
+ },
+ "bottom": {
+ "codegen-properties": {
+ "initial": "initialOffset",
+ "converter": "LengthOrAuto"
+ }
+ },
+ "box-shadow": {
+ "codegen-properties": {
+ "custom": "All"
+ }
+ },
+ "box-sizing": {
+ "*": [
+ "-webkit-box-sizing worked in Safari 4 and earlier."
+ ],
+ "values": [
+ "border-box",
+ "content-box"
+ ],
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-box-sizing"
+ ]
+ }
+ },
+ "break-after": {
+ "values": [
+ "auto",
+ "avoid",
+ "left",
+ "right",
+ "recto",
+ "verso",
+ "column",
+ "page",
+ "region",
+ "avoid-column",
+ "avoid-page",
+ "avoid-region"
+ ],
+ "codegen-properties": {
+ "initial": "initialBreakBetween"
+ }
+ },
+ "break-before": {
+ "values": [
+ "auto",
+ "avoid",
+ "left",
+ "right",
+ "recto",
+ "verso",
+ "column",
+ "page",
+ "region",
+ "avoid-column",
+ "avoid-page",
+ "avoid-region"
+ ],
+ "codegen-properties": {
+ "initial": "initialBreakBetween"
+ }
+ },
+ "break-inside": {
+ "values": [
+ "auto",
+ "avoid",
+ "avoid-column",
+ "avoid-page",
+ "avoid-region"
+ ],
+ "codegen-properties": {
+ "initial": "initialBreakInside"
+ }
+ },
+ "buffered-rendering": {
+ "values": [
+ "auto",
+ "dynamic",
+ "static"
+ ],
+ "codegen-properties": {
+ "svg": true
+ }
+ },
+ "caption-side": {
+ "inherited": true,
+ "values": [
+ "left",
+ "right",
+ "top",
+ "bottom"
+ ],
+ "codegen-properties": {
+ "aliases": [
+ "-epub-caption-side"
+ ]
+ }
+ },
+ "clear": {
+ "values": [
+ "none",
+ "left",
+ "right",
+ "both"
+ ]
+ },
+ "clip": {
+ "codegen-properties": {
+ "custom": "All"
+ }
+ },
+ "-webkit-clip-path": {
+ "codegen-properties": {
+ "converter": "ClipPath"
+ }
+ },
+ "clip-path": {
+ "codegen-properties": {
+ "name-for-methods": "ClipperResource",
+ "converter": "SVGURIReference",
+ "svg": true
+ }
+ },
+ "clip-rule": {
+ "inherited": true,
+ "values": [
+ "nonzero",
+ "evenodd"
+ ],
+ "codegen-properties": {
+ "svg": true
+ }
+ },
+ "color-interpolation": {
+ "inherited": true,
+ "values": [
+ "auto",
+ "srgb",
+ "linearrgb"
+ ],
+ "codegen-properties": {
+ "svg": true
+ }
+ },
+ "color-interpolation-filters": {
+ "inherited": true,
+ "values": [
+ "auto",
+ "srgb",
+ "linearrgb"
+ ],
+ "codegen-properties": {
+ "svg": true
+ }
+ },
+ "color-profile": {
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "color-rendering": {
+ "inherited": true,
+ "values": [
+ "auto",
+ "optimizespeed",
+ "optimizequality"
+ ],
+ "codegen-properties": {
+ "svg": true
+ }
+ },
+ "content": {
+ "codegen-properties": {
+ "custom": "All"
+ }
+ },
+ "counter-increment": {
+ "codegen-properties": {
+ "custom": "All"
+ }
+ },
+ "counter-reset": {
+ "codegen-properties": {
+ "custom": "All"
+ }
+ },
+ "cursor": {
+ "inherited": true,
+ "codegen-properties": {
+ "custom": "All"
+ }
+ },
+ "-webkit-cursor-visibility": {
+ "inherited": true,
+ "values": [
+ "auto",
+ "auto-hide"
+ ],
+ "codegen-properties": {
+ "enable-if": "ENABLE_CURSOR_VISIBILITY"
+ }
+ },
+ "cx": {
+ "codegen-properties": {
+ "initial": "initialZeroLength",
+ "converter": "Length"
+ }
+ },
+ "cy": {
+ "codegen-properties": {
+ "initial": "initialZeroLength",
+ "converter": "Length"
+ }
+ },
+ "dominant-baseline": {
+ "values": [
+ "auto",
+ "middle",
+ "use-script",
+ "no-change",
+ "reset-size",
+ "central",
+ "text-before-edge",
+ "text-after-edge",
+ "ideographic",
+ "hanging",
+ "mathematical"
+ ],
+ "codegen-properties": {
+ "svg": true
+ }
+ },
+ "empty-cells": {
+ "inherited": true,
+ "values": [
+ "show",
+ "hide"
+ ]
+ },
+ "enable-background": {
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "fill": {
+ "inherited": true,
+ "codegen-properties": {
+ "custom": "All",
+ "svg": true
+ }
+ },
+ "fill-opacity": {
+ "inherited": true,
+ "codegen-properties": {
+ "converter": "Opacity",
+ "svg": true
+ }
+ },
+ "fill-rule": {
+ "inherited": true,
+ "values": [
+ "nonzero",
+ "evenodd"
+ ],
+ "codegen-properties": {
+ "svg": true
+ }
+ },
+ "float": {
+ "values": [
+ "left",
+ "right",
+ "none",
+ "center"
+ ],
+ "codegen-properties": {
+ "name-for-methods": "Floating"
+ }
+ },
+ "flood-color": {
+ "codegen-properties": {
+ "converter": "SVGColor",
+ "svg": true
+ }
+ },
+ "flood-opacity": {
+ "codegen-properties": {
+ "converter": "Opacity",
+ "svg": true
+ }
+ },
+ "font": {
+ "inherited": true,
+ "codegen-properties": {
+ "longhands": [
+ "font-family",
+ "font-size",
+ "font-style",
+ "font-variant-caps",
+ "font-weight",
+ "line-height"
+ ]
+ }
+ },
+ "font-variant": {
+ "inherited": true,
+ "codegen-properties": {
+ "longhands": [
+ "font-variant-ligatures",
+ "font-variant-position",
+ "font-variant-caps",
+ "font-variant-numeric",
+ "font-variant-alternates",
+ "font-variant-east-asian"
+ ]
+ }
+ },
+ "font-stretch": {
+ "values": [],
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "glyph-orientation-horizontal": {
+ "inherited": true,
+ "codegen-properties": {
+ "converter": "GlyphOrientation",
+ "svg": true
+ }
+ },
+ "glyph-orientation-vertical": {
+ "inherited": true,
+ "codegen-properties": {
+ "converter": "GlyphOrientationOrAuto",
+ "svg": true
+ }
+ },
+ "hanging-punctuation": {
+ "inherited": true,
+ "codegen-properties": {
+ "converter": "HangingPunctuation"
+ }
+ },
+ "height": {
+ "codegen-properties": {
+ "initial": "initialSize",
+ "converter": "LengthSizing"
+ }
+ },
+ "image-orientation": {
+ "inherited": true,
+ "codegen-properties": {
+ "enable-if": "ENABLE_CSS_IMAGE_ORIENTATION"
+ }
+ },
+ "image-rendering": {
+ "inherited": true,
+ "values": [
+ "auto",
+ "optimizespeed",
+ "optimizequality",
+ "-webkit-crisp-edges",
+ "-webkit-optimize-contrast",
+ "crisp-edges",
+ "pixelated"
+ ]
+ },
+ "image-resolution": {
+ "inherited": true,
+ "codegen-properties": {
+ "custom": "All",
+ "enable-if": "ENABLE_CSS_IMAGE_RESOLUTION"
+ }
+ },
+ "kerning": {
+ "inherited": true,
+ "codegen-properties": {
+ "converter": "SVGLengthValue",
+ "svg": true
+ }
+ },
+ "left": {
+ "codegen-properties": {
+ "initial": "initialOffset",
+ "converter": "LengthOrAuto"
+ }
+ },
+ "letter-spacing": {
+ "inherited": true,
+ "codegen-properties": {
+ "converter": "Spacing"
+ }
+ },
+ "lighting-color": {
+ "codegen-properties": {
+ "converter": "SVGColor",
+ "svg": true
+ }
+ },
+ "line-height": [
+ {
+ "inherited": true,
+ "codegen-properties": {
+ "custom": "All",
+ "enable-if": "ENABLE_TEXT_AUTOSIZING"
+ }
+ },
+ {
+ "inherited": true,
+ "codegen-properties": {
+ "getter": "specifiedLineHeight",
+ "conditional-converter": "LineHeight",
+ "enable-if": "!ENABLE_TEXT_AUTOSIZING"
+ }
+ }
+ ],
+ "list-style": {
+ "inherited": true,
+ "codegen-properties": {
+ "longhands": [
+ "list-style-type",
+ "list-style-position",
+ "list-style-image"
+ ]
+ }
+ },
+ "list-style-image": {
+ "inherited": true,
+ "codegen-properties": {
+ "converter": "StyleImage<CSSPropertyListStyleImage>"
+ }
+ },
+ "list-style-position": {
+ "inherited": true,
+ "values": [
+ "inside",
+ "outside"
+ ]
+ },
+ "list-style-type": {
+ "inherited": true,
+ "values": [
+ "disc",
+ "circle",
+ "square",
+ "decimal",
+ "decimal-leading-zero",
+ "arabic-indic",
+ "binary",
+ "bengali",
+ "cambodian",
+ "khmer",
+ "devanagari",
+ "gujarati",
+ "gurmukhi",
+ "kannada",
+ "lower-hexadecimal",
+ "lao",
+ "malayalam",
+ "mongolian",
+ "myanmar",
+ "octal",
+ "oriya",
+ "persian",
+ "urdu",
+ "telugu",
+ "tibetan",
+ "thai",
+ "upper-hexadecimal",
+ "lower-roman",
+ "upper-roman",
+ "lower-greek",
+ "lower-alpha",
+ "lower-latin",
+ "upper-alpha",
+ "upper-latin",
+ "afar",
+ "ethiopic-halehame-aa-et",
+ "ethiopic-halehame-aa-er",
+ "amharic",
+ "ethiopic-halehame-am-et",
+ "amharic-abegede",
+ "ethiopic-abegede-am-et",
+ "cjk-earthly-branch",
+ "cjk-heavenly-stem",
+ "ethiopic",
+ "ethiopic-halehame-gez",
+ "ethiopic-abegede",
+ "ethiopic-abegede-gez",
+ "hangul-consonant",
+ "hangul",
+ "lower-norwegian",
+ "oromo",
+ "ethiopic-halehame-om-et",
+ "sidama",
+ "ethiopic-halehame-sid-et",
+ "somali",
+ "ethiopic-halehame-so-et",
+ "tigre",
+ "ethiopic-halehame-tig",
+ "tigrinya-er",
+ "ethiopic-halehame-ti-er",
+ "tigrinya-er-abegede",
+ "ethiopic-abegede-ti-er",
+ "tigrinya-et",
+ "ethiopic-halehame-ti-et",
+ "tigrinya-et-abegede",
+ "ethiopic-abegede-ti-et",
+ "upper-greek",
+ "upper-norwegian",
+ "asterisks",
+ "footnotes",
+ "hebrew",
+ "armenian",
+ "lower-armenian",
+ "upper-armenian",
+ "georgian",
+ "cjk-ideographic",
+ "hiragana",
+ "katakana",
+ "hiragana-iroha",
+ "katakana-iroha",
+ "none"
+ ]
+ },
+ "margin": {
+ "codegen-properties": {
+ "longhands": [
+ "margin-top",
+ "margin-right",
+ "margin-bottom",
+ "margin-left"
+ ]
+ }
+ },
+ "margin-bottom": {
+ "codegen-properties": {
+ "initial": "initialMargin",
+ "converter": "LengthOrAuto"
+ }
+ },
+ "margin-left": {
+ "codegen-properties": {
+ "initial": "initialMargin",
+ "converter": "LengthOrAuto"
+ }
+ },
+ "margin-right": {
+ "codegen-properties": {
+ "initial": "initialMargin",
+ "converter": "LengthOrAuto"
+ }
+ },
+ "margin-top": {
+ "codegen-properties": {
+ "initial": "initialMargin",
+ "converter": "LengthOrAuto"
+ }
+ },
+ "marker": {
+ "inherited": true,
+ "codegen-properties": {
+ "longhands": [
+ "marker-start",
+ "marker-mid",
+ "marker-end"
+ ]
+ }
+ },
+ "marker-end": {
+ "inherited": true,
+ "codegen-properties": {
+ "name-for-methods": "MarkerEndResource",
+ "converter": "SVGURIReference",
+ "svg": true
+ }
+ },
+ "marker-mid": {
+ "inherited": true,
+ "codegen-properties": {
+ "name-for-methods": "MarkerMidResource",
+ "converter": "SVGURIReference",
+ "svg": true
+ }
+ },
+ "marker-start": {
+ "inherited": true,
+ "codegen-properties": {
+ "name-for-methods": "MarkerStartResource",
+ "converter": "SVGURIReference",
+ "svg": true
+ }
+ },
+ "mask": {
+ "codegen-properties": {
+ "name-for-methods": "MaskerResource",
+ "converter": "SVGURIReference",
+ "svg": true
+ }
+ },
+ "mask-type": {
+ "values": [
+ "luminance",
+ "alpha"
+ ],
+ "codegen-properties": {
+ "svg": true
+ }
+ },
+ "max-height": {
+ "codegen-properties": {
+ "initial": "initialMaxSize",
+ "converter": "LengthMaxSizing"
+ }
+ },
+ "max-width": {
+ "codegen-properties": {
+ "initial": "initialMaxSize",
+ "converter": "LengthMaxSizing"
+ }
+ },
+ "min-height": {
+ "codegen-properties": {
+ "initial": "initialMinSize",
+ "converter": "LengthSizing"
+ }
+ },
+ "min-width": {
+ "codegen-properties": {
+ "initial": "initialMinSize",
+ "converter": "LengthSizing"
+ }
+ },
+ "object-fit": {
+ "values": [
+ "fill",
+ "contain",
+ "cover",
+ "none",
+ "scale-down"
+ ]
+ },
+ "object-position": {
+ "codegen-properties": {
+ "converter": "ObjectPosition"
+ }
+ },
+ "opacity": {
+ "*": [
+ "Honor -webkit-opacity as a synonym for opacity. This was the only syntax that worked in Safari 1.1,",
+ "and may be in use on some websites and widgets."
+ ],
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-opacity"
+ ]
+ }
+ },
+ "orphans": {
+ "inherited": true,
+ "codegen-properties": {
+ "auto-functions": true
+ }
+ },
+ "outline": {
+ "codegen-properties": {
+ "longhands": [
+ "outline-color",
+ "outline-style",
+ "outline-width"
+ ]
+ }
+ },
+ "outline-color": {
+ "codegen-properties": {
+ "initial": "invalidColor",
+ "visited-link-color-support": true
+ }
+ },
+ "outline-offset": {
+ "codegen-properties": {
+ "converter": "ComputedLength<float>"
+ }
+ },
+ "outline-style": {
+ "values": [
+ "auto",
+ "none",
+ "inset",
+ "groove",
+ "outset",
+ "ridge",
+ "dotted",
+ "dashed",
+ "solid",
+ "double"
+ ],
+ "codegen-properties": {
+ "custom": "All"
+ }
+ },
+ "outline-width": {
+ "codegen-properties": {
+ "converter": "LineWidth<float>"
+ }
+ },
+ "overflow": {
+ "codegen-properties": {
+ "longhands": [
+ "overflow-x",
+ "overflow-y"
+ ]
+ }
+ },
+ "overflow-wrap": {
+ "values": [
+ "normal",
+ "break-word"
+ ]
+ },
+ "overflow-x": {
+ "values": [
+ "visible",
+ "hidden",
+ "scroll",
+ "auto",
+ "overlay"
+ ]
+ },
+ "overflow-y": {
+ "values": [
+ "visible",
+ "hidden",
+ "scroll",
+ "auto",
+ "overlay",
+ "-webkit-paged-x",
+ "-webkit-paged-y"
+ ]
+ },
+ "padding": {
+ "codegen-properties": {
+ "longhands": [
+ "padding-top",
+ "padding-right",
+ "padding-bottom",
+ "padding-left"
+ ]
+ }
+ },
+ "padding-bottom": {
+ "codegen-properties": {
+ "initial": "initialPadding",
+ "converter": "Length"
+ }
+ },
+ "padding-left": {
+ "codegen-properties": {
+ "initial": "initialPadding",
+ "converter": "Length"
+ }
+ },
+ "padding-right": {
+ "codegen-properties": {
+ "initial": "initialPadding",
+ "converter": "Length"
+ }
+ },
+ "padding-top": {
+ "codegen-properties": {
+ "initial": "initialPadding",
+ "converter": "Length"
+ }
+ },
+ "page": {
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "page-break-after": {
+ "values": [
+ "auto",
+ "always",
+ "avoid",
+ "left",
+ "right"
+ ],
+ "codegen-properties": {
+ "initial": "initialBreakBetween",
+ "name-for-methods": "BreakAfter",
+ "converter": "PageBreakBetween"
+ }
+ },
+ "page-break-before": {
+ "values": [
+ "auto",
+ "always",
+ "avoid",
+ "left",
+ "right"
+ ],
+ "codegen-properties": {
+ "initial": "initialBreakBetween",
+ "name-for-methods": "BreakBefore",
+ "converter": "PageBreakBetween"
+ }
+ },
+ "page-break-inside": {
+ "values": [
+ "auto",
+ "avoid"
+ ],
+ "codegen-properties": {
+ "initial": "initialBreakInside",
+ "name-for-methods": "BreakInside",
+ "converter": "PageBreakInside"
+ }
+ },
+ "paint-order": {
+ "codegen-properties": {
+ "converter": "PaintOrder",
+ "svg": true
+ }
+ },
+ "pointer-events": {
+ "inherited": true,
+ "values": [
+ "visible",
+ "none",
+ "all",
+ "auto",
+ "visiblepainted",
+ "visiblefill",
+ "visiblestroke",
+ "painted",
+ "fill",
+ "stroke"
+ ]
+ },
+ "position": {
+ "values": [
+ "static",
+ "relative",
+ "absolute",
+ "fixed",
+ "-webkit-sticky"
+ ]
+ },
+ "quotes": {
+ "inherited": true,
+ "codegen-properties": {
+ "converter": "Quotes"
+ }
+ },
+ "r": {
+ "codegen-properties": {
+ "initial": "initialZeroLength",
+ "converter": "Length"
+ }
+ },
+ "resize": {
+ "inherited": true,
+ "values": [
+ "none",
+ "both",
+ "horizontal",
+ "vertical",
+ "auto"
+ ],
+ "codegen-properties": {
+ "converter": "Resize"
+ }
+ },
+ "right": {
+ "codegen-properties": {
+ "initial": "initialOffset",
+ "converter": "LengthOrAuto"
+ }
+ },
+ "rx": {
+ "codegen-properties": {
+ "initial": "initialZeroLength",
+ "converter": "Length"
+ }
+ },
+ "ry": {
+ "codegen-properties": {
+ "initial": "initialZeroLength",
+ "converter": "Length"
+ }
+ },
+ "shape-rendering": {
+ "inherited": true,
+ "values": [
+ "auto",
+ "optimizespeed",
+ "crispedges",
+ "geometricprecision"
+ ],
+ "codegen-properties": {
+ "svg": true
+ }
+ },
+ "size": {
+ "codegen-properties": {
+ "custom": "All"
+ }
+ },
+ "src": {
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "stop-color": {
+ "codegen-properties": {
+ "converter": "SVGColor",
+ "svg": true
+ }
+ },
+ "stop-opacity": {
+ "codegen-properties": {
+ "converter": "Opacity",
+ "svg": true
+ }
+ },
+ "stroke": {
+ "inherited": true,
+ "codegen-properties": {
+ "custom": "All",
+ "svg": true
+ }
+ },
+ "stroke-dasharray": {
+ "inherited": true,
+ "codegen-properties": {
+ "name-for-methods": "StrokeDashArray",
+ "converter": "StrokeDashArray",
+ "svg": true
+ }
+ },
+ "stroke-dashoffset": {
+ "inherited": true,
+ "codegen-properties": {
+ "initial": "initialZeroLength",
+ "name-for-methods": "StrokeDashOffset",
+ "converter": "Length"
+ }
+ },
+ "stroke-linecap": {
+ "inherited": true,
+ "values": [
+ "butt",
+ "round",
+ "square"
+ ],
+ "codegen-properties": {
+ "name-for-methods": "CapStyle",
+ "svg": true
+ }
+ },
+ "stroke-linejoin": {
+ "inherited": true,
+ "values": [
+ "miter",
+ "round",
+ "bevel"
+ ],
+ "codegen-properties": {
+ "name-for-methods": "JoinStyle",
+ "svg": true
+ }
+ },
+ "stroke-miterlimit": {
+ "inherited": true,
+ "codegen-properties": {
+ "name-for-methods": "StrokeMiterLimit",
+ "converter": "Number<float>",
+ "svg": true
+ }
+ },
+ "stroke-opacity": {
+ "inherited": true,
+ "codegen-properties": {
+ "converter": "Opacity",
+ "svg": true
+ }
+ },
+ "stroke-width": {
+ "inherited": true,
+ "codegen-properties": {
+ "initial": "initialOneLength",
+ "converter": "Length"
+ }
+ },
+ "speak": {
+ "inherited": true,
+ "values": [
+ "none",
+ "normal",
+ "spell-out",
+ "digits",
+ "literal-punctuation",
+ "no-punctuation"
+ ]
+ },
+ "table-layout": {
+ "values": [
+ "auto",
+ "fixed"
+ ]
+ },
+ "tab-size": {
+ "inherited": true
+ },
+ "text-align": {
+ "inherited": true,
+ "values": [
+ "-webkit-auto",
+ "left",
+ "right",
+ "center",
+ "justify",
+ "-webkit-left",
+ "-webkit-right",
+ "-webkit-center",
+ "-webkit-match-parent",
+ "start",
+ "end"
+ ],
+ "codegen-properties": {
+ "converter": "TextAlign"
+ }
+ },
+ "text-anchor": {
+ "inherited": true,
+ "values": [
+ "start",
+ "middle",
+ "end"
+ ],
+ "codegen-properties": {
+ "svg": true
+ }
+ },
+ "text-decoration": {
+ "codegen-properties": {
+ "converter": "TextDecoration"
+ }
+ },
+ "text-indent": {
+ "inherited": true,
+ "codegen-properties": {
+ "custom": "All"
+ }
+ },
+ "text-line-through": {
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "text-line-through-color": {
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "text-line-through-mode": {
+ "values": [
+ "continuous",
+ "skip-white-space"
+ ],
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "text-line-through-style": {
+ "values": [
+ "none",
+ "solid",
+ "double",
+ "dashed",
+ "dot-dash",
+ "dot-dot-dash",
+ "wave"
+ ],
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "text-line-through-width": {
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "text-overflow": {
+ "values": [
+ "clip",
+ "ellipsis"
+ ]
+ },
+ "text-overline": {
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "text-overline-color": {
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "text-overline-mode": {
+ "values": [
+ "continuous",
+ "skip-white-space"
+ ],
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "text-overline-style": {
+ "values": [
+ "none",
+ "solid",
+ "double",
+ "dashed",
+ "dot-dash",
+ "dot-dot-dash",
+ "wave"
+ ],
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "text-overline-width": {
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "text-shadow": {
+ "inherited": true,
+ "codegen-properties": {
+ "custom": "All"
+ }
+ },
+ "text-transform": {
+ "inherited": true,
+ "values": [
+ "capitalize",
+ "uppercase",
+ "lowercase",
+ "none"
+ ],
+ "codegen-properties": {
+ "aliases": [
+ "-epub-text-transform"
+ ]
+ }
+ },
+ "text-underline": {
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "text-underline-color": {
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "text-underline-mode": {
+ "values": [
+ "continuous",
+ "skip-white-space"
+ ],
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "text-underline-style": {
+ "values": [
+ "none",
+ "solid",
+ "double",
+ "dashed",
+ "dot-dash",
+ "dot-dot-dash",
+ "wave"
+ ],
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "text-underline-width": {
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "top": {
+ "codegen-properties": {
+ "initial": "initialOffset",
+ "converter": "LengthOrAuto"
+ }
+ },
+ "transition": {
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-transition"
+ ],
+ "longhands": [
+ "transition-property",
+ "transition-duration",
+ "transition-timing-function",
+ "transition-delay"
+ ]
+ }
+ },
+ "transition-delay": {
+ "animatable": true,
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-transition-delay"
+ ],
+ "name-for-methods": "Delay"
+ }
+ },
+ "transition-duration": {
+ "animatable": true,
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-transition-duration"
+ ],
+ "name-for-methods": "Duration"
+ }
+ },
+ "transition-property": {
+ "animatable": true,
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-transition-property"
+ ],
+ "name-for-methods": "Property"
+ }
+ },
+ "transition-timing-function": {
+ "animatable": true,
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-transition-timing-function"
+ ],
+ "name-for-methods": "TimingFunction"
+ }
+ },
+ "unicode-bidi": {
+ "values": [
+ "normal",
+ "embed",
+ "bidi-override",
+ "-webkit-isolate",
+ "-webkit-isolate-override",
+ "-webkit-plaintext"
+ ]
+ },
+ "unicode-range": {
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "vector-effect": {
+ "values": [
+ "none",
+ "non-scaling-stroke"
+ ],
+ "codegen-properties": {
+ "svg": true
+ }
+ },
+ "vertical-align": {
+ "codegen-properties": {
+ "custom": "Value"
+ }
+ },
+ "visibility": {
+ "inherited": true,
+ "values": [
+ "visible",
+ "hidden",
+ "collapse"
+ ]
+ },
+ "white-space": {
+ "inherited": true,
+ "values": [
+ "normal",
+ "pre",
+ "pre-wrap",
+ "pre-line",
+ "nowrap"
+ ]
+ },
+ "widows": {
+ "inherited": true,
+ "codegen-properties": {
+ "auto-functions": true
+ }
+ },
+ "width": {
+ "codegen-properties": {
+ "initial": "initialSize",
+ "converter": "LengthSizing"
+ }
+ },
+ "will-change": {
+ "codegen-properties": {
+ "custom": "Value"
+ }
+ },
+ "word-break": {
+ "inherited": true,
+ "values": [
+ "normal",
+ "break-all",
+ "keep-all",
+ "break-word"
+ ],
+ "codegen-properties": {
+ "aliases": [
+ "-epub-word-break"
+ ]
+ }
+ },
+ "word-spacing": {
+ "inherited": true,
+ "codegen-properties": {
+ "conditional-converter": "WordSpacing"
+ }
+ },
+ "word-wrap": {
+ "inherited": true,
+ "values": [
+ "normal",
+ "break-word"
+ ],
+ "codegen-properties": {
+ "name-for-methods": "OverflowWrap"
+ }
+ },
+ "x": {
+ "codegen-properties": {
+ "initial": "initialZeroLength",
+ "converter": "Length"
+ }
+ },
+ "y": {
+ "codegen-properties": {
+ "initial": "initialZeroLength",
+ "converter": "Length"
+ }
+ },
+ "z-index": {
+ "codegen-properties": {
+ "auto-functions": true
+ }
+ },
+ "alt": {
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-alt"
+ ],
+ "name-for-methods": "ContentAltText",
+ "custom": "Value"
+ }
+ },
+ "-webkit-animation-trigger": {
+ "animatable": true,
+ "codegen-properties": {
+ "name-for-methods": "Trigger",
+ "enable-if": "ENABLE_CSS_ANIMATIONS_LEVEL_2"
+ }
+ },
+ "-webkit-appearance": {
+ "values": [
+ "checkbox",
+ "radio",
+ "push-button",
+ "square-button",
+ "button",
+ "button-bevel",
+ "default-button",
+ "inner-spin-button",
+ "listbox",
+ "listitem",
+ "media-controls-background",
+ "media-controls-dark-bar-background",
+ "media-controls-fullscreen-background",
+ "media-controls-light-bar-background",
+ "media-current-time-display",
+ "media-enter-fullscreen-button",
+ "media-exit-fullscreen-button",
+ "media-fullscreen-volume-slider",
+ "media-fullscreen-volume-slider-thumb",
+ "media-mute-button",
+ "media-overlay-play-button",
+ "media-play-button",
+ "media-return-to-realtime-button",
+ "media-rewind-button",
+ "media-seek-back-button",
+ "media-seek-forward-button",
+ "media-slider",
+ "media-sliderthumb",
+ "media-time-remaining-display",
+ "media-toggle-closed-captions-button",
+ "media-volume-slider",
+ "media-volume-slider-container",
+ "media-volume-slider-mute-button",
+ "media-volume-sliderthumb",
+ "menulist",
+ "menulist-button",
+ "menulist-text",
+ "menulist-textfield",
+ "meter",
+ "progress-bar",
+ "progress-bar-value",
+ "slider-horizontal",
+ "slider-vertical",
+ "sliderthumb-horizontal",
+ "sliderthumb-vertical",
+ "caret",
+ "searchfield",
+ "searchfield-decoration",
+ "searchfield-results-decoration",
+ "searchfield-results-button",
+ "searchfield-cancel-button",
+ "snapshotted-plugin-overlay",
+ "textfield",
+ "relevancy-level-indicator",
+ "continuous-capacity-level-indicator",
+ "discrete-capacity-level-indicator",
+ "rating-level-indicator",
+ "image-controls-button",
+ "-apple-pay-button",
+ "textarea",
+ "attachment",
+ "caps-lock-indicator",
+ "none"
+ ]
+ },
+ "-webkit-aspect-ratio": {
+ "inherited": true,
+ "codegen-properties": {
+ "custom": "All"
+ }
+ },
+ "-webkit-backface-visibility": {
+ "values": [
+ "visible",
+ "hidden"
+ ]
+ },
+ "-webkit-background-clip": {
+ "codegen-properties": {
+ "name-for-methods": "Clip",
+ "fill-layer-property": true
+ }
+ },
+ "-webkit-background-composite": {
+ "codegen-properties": {
+ "name-for-methods": "Composite",
+ "fill-layer-property": true
+ }
+ },
+ "-webkit-background-origin": {
+ "codegen-properties": {
+ "name-for-methods": "Origin",
+ "fill-layer-property": true
+ }
+ },
+ "-webkit-background-size": {
+ "*": [
+ "Differs from background-size only in the interpretation of a single value: \"-webkit-background-size: l;\"",
+ "is equivalent to \"background-size: l l;\" whereas \"background-size: l;\" is equivalent to",
+ "\"background-size: l auto;\""
+ ],
+ "codegen-properties": {
+ "name-for-methods": "Size",
+ "fill-layer-property": true
+ }
+ },
+ "-webkit-border-after": {
+ "codegen-properties": {
+ "longhands": [
+ "-webkit-border-after-width",
+ "-webkit-border-after-style",
+ "-webkit-border-after-color"
+ ]
+ }
+ },
+ "-webkit-border-after-color": {
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "-webkit-border-after-style": {
+ "values": [
+ "none",
+ "hidden",
+ "inset",
+ "groove",
+ "outset",
+ "ridge",
+ "dotted",
+ "dashed",
+ "solid",
+ "double"
+ ],
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "-webkit-border-after-width": {
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "-webkit-border-before": {
+ "codegen-properties": {
+ "longhands": [
+ "-webkit-border-before-width",
+ "-webkit-border-before-style",
+ "-webkit-border-before-color"
+ ]
+ }
+ },
+ "-webkit-border-before-color": {
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "-webkit-border-before-style": {
+ "values": [
+ "none",
+ "hidden",
+ "inset",
+ "groove",
+ "outset",
+ "ridge",
+ "dotted",
+ "dashed",
+ "solid",
+ "double"
+ ],
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "-webkit-border-before-width": {
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "-webkit-border-end": {
+ "codegen-properties": {
+ "longhands": [
+ "-webkit-border-end-width",
+ "-webkit-border-end-style",
+ "-webkit-border-end-color"
+ ]
+ }
+ },
+ "-webkit-border-end-color": {
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "-webkit-border-end-style": {
+ "values": [
+ "none",
+ "hidden",
+ "inset",
+ "groove",
+ "outset",
+ "ridge",
+ "dotted",
+ "dashed",
+ "solid",
+ "double"
+ ],
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "-webkit-border-end-width": {
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "-webkit-border-fit": {
+ "values": [
+ "border",
+ "lines"
+ ]
+ },
+ "-webkit-border-horizontal-spacing": {
+ "inherited": true,
+ "codegen-properties": {
+ "name-for-methods": "HorizontalBorderSpacing",
+ "converter": "ComputedLength<float>"
+ }
+ },
+ "-webkit-border-image": {
+ "codegen-properties": {
+ "initial": "initialNinePieceImage",
+ "converter": "BorderImage<CSSPropertyWebkitBorderImage>"
+ }
+ },
+ "-webkit-border-radius": {
+ "*": [
+ "Differs from border-radius only in the interpretation of a value consisting of two lengths:",
+ "\"-webkit-border-radius: l1 l2;\" is equivalent to \"border-radius: l1 / l2;\"."
+ ],
+ "codegen-properties": {
+ "longhands": [
+ "border-top-left-radius",
+ "border-top-right-radius",
+ "border-bottom-right-radius",
+ "border-bottom-left-radius"
+ ]
+ }
+ },
+ "-webkit-border-start": {
+ "codegen-properties": {
+ "longhands": [
+ "-webkit-border-start-width",
+ "-webkit-border-start-style",
+ "-webkit-border-start-color"
+ ]
+ }
+ },
+ "-webkit-border-start-color": {
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "-webkit-border-start-style": {
+ "values": [
+ "none",
+ "hidden",
+ "inset",
+ "groove",
+ "outset",
+ "ridge",
+ "dotted",
+ "dashed",
+ "solid",
+ "double"
+ ],
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "-webkit-border-start-width": {
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "-webkit-border-vertical-spacing": {
+ "inherited": true,
+ "codegen-properties": {
+ "name-for-methods": "VerticalBorderSpacing",
+ "converter": "ComputedLength<float>"
+ }
+ },
+ "-webkit-box-align": {
+ "values": [
+ "stretch",
+ "start",
+ "end",
+ "center",
+ "baseline"
+ ]
+ },
+ "-webkit-box-direction": {
+ "inherited": true,
+ "values": [
+ "normal",
+ "reverse"
+ ]
+ },
+ "-webkit-box-flex": {},
+ "-webkit-box-flex-group": {},
+ "-webkit-box-lines": {
+ "values": [
+ "single",
+ "multiple"
+ ]
+ },
+ "-webkit-box-ordinal-group": {},
+ "-webkit-box-orient": {
+ "values": [
+ "horizontal",
+ "vertical",
+ "inline-axis",
+ "block-axis"
+ ]
+ },
+ "-webkit-box-pack": {
+ "values": [
+ "start",
+ "end",
+ "center",
+ "justify"
+ ]
+ },
+ "-webkit-box-reflect": {
+ "codegen-properties": {
+ "converter": "Reflection"
+ }
+ },
+ "-webkit-box-shadow": {
+ "*": [
+ "Differs from box-shadow in its treatement of blur radii > 8px. Let -webkit-box-shadow blur",
+ "radius be w_r and box-shadow blur radius be b_r. For w_r > 8px, b_r = 8 + 4 * sqrt((w_r - 8) / 2)."
+ ],
+ "codegen-properties": {
+ "custom": "All"
+ }
+ },
+ "-webkit-column-axis": {
+ "values": [
+ "horizontal",
+ "vertical",
+ "auto"
+ ]
+ },
+ "-webkit-column-break-after": {
+ "values": [
+ "auto",
+ "always",
+ "avoid",
+ "left",
+ "right"
+ ],
+ "codegen-properties": {
+ "initial": "initialBreakBetween",
+ "name-for-methods": "BreakAfter",
+ "converter": "ColumnBreakBetween"
+ }
+ },
+ "-webkit-column-break-before": {
+ "values": [
+ "auto",
+ "always",
+ "avoid",
+ "left",
+ "right"
+ ],
+ "codegen-properties": {
+ "initial": "initialBreakBetween",
+ "name-for-methods": "BreakBefore",
+ "converter": "ColumnBreakBetween"
+ }
+ },
+ "-webkit-column-break-inside": {
+ "values": [
+ "auto",
+ "avoid"
+ ],
+ "codegen-properties": {
+ "initial": "initialBreakInside",
+ "name-for-methods": "BreakInside",
+ "converter": "ColumnBreakInside"
+ }
+ },
+ "column-count": {
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-column-count"
+ ],
+ "auto-functions": true
+ }
+ },
+ "column-fill": {
+ "values": [
+ "auto",
+ "balance"
+ ],
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-column-fill"
+ ]
+ }
+ },
+ "column-gap": {
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-column-gap"
+ ],
+ "custom": "All"
+ }
+ },
+ "-webkit-column-progression": {
+ "values": [
+ "normal",
+ "reverse"
+ ]
+ },
+ "column-rule": {
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-column-rule"
+ ],
+ "longhands": [
+ "column-rule-width",
+ "column-rule-style",
+ "column-rule-color"
+ ]
+ }
+ },
+ "column-rule-color": {
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-column-rule-color"
+ ],
+ "initial": "invalidColor",
+ "visited-link-color-support": true
+ }
+ },
+ "column-rule-style": {
+ "values": [
+ "none",
+ "hidden",
+ "inset",
+ "groove",
+ "outset",
+ "ridge",
+ "dotted",
+ "dashed",
+ "solid",
+ "double"
+ ],
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-column-rule-style"
+ ],
+ "initial": "initialBorderStyle"
+ }
+ },
+ "column-rule-width": {
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-column-rule-width"
+ ],
+ "converter": "LineWidth<unsigned short>"
+ }
+ },
+ "column-span": {
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-column-span"
+ ]
+ }
+ },
+ "column-width": {
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-column-width"
+ ],
+ "converter": "ComputedLength<float>",
+ "auto-functions": true
+ }
+ },
+ "columns": {
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-columns"
+ ],
+ "longhands": [
+ "column-width",
+ "column-count"
+ ]
+ }
+ },
+ "-webkit-box-decoration-break": {
+ "values": [
+ "clone",
+ "slice"
+ ],
+ "codegen-properties": {
+ "enable-if": "ENABLE_CSS_BOX_DECORATION_BREAK"
+ }
+ },
+ "mix-blend-mode": {
+ "values": [
+ "normal",
+ "multiply",
+ "screen",
+ "overlay",
+ "darken",
+ "lighten",
+ "color-dodge",
+ "color-burn",
+ "hard-light",
+ "soft-light",
+ "difference",
+ "exclusion",
+ "plus-darker",
+ "plus-lighter"
+ ],
+ "codegen-properties": {
+ "name-for-methods": "BlendMode",
+ "enable-if": "ENABLE_CSS_COMPOSITING"
+ }
+ },
+ "isolation": {
+ "values": [
+ "auto",
+ "isolate"
+ ],
+ "codegen-properties": {
+ "enable-if": "ENABLE_CSS_COMPOSITING"
+ }
+ },
+ "filter": {
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-filter"
+ ],
+ "conditional-converter": "FilterOperations"
+ }
+ },
+ "align-content": {
+ "values": [
+ "flex-start",
+ "flex-end",
+ "center",
+ "space-between",
+ "space-around",
+ "stretch"
+ ],
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-align-content"
+ ],
+ "initial": "initialContentAlignment",
+ "converter": "ContentAlignmentData"
+ }
+ },
+ "align-items": {
+ "values": [
+ "flex-start",
+ "flex-end",
+ "center",
+ "baseline",
+ "stretch"
+ ],
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-align-items"
+ ],
+ "initial": "initialDefaultAlignment",
+ "converter": "SelfOrDefaultAlignmentData"
+ }
+ },
+ "align-self": {
+ "values": [
+ "auto",
+ "flex-start",
+ "flex-end",
+ "center",
+ "baseline",
+ "stretch"
+ ],
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-align-self"
+ ],
+ "initial": "initialSelfAlignment",
+ "converter": "SelfOrDefaultAlignmentData"
+ }
+ },
+ "flex": {
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-flex"
+ ],
+ "longhands": [
+ "flex-grow",
+ "flex-shrink",
+ "flex-basis"
+ ]
+ }
+ },
+ "flex-basis": {
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-flex-basis"
+ ],
+ "converter": "LengthOrAuto"
+ }
+ },
+ "flex-direction": {
+ "values": [
+ "row",
+ "row-reverse",
+ "column",
+ "column-reverse"
+ ],
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-flex-direction"
+ ]
+ }
+ },
+ "flex-flow": {
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-flex-flow"
+ ],
+ "longhands": [
+ "flex-direction",
+ "flex-wrap"
+ ]
+ }
+ },
+ "flex-grow": {
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-flex-grow"
+ ]
+ }
+ },
+ "flex-shrink": {
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-flex-shrink"
+ ]
+ }
+ },
+ "flex-wrap": {
+ "values": [
+ "nowrap",
+ "wrap",
+ "wrap-reverse"
+ ],
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-flex-wrap"
+ ]
+ }
+ },
+ "justify-content": {
+ "values": [
+ "flex-start",
+ "flex-end",
+ "center",
+ "space-between",
+ "space-around"
+ ],
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-justify-content"
+ ],
+ "initial": "initialContentAlignment",
+ "converter": "ContentAlignmentData"
+ }
+ },
+ "-webkit-backdrop-filter": {
+ "codegen-properties": {
+ "conditional-converter": "FilterOperations",
+ "enable-if": "ENABLE_FILTERS_LEVEL_2"
+ }
+ },
+ "-webkit-font-size-delta": {
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "justify-self": {
+ "codegen-properties": {
+ "initial": "initialSelfAlignment",
+ "converter": "SelfOrDefaultAlignmentData",
+ "enable-if": "ENABLE_CSS_GRID_LAYOUT"
+ }
+ },
+ "justify-items": {
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-justify-items"
+ ],
+ "initial": "initialSelfAlignment",
+ "converter": "SelfOrDefaultAlignmentData",
+ "enable-if": "ENABLE_CSS_GRID_LAYOUT"
+ }
+ },
+ "grid": {
+ "codegen-properties": {
+ "longhands": [
+ "grid-template-rows",
+ "grid-template-columns",
+ "grid-template-areas",
+ "grid-auto-flow",
+ "grid-auto-rows",
+ "grid-auto-columns",
+ "grid-column-gap",
+ "grid-row-gap"
+ ],
+ "enable-if": "ENABLE_CSS_GRID_LAYOUT"
+ }
+ },
+ "grid-area": {
+ "codegen-properties": {
+ "longhands": [
+ "grid-row-start",
+ "grid-column-start",
+ "grid-row-end",
+ "grid-column-end"
+ ],
+ "enable-if": "ENABLE_CSS_GRID_LAYOUT"
+ }
+ },
+ "grid-auto-columns": {
+ "codegen-properties": {
+ "converter": "GridTrackSizeList",
+ "enable-if": "ENABLE_CSS_GRID_LAYOUT"
+ }
+ },
+ "grid-auto-rows": {
+ "codegen-properties": {
+ "converter": "GridTrackSizeList",
+ "enable-if": "ENABLE_CSS_GRID_LAYOUT"
+ }
+ },
+ "grid-column-end": {
+ "codegen-properties": {
+ "name-for-methods": "GridItemColumnEnd",
+ "conditional-converter": "GridPosition",
+ "enable-if": "ENABLE_CSS_GRID_LAYOUT"
+ }
+ },
+ "grid-column-gap": {
+ "codegen-properties": {
+ "initial": "initialZeroLength",
+ "converter": "Length",
+ "enable-if": "ENABLE_CSS_GRID_LAYOUT"
+ }
+ },
+ "grid-column-start": {
+ "codegen-properties": {
+ "name-for-methods": "GridItemColumnStart",
+ "conditional-converter": "GridPosition",
+ "enable-if": "ENABLE_CSS_GRID_LAYOUT"
+ }
+ },
+ "grid-template": {
+ "codegen-properties": {
+ "longhands": [
+ "grid-template-rows",
+ "grid-template-columns",
+ "grid-template-areas"
+ ],
+ "enable-if": "ENABLE_CSS_GRID_LAYOUT"
+ }
+ },
+ "grid-template-columns": {
+ "codegen-properties": {
+ "custom": "All",
+ "enable-if": "ENABLE_CSS_GRID_LAYOUT"
+ }
+ },
+ "grid-template-rows": {
+ "codegen-properties": {
+ "custom": "All",
+ "enable-if": "ENABLE_CSS_GRID_LAYOUT"
+ }
+ },
+ "grid-row-end": {
+ "codegen-properties": {
+ "name-for-methods": "GridItemRowEnd",
+ "conditional-converter": "GridPosition",
+ "enable-if": "ENABLE_CSS_GRID_LAYOUT"
+ }
+ },
+ "grid-row-gap": {
+ "codegen-properties": {
+ "initial": "initialZeroLength",
+ "converter": "Length",
+ "enable-if": "ENABLE_CSS_GRID_LAYOUT"
+ }
+ },
+ "grid-row-start": {
+ "codegen-properties": {
+ "name-for-methods": "GridItemRowStart",
+ "conditional-converter": "GridPosition",
+ "enable-if": "ENABLE_CSS_GRID_LAYOUT"
+ }
+ },
+ "grid-column": {
+ "codegen-properties": {
+ "longhands": [
+ "grid-column-start",
+ "grid-column-end"
+ ],
+ "enable-if": "ENABLE_CSS_GRID_LAYOUT"
+ }
+ },
+ "grid-gap": {
+ "codegen-properties": {
+ "longhands": [
+ "grid-row-gap",
+ "grid-column-gap"
+ ],
+ "enable-if": "ENABLE_CSS_GRID_LAYOUT"
+ }
+ },
+ "grid-row": {
+ "codegen-properties": {
+ "longhands": [
+ "grid-row-start",
+ "grid-row-end"
+ ],
+ "enable-if": "ENABLE_CSS_GRID_LAYOUT"
+ }
+ },
+ "grid-template-areas": {
+ "codegen-properties": {
+ "custom": "All",
+ "enable-if": "ENABLE_CSS_GRID_LAYOUT"
+ }
+ },
+ "grid-auto-flow": {
+ "codegen-properties": {
+ "converter": "GridAutoFlow",
+ "enable-if": "ENABLE_CSS_GRID_LAYOUT"
+ }
+ },
+ "-webkit-hyphenate-character": {
+ "inherited": true,
+ "codegen-properties": {
+ "name-for-methods": "HyphenationString",
+ "converter": "StringOrAuto"
+ }
+ },
+ "-webkit-hyphenate-limit-after": {
+ "inherited": true,
+ "codegen-properties": {
+ "name-for-methods": "HyphenationLimitAfter",
+ "converter": "NumberOrAuto<short>"
+ }
+ },
+ "-webkit-hyphenate-limit-before": {
+ "inherited": true,
+ "codegen-properties": {
+ "name-for-methods": "HyphenationLimitBefore",
+ "converter": "NumberOrAuto<short>"
+ }
+ },
+ "-webkit-hyphenate-limit-lines": {
+ "inherited": true,
+ "codegen-properties": {
+ "name-for-methods": "HyphenationLimitLines",
+ "converter": "WebkitHyphenateLimitLines"
+ }
+ },
+ "-webkit-hyphens": {
+ "inherited": true,
+ "values": [
+ "none",
+ "manual",
+ "auto"
+ ],
+ "codegen-properties": {
+ "aliases": [
+ "-epub-hyphens"
+ ]
+ }
+ },
+ "-webkit-initial-letter": {
+ "codegen-properties": {
+ "converter": "InitialLetter"
+ }
+ },
+ "-webkit-line-box-contain": {
+ "inherited": true,
+ "codegen-properties": {
+ "converter": "LineBoxContain"
+ }
+ },
+ "-webkit-line-align": {
+ "inherited": true,
+ "values": [
+ "none",
+ "edges"
+ ]
+ },
+ "-webkit-line-break": {
+ "inherited": true,
+ "values": [
+ "auto",
+ "loose",
+ "normal",
+ "strict",
+ "after-white-space"
+ ]
+ },
+ "-webkit-line-clamp": {},
+ "-webkit-line-grid": {
+ "inherited": true,
+ "codegen-properties": {
+ "converter": "StringOrNone"
+ }
+ },
+ "-webkit-line-snap": {
+ "inherited": true,
+ "values": [
+ "none",
+ "baseline",
+ "contain"
+ ]
+ },
+ "-webkit-logical-width": {
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "-webkit-logical-height": {
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "-webkit-margin-after-collapse": {
+ "values": [
+ "collapse",
+ "separate",
+ "discard"
+ ]
+ },
+ "-webkit-margin-before-collapse": {
+ "values": [
+ "collapse",
+ "separate",
+ "discard"
+ ]
+ },
+ "-webkit-margin-bottom-collapse": {
+ "values": [
+ "collapse",
+ "separate",
+ "discard"
+ ],
+ "codegen-properties": {
+ "name-for-methods": "MarginAfterCollapse"
+ }
+ },
+ "-webkit-margin-top-collapse": {
+ "values": [
+ "collapse",
+ "separate",
+ "discard"
+ ],
+ "codegen-properties": {
+ "name-for-methods": "MarginBeforeCollapse"
+ }
+ },
+ "-webkit-margin-collapse": {
+ "codegen-properties": {
+ "longhands": [
+ "-webkit-margin-before-collapse",
+ "-webkit-margin-after-collapse"
+ ]
+ }
+ },
+ "-webkit-margin-after": {
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "-webkit-margin-before": {
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "-webkit-margin-end": {
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "-webkit-margin-start": {
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "-webkit-marquee": {
+ "codegen-properties": {
+ "longhands": [
+ "-webkit-marquee-direction",
+ "-webkit-marquee-increment",
+ "-webkit-marquee-repetition",
+ "-webkit-marquee-style",
+ "-webkit-marquee-speed"
+ ]
+ }
+ },
+ "-webkit-marquee-direction": {
+ "values": [
+ "forwards",
+ "backwards",
+ "ahead",
+ "reverse",
+ "left",
+ "right",
+ "down",
+ "up",
+ "auto"
+ ]
+ },
+ "-webkit-marquee-increment": {
+ "codegen-properties": {
+ "conditional-converter": "MarqueeIncrement"
+ }
+ },
+ "-webkit-marquee-repetition": {
+ "codegen-properties": {
+ "name-for-methods": "MarqueeLoopCount",
+ "converter": "MarqueeRepetition"
+ }
+ },
+ "-webkit-marquee-speed": {
+ "codegen-properties": {
+ "converter": "MarqueeSpeed"
+ }
+ },
+ "-webkit-marquee-style": {
+ "values": [
+ "none",
+ "slide",
+ "scroll",
+ "alternate"
+ ],
+ "codegen-properties": {
+ "name-for-methods": "MarqueeBehavior"
+ }
+ },
+ "-webkit-mask": {
+ "codegen-properties": {
+ "longhands": [
+ "-webkit-mask-image",
+ "-webkit-mask-source-type",
+ "-webkit-mask-position-x",
+ "-webkit-mask-position-y",
+ "-webkit-mask-size",
+ "-webkit-mask-repeat-x",
+ "-webkit-mask-repeat-y",
+ "-webkit-mask-origin",
+ "-webkit-mask-clip"
+ ]
+ }
+ },
+ "-webkit-mask-box-image": {
+ "codegen-properties": {
+ "initial": "initialNinePieceImage",
+ "converter": "BorderMask<CSSPropertyWebkitMaskBoxImage>"
+ }
+ },
+ "-webkit-mask-box-image-outset": {
+ "codegen-properties": {
+ "custom": "All"
+ }
+ },
+ "-webkit-mask-box-image-repeat": {
+ "codegen-properties": {
+ "custom": "All"
+ }
+ },
+ "-webkit-mask-box-image-slice": {
+ "codegen-properties": {
+ "custom": "All"
+ }
+ },
+ "-webkit-mask-box-image-source": {
+ "codegen-properties": {
+ "converter": "StyleImage<CSSPropertyWebkitMaskBoxImageSource>"
+ }
+ },
+ "-webkit-mask-box-image-width": {
+ "codegen-properties": {
+ "custom": "All"
+ }
+ },
+ "-webkit-mask-clip": {
+ "codegen-properties": {
+ "name-for-methods": "Clip",
+ "fill-layer-property": true
+ }
+ },
+ "-webkit-mask-composite": {
+ "codegen-properties": {
+ "name-for-methods": "Composite",
+ "fill-layer-property": true
+ }
+ },
+ "-webkit-mask-image": {
+ "codegen-properties": {
+ "name-for-methods": "Image",
+ "fill-layer-property": true
+ }
+ },
+ "-webkit-mask-origin": {
+ "codegen-properties": {
+ "name-for-methods": "Origin",
+ "fill-layer-property": true
+ }
+ },
+ "-webkit-mask-position": {
+ "codegen-properties": {
+ "longhands": [
+ "-webkit-mask-position-x",
+ "-webkit-mask-position-y"
+ ]
+ }
+ },
+ "-webkit-mask-position-x": {
+ "codegen-properties": {
+ "name-for-methods": "XPosition",
+ "fill-layer-property": true
+ }
+ },
+ "-webkit-mask-position-y": {
+ "codegen-properties": {
+ "name-for-methods": "YPosition",
+ "fill-layer-property": true
+ }
+ },
+ "-webkit-mask-repeat": {
+ "codegen-properties": {
+ "longhands": [
+ "-webkit-mask-repeat-x",
+ "-webkit-mask-repeat-y"
+ ]
+ }
+ },
+ "-webkit-mask-repeat-x": {
+ "codegen-properties": {
+ "name-for-methods": "RepeatX",
+ "fill-layer-property": true
+ }
+ },
+ "-webkit-mask-repeat-y": {
+ "codegen-properties": {
+ "name-for-methods": "RepeatY",
+ "fill-layer-property": true
+ }
+ },
+ "-webkit-mask-size": {
+ "codegen-properties": {
+ "name-for-methods": "Size",
+ "fill-layer-property": true
+ }
+ },
+ "-webkit-mask-source-type": {
+ "codegen-properties": {
+ "name-for-methods": "MaskSourceType",
+ "fill-layer-property": true
+ }
+ },
+ "-webkit-max-logical-width": {
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "-webkit-max-logical-height": {
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "-webkit-min-logical-width": {
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "-webkit-min-logical-height": {
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "-webkit-nbsp-mode": {
+ "inherited": true,
+ "values": [
+ "normal",
+ "space"
+ ],
+ "codegen-properties": {
+ "initial": "initialNBSPMode",
+ "setter": "setNBSPMode"
+ }
+ },
+ "order": {
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-order"
+ ]
+ }
+ },
+ "-webkit-padding-after": {
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "-webkit-padding-before": {
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "-webkit-padding-end": {
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "-webkit-padding-start": {
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "perspective": {
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-perspective"
+ ],
+ "conditional-converter": "Perspective"
+ }
+ },
+ "perspective-origin": {
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-perspective-origin"
+ ],
+ "longhands": [
+ "perspective-origin-x",
+ "perspective-origin-y"
+ ]
+ }
+ },
+ "perspective-origin-x": {
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-perspective-origin-x"
+ ],
+ "converter": "PositionComponentX"
+ }
+ },
+ "perspective-origin-y": {
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-perspective-origin-y"
+ ],
+ "converter": "PositionComponentY"
+ }
+ },
+ "-webkit-print-color-adjust": {
+ "inherited": true,
+ "values": [
+ "exact",
+ "economy"
+ ]
+ },
+ "-webkit-rtl-ordering": {
+ "inherited": true,
+ "values": [
+ "logical",
+ "visual"
+ ],
+ "codegen-properties": {
+ "initial": "initialRTLOrdering",
+ "setter": "setRTLOrdering"
+ }
+ },
+ "-webkit-scroll-snap-points-x": {
+ "codegen-properties": {
+ "converter": "ScrollSnapPoints",
+ "custom": "Initial|Inherit",
+ "enable-if": "ENABLE_CSS_SCROLL_SNAP"
+ }
+ },
+ "-webkit-scroll-snap-points-y": {
+ "codegen-properties": {
+ "converter": "ScrollSnapPoints",
+ "custom": "Initial|Inherit",
+ "enable-if": "ENABLE_CSS_SCROLL_SNAP"
+ }
+ },
+ "-webkit-scroll-snap-type": {
+ "values": [
+ "none",
+ "mandatory",
+ "proximity"
+ ],
+ "codegen-properties": {
+ "enable-if": "ENABLE_CSS_SCROLL_SNAP"
+ }
+ },
+ "-webkit-scroll-snap-destination": {
+ "codegen-properties": {
+ "converter": "SnapCoordinatePair",
+ "enable-if": "ENABLE_CSS_SCROLL_SNAP"
+ }
+ },
+ "-webkit-scroll-snap-coordinate": {
+ "codegen-properties": {
+ "name-for-methods": "ScrollSnapCoordinates",
+ "converter": "ScrollSnapCoordinates",
+ "enable-if": "ENABLE_CSS_SCROLL_SNAP"
+ }
+ },
+ "-webkit-svg-shadow": {
+ "codegen-properties": {
+ "custom": "All",
+ "svg": true
+ }
+ },
+ "-webkit-text-combine": {
+ "inherited": true,
+ "values": [
+ "none",
+ "horizontal"
+ ],
+ "codegen-properties": {
+ "aliases": [
+ "-epub-text-combine"
+ ]
+ }
+ },
+ "-webkit-text-align-last": {
+ "inherited": true,
+ "values": [
+ "left",
+ "right",
+ "center",
+ "justify",
+ "start",
+ "end",
+ "auto"
+ ],
+ "codegen-properties": {
+ "enable-if": "ENABLE_CSS3_TEXT"
+ }
+ },
+ "-webkit-text-justify": {
+ "inherited": true,
+ "values": [
+ "inter-word",
+ "distribute",
+ "auto",
+ "none"
+ ],
+ "codegen-properties": {
+ "enable-if": "ENABLE_CSS3_TEXT"
+ }
+ },
+ "-webkit-text-decoration": {
+ "codegen-properties": {
+ "longhands": [
+ "-webkit-text-decoration-line",
+ "-webkit-text-decoration-style",
+ "-webkit-text-decoration-color"
+ ]
+ }
+ },
+ "-webkit-text-decoration-line": {
+ "codegen-properties": {
+ "name-for-methods": "TextDecoration",
+ "converter": "TextDecoration"
+ }
+ },
+ "-webkit-text-decoration-style": {
+ "values": [
+ "solid",
+ "double",
+ "dotted",
+ "dashed",
+ "wavy"
+ ]
+ },
+ "-webkit-text-decoration-color": {
+ "codegen-properties": {
+ "initial": "invalidColor",
+ "visited-link-color-support": true
+ }
+ },
+ "-webkit-text-decoration-skip": {
+ "inherited": true,
+ "codegen-properties": {
+ "converter": "TextDecorationSkip"
+ }
+ },
+ "-webkit-text-underline-position": {
+ "inherited": true,
+ "codegen-properties": {
+ "converter": "TextUnderlinePosition"
+ }
+ },
+ "-webkit-text-decorations-in-effect": {
+ "inherited": true,
+ "codegen-properties": {
+ "skip-builder": true
+ }
+ },
+ "-webkit-text-emphasis": {
+ "inherited": true,
+ "codegen-properties": {
+ "aliases": [
+ "-epub-text-emphasis",
+ "text-emphasis"
+ ],
+ "longhands": [
+ "-webkit-text-emphasis-style",
+ "-webkit-text-emphasis-color"
+ ]
+ }
+ },
+ "-webkit-text-emphasis-color": {
+ "inherited": true,
+ "codegen-properties": {
+ "aliases": [
+ "-epub-text-emphasis-color",
+ "text-emphasis-color"
+ ],
+ "initial": "invalidColor",
+ "visited-link-color-support": true
+ }
+ },
+ "-webkit-text-emphasis-position": {
+ "inherited": true,
+ "codegen-properties": {
+ "aliases": [
+ "text-emphasis-position"
+ ],
+ "converter": "TextEmphasisPosition"
+ }
+ },
+ "-webkit-text-emphasis-style": {
+ "inherited": true,
+ "codegen-properties": {
+ "aliases": [
+ "-epub-text-emphasis-style",
+ "text-emphasis-style"
+ ],
+ "custom": "All"
+ }
+ },
+ "-webkit-text-fill-color": {
+ "inherited": true,
+ "codegen-properties": {
+ "initial": "invalidColor",
+ "visited-link-color-support": true
+ }
+ },
+ "-webkit-text-security": {
+ "inherited": true,
+ "values": [
+ "disc",
+ "circle",
+ "square",
+ "none"
+ ]
+ },
+ "-webkit-text-stroke": {
+ "inherited": true,
+ "codegen-properties": {
+ "longhands": [
+ "-webkit-text-stroke-width",
+ "-webkit-text-stroke-color"
+ ]
+ }
+ },
+ "-webkit-text-stroke-color": {
+ "inherited": true,
+ "codegen-properties": {
+ "initial": "invalidColor",
+ "visited-link-color-support": true
+ }
+ },
+ "-webkit-text-stroke-width": {
+ "inherited": true,
+ "codegen-properties": {
+ "converter": "TextStrokeWidth"
+ }
+ },
+ "transform": {
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-transform"
+ ],
+ "converter": "Transform"
+ }
+ },
+ "transform-origin": {
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-transform-origin"
+ ],
+ "longhands": [
+ "transform-origin-x",
+ "transform-origin-y",
+ "transform-origin-z"
+ ]
+ }
+ },
+ "transform-origin-x": {
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-transform-origin-x"
+ ],
+ "converter": "PositionComponentX"
+ }
+ },
+ "transform-origin-y": {
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-transform-origin-y"
+ ],
+ "converter": "PositionComponentY"
+ }
+ },
+ "transform-origin-z": {
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-transform-origin-z"
+ ],
+ "converter": "ComputedLength<float>"
+ }
+ },
+ "transform-style": {
+ "values": [
+ "flat",
+ "preserve-3d"
+ ],
+ "codegen-properties": {
+ "name-for-methods": "TransformStyle3D"
+ }
+ },
+ "-webkit-transform-style": {
+ "*": [
+ "Keeping -webkit-transform-style around is how we'll detect legacy content. At that point",
+ "we'll have to add a custom builder and a new ETransformStyle3D type."
+ ],
+ "values": [
+ "flat",
+ "preserve-3d"
+ ],
+ "codegen-properties": {
+ "name-for-methods": "TransformStyle3D"
+ }
+ },
+ "-webkit-user-drag": {
+ "values": [
+ "auto",
+ "none",
+ "element"
+ ]
+ },
+ "-webkit-user-modify": {
+ "inherited": true,
+ "values": []
+ },
+ "-webkit-user-select": {
+ "inherited": true,
+ "values": []
+ },
+ "-webkit-flow-into": {
+ "codegen-properties": {
+ "name-for-methods": "FlowThread",
+ "converter": "StringOrNone",
+ "enable-if": "ENABLE_CSS_REGIONS"
+ }
+ },
+ "-webkit-flow-from": {
+ "codegen-properties": {
+ "name-for-methods": "RegionThread",
+ "converter": "StringOrNone",
+ "enable-if": "ENABLE_CSS_REGIONS"
+ }
+ },
+ "-webkit-region-fragment": {
+ "values": [
+ "auto",
+ "break"
+ ],
+ "codegen-properties": {
+ "enable-if": "ENABLE_CSS_REGIONS"
+ }
+ },
+ "-webkit-region-break-after": {
+ "values": [
+ "auto",
+ "always",
+ "avoid",
+ "left",
+ "right"
+ ],
+ "codegen-properties": {
+ "initial": "initialBreakBetween",
+ "name-for-methods": "BreakAfter",
+ "converter": "RegionBreakBetween",
+ "enable-if": "ENABLE_CSS_REGIONS"
+ }
+ },
+ "-webkit-region-break-before": {
+ "values": [
+ "auto",
+ "always",
+ "avoid",
+ "left",
+ "right"
+ ],
+ "codegen-properties": {
+ "initial": "initialBreakBetween",
+ "name-for-methods": "BreakBefore",
+ "converter": "RegionBreakBetween",
+ "enable-if": "ENABLE_CSS_REGIONS"
+ }
+ },
+ "-webkit-region-break-inside": {
+ "values": [
+ "auto",
+ "avoid"
+ ],
+ "codegen-properties": {
+ "initial": "initialBreakInside",
+ "name-for-methods": "BreakInside",
+ "converter": "RegionBreakInside",
+ "enable-if": "ENABLE_CSS_REGIONS"
+ }
+ },
+ "shape-outside": {
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-shape-outside"
+ ],
+ "converter": "ShapeValue"
+ }
+ },
+ "shape-margin": {
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-shape-margin"
+ ],
+ "converter": "Length"
+ }
+ },
+ "shape-image-threshold": {
+ "codegen-properties": {
+ "aliases": [
+ "-webkit-shape-image-threshold"
+ ],
+ "converter": "NumberOrAuto<float>"
+ }
+ },
+ "max-zoom": {
+ "codegen-properties": {
+ "skip-builder": true,
+ "enable-if": "ENABLE_CSS_DEVICE_ADAPTATION"
+ }
+ },
+ "min-zoom": {
+ "codegen-properties": {
+ "skip-builder": true,
+ "enable-if": "ENABLE_CSS_DEVICE_ADAPTATION"
+ }
+ },
+ "orientation": {
+ "codegen-properties": {
+ "skip-builder": true,
+ "enable-if": "ENABLE_CSS_DEVICE_ADAPTATION"
+ }
+ },
+ "user-zoom": {
+ "codegen-properties": {
+ "skip-builder": true,
+ "enable-if": "ENABLE_CSS_DEVICE_ADAPTATION"
+ }
+ },
+ "-webkit-tap-highlight-color": {
+ "inherited": true,
+ "codegen-properties": {
+ "converter": "TapHighlightColor",
+ "enable-if": "ENABLE_TOUCH_EVENTS"
+ }
+ },
+ "-webkit-dashboard-region": {
+ "codegen-properties": {
+ "name-for-methods": "DashboardRegions",
+ "custom": "Value",
+ "enable-if": "ENABLE_DASHBOARD_SUPPORT"
+ }
+ },
+ "-webkit-overflow-scrolling": {
+ "inherited": true,
+ "values": [
+ "auto",
+ "touch"
+ ],
+ "codegen-properties": {
+ "name-for-methods": "UseTouchOverflowScrolling",
+ "converter": "OverflowScrolling",
+ "enable-if": "ENABLE_ACCELERATED_OVERFLOW_SCROLLING"
+ }
+ },
+ "touch-action": {
+ "values": [
+ "auto",
+ "manipulation"
+ ],
+ "codegen-properties": {
+ "enable-if": "ENABLE_TOUCH_EVENTS"
+ }
+ },
+ "-webkit-touch-callout": {
+ "inherited": true,
+ "values": [
+ "default",
+ "none"
+ ],
+ "codegen-properties": {
+ "name-for-methods": "TouchCalloutEnabled",
+ "converter": "TouchCallout",
+ "enable-if": "WTF_PLATFORM_IOS"
+ }
+ },
+ "-apple-trailing-word": {
+ "inherited": true,
+ "values": [
+ "auto",
+ "-webkit-partially-balanced"
+ ],
+ "codegen-properties": {
+ "name-for-methods": "TrailingWord",
+ "enable-if": "ENABLE_CSS_TRAILING_WORD"
+ }
+ },
+ "-apple-pay-button-style": {
+ "codegen-properties": {
+ "enable-if": "ENABLE_APPLE_PAY"
+ }
+ },
+ "-apple-pay-button-type": {
+ "codegen-properties": {
+ "enable-if": "ENABLE_APPLE_PAY"
+ }
+ }
+ }
+}
</ins></span></pre></div>
<a id="trunkSourceWebCorecssCSSPropertyNamesin"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/css/CSSPropertyNames.in (209000 => 209001)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSPropertyNames.in        2016-11-28 18:28:50 UTC (rev 209000)
+++ trunk/Source/WebCore/css/CSSPropertyNames.in        2016-11-28 19:11:38 UTC (rev 209001)
</span><span class="lines">@@ -1,691 +0,0 @@
</span><del>-//
-// CSS property names
-//
-// Some properties are used internally, but are not part of CSS. They are used to get
-// HTML4 compatibility in the rendering engine.
-//
-// Microsoft extensions are documented here:
-// http://msdn.microsoft.com/workshop/author/css/reference/attributes.asp
-//
-// StyleBuilder options:
-// * Initial:
-// Overrides the method name on RenderStyle to get the initial value for
-// the property. By default, initial' + PropertyId is used (e.g.
-// initialBorderCollapse()).
-//
-// * Getter:
-// Overrides the method name on RenderStyle to get the current value for
-// the property. By default, the PropertyId with first letter lowercased
-// is used (e.g. borderCollapse()).
-//
-// * Setter:
-// Overrides the method name on RenderStyle to set the current value for
-// the property. By default, 'set' + PropertyId is used (e.g.
-// setBorderCollapse()).
-//
-// * NameForMethods:
-// Overrides the Getter / Setter / Initial method names on RenderStyle.
-// For e.g. "NameForMethods=OverflowWrap" will use
-// "overflowWrap() / setOverflowWrap() / initialOverflowWrap()".
-//
-// * Converter=XXX:
-// If converting the input CSSValue into the setter method argument type
-// is not trivial (i.e. the CSSPrimitiveValue cannot be implicitly converted
-// to the expected type), then you can indicate that a Converter helper
-// function in css/StyleBuilderConverter.h should be used.
-//
-// * ConditionalConverter=XXX:
-// Similar to Converter=XXX but the converter function returns a std::optional<>
-// to indicate if the property setter should be called or not.
-//
-// * Custom=[Initial|Value|Inherit|All]:
-// Custom=Initial option is used to indicate that the CSS property requires
-// special handling to set its initial value.
-// Custom=Inherit option is used to indicate that the CSS property requires
-// special handling to set its inherit value.
-// Custom=Value option is used to indicate that the CSS property requires special
-// handling to set its value, and a regular Converter helper cannot be
-// used. The Custom code for the property should be located in
-// css/StyleBuilderCustom.h and named applyValue[CSSPropertyName]().
-// If special handling is also needed to apply inherit or initial value, use
-// Custom=All. Alternatively, several '|'-separated options can be passed:
-// e.g. 'Custom=Inherit|Value".
-//
-// * SVG:
-// Indicates that this is an SVG CSS property and that the corresponding
-// methods are on SVGRenderStyle instead of RenderStyle.
-//
-// * AutoFunctions:
-// Indicates that this CSS property requires handling of "auto" and has
-// corresponding hasAutoXXX() / setHasAutoXXX() methods on RenderStyle.
-//
-// * VisitedLinkColorSupport:
-// Indicates that this CSS property is a color property with a
-// "setVisitedLinkXXX()" setter on RenderStyle to be called when
-// StyleResolver::applyPropertyToVisitedLinkStyle() return true.
-// The regular setter on RenderStyle will only be called if
-// StyleResolver::applyPropertyToRegularStyle() returns true.
-//
-// * NoDefaultColor:
-// Should only with used with "VisitedLinkColorSupport". It indicates that for
-// setting the inherited value, it will not fallback to using the parent's
-// "color" property if the inherited color is invalid.
-//
-// * AnimationProperty:
-// Indicates that this CSS property is an animation / transition property.
-// It must have corresponding methods on the Animation class.
-//
-// * FontProperty:
-// Indicates that this CSS property is font-related. It must have corresponding
-// methods on the FontDescription class.
-//
-// * FillLayerProperty:
-// Indicates that this CSS property is a FillLayer property. It must have
-// corresponding methods on the FillLayer class.
-//
-// * SkipBuilder:
-// Ignore this property in the StyleBuilder.
-//
-// * Longhands=property1|property2|...:
-// This is a shorthand property so it should not use the StyleBuilder. An
-// ASSERT_NOT_REACHED() will be generated for this property in the StyleBuilder.
-// property1, property2, ... are the longhands for this shorthand property. A
-// corresponding "StylePropertyShorthand propertyIdShorthand()" function will be
-// generated in StylePropertyShorthandFunctions.h header.
-
-
-// high-priority property names have to be listed first, to simplify the check
-// for applying them first.
-color [Inherited, VisitedLinkColorSupport, NoDefaultColor]
-direction [Inherited, Custom=Value]
-display [Custom=Inherit|Value]
-font-family [Inherited, Custom=All]
-font-size [Inherited, Custom=All]
-font-style [Inherited, FontProperty, NameForMethods=Italic]
-font-weight [Inherited, Custom=All]
-text-rendering [Inherited, FontProperty, NameForMethods=TextRenderingMode]
-font-feature-settings [Inherited, FontProperty, Custom=Initial|Inherit, Converter=FontFeatureSettings, NameForMethods=FeatureSettings]
-#if defined(ENABLE_VARIATION_FONTS) && ENABLE_VARIATION_FONTS
-font-variation-settings [Inherited, FontProperty, Custom=Initial|Inherit, Converter=FontVariationSettings, NameForMethods=VariationSettings]
-#endif
--webkit-font-kerning [Inherited, FontProperty, NameForMethods=Kerning]
-font-kerning = -webkit-font-kerning
--webkit-font-smoothing [Inherited, FontProperty]
-font-variant-ligatures [Inherited, FontProperty, NameForMethods=VariantLigatures, Custom=All]
-font-variant-position [Inherited, FontProperty, NameForMethods=VariantPosition]
-font-variant-caps [Inherited, FontProperty, NameForMethods=VariantCaps]
-font-variant-numeric [Inherited, FontProperty, NameForMethods=VariantNumeric, Custom=All]
-font-variant-alternates [Inherited, FontProperty, NameForMethods=VariantAlternates]
-font-variant-east-asian [Inherited, FontProperty, NameForMethods=VariantEastAsian, Custom=All]
--webkit-locale [Inherited, FontProperty, Custom=Value]
--webkit-text-orientation [Inherited, Custom=Value]
--epub-text-orientation = -webkit-text-orientation
-#if defined(ENABLE_TEXT_AUTOSIZING) && ENABLE_TEXT_AUTOSIZING
--webkit-text-size-adjust [Inherited, Custom=Value]
-#endif
-writing-mode [Inherited, Custom=Value]
--webkit-writing-mode = writing-mode
--epub-writing-mode = writing-mode
--webkit-text-zoom [Inherited, Custom=Value]
-zoom [Custom=All]
-font-synthesis [Inherited, FontProperty, Converter=FontSynthesis]
-
-// Keep this in between the highest priority props and the lower ones.
--webkit-ruby-position [Inherited]
-
-// The remaining properties are listed in alphabetical order
-alignment-baseline [SVG]
-all [Longhands=all]
-animation [Longhands=animation-name|animation-duration|animation-timing-function|animation-delay|animation-iteration-count|animation-direction|animation-fill-mode|animation-play-state]
-animation-delay [AnimationProperty, NameForMethods=Delay]
-animation-direction [AnimationProperty, NameForMethods=Direction]
-animation-duration [AnimationProperty, NameForMethods=Duration]
-animation-fill-mode [AnimationProperty, NameForMethods=FillMode]
-animation-iteration-count [AnimationProperty, NameForMethods=IterationCount]
-animation-name [AnimationProperty, NameForMethods=Name]
-animation-play-state [AnimationProperty, NameForMethods=PlayState]
-animation-timing-function [AnimationProperty, NameForMethods=TimingFunction]
-background [Longhands=background-image|background-position-x|background-position-y|background-size|background-repeat-x|background-repeat-y|background-attachment|background-origin|background-clip|background-color]
-background-attachment [FillLayerProperty, NameForMethods=Attachment]
-background-blend-mode [FillLayerProperty, NameForMethods=BlendMode]
-background-clip [FillLayerProperty, NameForMethods=Clip]
-background-color [VisitedLinkColorSupport, NoDefaultColor]
-background-image [FillLayerProperty, NameForMethods=Image]
-background-origin [FillLayerProperty, NameForMethods=Origin]
-background-position [Longhands=background-position-x|background-position-y]
-background-position-x [FillLayerProperty, NameForMethods=XPosition]
-background-position-y [FillLayerProperty, NameForMethods=YPosition]
-background-repeat [Longhands=background-repeat-x|background-repeat-y]
-background-repeat-x [FillLayerProperty, NameForMethods=RepeatX]
-background-repeat-y [FillLayerProperty, NameForMethods=RepeatY]
-background-size [FillLayerProperty, NameForMethods=Size]
-baseline-shift [SVG, Custom=Value]
-border [Longhands=border-top-color|border-top-style|border-top-width|border-right-color|border-right-style|border-right-width|border-bottom-color|border-bottom-style|border-bottom-width|border-left-color|border-left-style|border-left-width]
-border-bottom [Longhands=border-bottom-width|border-bottom-style|border-bottom-color]
-border-bottom-color [VisitedLinkColorSupport, Initial=invalidColor]
-border-bottom-left-radius [Initial=initialBorderRadius, Converter=Radius]
--webkit-border-bottom-left-radius = border-bottom-left-radius
-border-bottom-right-radius [Initial=initialBorderRadius, Converter=Radius]
--webkit-border-bottom-right-radius = border-bottom-right-radius
-border-bottom-style [Initial=initialBorderStyle]
-border-bottom-width [Initial=initialBorderWidth, Converter=LineWidth<float>]
-border-collapse [Inherited]
-border-color [Longhands=border-top-color|border-right-color|border-bottom-color|border-left-color]
-border-image [Longhands=border-image-source|border-image-slice|border-image-width|border-image-outset|border-image-repeat]
-border-image-outset [Custom=All]
-border-image-repeat [Custom=All]
-border-image-slice [Custom=All]
-border-image-source [Converter=StyleImage<CSSPropertyBorderImageSource>]
-border-image-width [Custom=All]
-border-left [Longhands=border-left-width|border-left-style|border-left-color]
-border-left-color [VisitedLinkColorSupport, Initial=invalidColor]
-border-left-style [Initial=initialBorderStyle]
-border-left-width [Initial=initialBorderWidth, Converter=LineWidth<float>]
-border-radius [Longhands=border-top-left-radius|border-top-right-radius|border-bottom-right-radius|border-bottom-left-radius]
-border-right [Longhands=border-right-width|border-right-style|border-right-color]
-border-right-color [VisitedLinkColorSupport, Initial=invalidColor]
-border-right-style [Initial=initialBorderStyle]
-border-right-width [Initial=initialBorderWidth, Converter=LineWidth<float>]
-border-spacing [Inherited, Longhands=-webkit-border-horizontal-spacing|-webkit-border-vertical-spacing]
-border-style [Longhands=border-top-style|border-right-style|border-bottom-style|border-left-style]
-border-top [Longhands=border-top-width|border-top-style|border-top-color]
-border-top-color [VisitedLinkColorSupport, Initial=invalidColor]
-border-top-left-radius [Initial=initialBorderRadius, Converter=Radius]
--webkit-border-top-left-radius = border-top-left-radius
-border-top-right-radius [Initial=initialBorderRadius, Converter=Radius]
--webkit-border-top-right-radius = border-top-right-radius
-border-top-style [Initial=initialBorderStyle]
-border-top-width [Initial=initialBorderWidth, Converter=LineWidth<float>]
-border-width [Longhands=border-top-width|border-right-width|border-bottom-width|border-left-width]
-bottom [Initial=initialOffset, Converter=LengthOrAuto]
-box-shadow [Custom=All]
-box-sizing
-break-after [Initial=initialBreakBetween]
-break-before [Initial=initialBreakBetween]
-break-inside [Initial=initialBreakInside]
-buffered-rendering [SVG]
-// -webkit-box-sizing worked in Safari 4 and earlier.
--webkit-box-sizing = box-sizing
-caption-side [Inherited]
--epub-caption-side = caption-side
-clear
-clip [Custom=All]
--webkit-clip-path [Converter=ClipPath]
-clip-path [SVG, Converter=SVGURIReference, NameForMethods=ClipperResource]
-clip-rule [Inherited, SVG]
-color-interpolation [Inherited, SVG]
-color-interpolation-filters [Inherited, SVG]
-color-profile [SkipBuilder]
-color-rendering [Inherited, SVG]
-content [Custom=All]
-counter-increment [Custom=All]
-counter-reset [Custom=All]
-cursor [Inherited, Custom=All]
-#if defined(ENABLE_CURSOR_VISIBILITY) && ENABLE_CURSOR_VISIBILITY
--webkit-cursor-visibility [Inherited]
-#endif
-cx [Initial=initialZeroLength, Converter=Length]
-cy [Initial=initialZeroLength, Converter=Length]
-dominant-baseline [SVG]
-empty-cells [Inherited]
-enable-background [SkipBuilder]
-fill [Inherited, SVG, Custom=All]
-fill-opacity [Inherited, SVG, Converter=Opacity]
-fill-rule [Inherited, SVG]
-float [NameForMethods=Floating]
-flood-color [SVG, Converter=SVGColor]
-flood-opacity [SVG, Converter=Opacity]
-font [Inherited, Longhands=font-family|font-size|font-style|font-variant-caps|font-weight|line-height]
-font-variant [Inherited, Longhands=font-variant-ligatures|font-variant-position|font-variant-caps|font-variant-numeric|font-variant-alternates|font-variant-east-asian]
-font-stretch [SkipBuilder]
-glyph-orientation-horizontal [Inherited, SVG, Converter=GlyphOrientation]
-glyph-orientation-vertical [Inherited, SVG, Converter=GlyphOrientationOrAuto]
-hanging-punctuation [Inherited, Converter=HangingPunctuation]
-height [Initial=initialSize, Converter=LengthSizing]
-#if defined(ENABLE_CSS_IMAGE_ORIENTATION) && ENABLE_CSS_IMAGE_ORIENTATION
-image-orientation [Inherited]
-#endif
-image-rendering [Inherited]
-#if defined(ENABLE_CSS_IMAGE_RESOLUTION) && ENABLE_CSS_IMAGE_RESOLUTION
-image-resolution [Inherited, Custom=All]
-#endif
-kerning [Inherited, SVG, Converter=SVGLengthValue]
-left [Initial=initialOffset, Converter=LengthOrAuto]
-letter-spacing [Inherited, Converter=Spacing]
-lighting-color [SVG, Converter=SVGColor]
-#if defined(ENABLE_TEXT_AUTOSIZING) && ENABLE_TEXT_AUTOSIZING
-line-height [Inherited, Custom=All]
-#else
-line-height [Inherited, Getter=specifiedLineHeight, ConditionalConverter=LineHeight]
-#endif
-list-style [Inherited, Longhands=list-style-type|list-style-position|list-style-image]
-list-style-image [Inherited, Converter=StyleImage<CSSPropertyListStyleImage>]
-list-style-position [Inherited]
-list-style-type [Inherited]
-margin [Longhands=margin-top|margin-right|margin-bottom|margin-left]
-margin-bottom [Initial=initialMargin, Converter=LengthOrAuto]
-margin-left [Initial=initialMargin, Converter=LengthOrAuto]
-margin-right [Initial=initialMargin, Converter=LengthOrAuto]
-margin-top [Initial=initialMargin, Converter=LengthOrAuto]
-marker [Inherited, Longhands=marker-start|marker-mid|marker-end]
-marker-end [Inherited, SVG, Converter=SVGURIReference, NameForMethods=MarkerEndResource]
-marker-mid [Inherited, SVG, Converter=SVGURIReference, NameForMethods=MarkerMidResource]
-marker-start [Inherited, SVG, Converter=SVGURIReference, NameForMethods=MarkerStartResource]
-mask [SVG, Converter=SVGURIReference, NameForMethods=MaskerResource]
-mask-type [SVG]
-max-height [Initial=initialMaxSize, Converter=LengthMaxSizing]
-max-width [Initial=initialMaxSize, Converter=LengthMaxSizing]
-min-height [Initial=initialMinSize, Converter=LengthSizing]
-min-width [Initial=initialMinSize, Converter=LengthSizing]
-object-fit
-object-position [Converter=ObjectPosition]
-opacity
-// Honor -webkit-opacity as a synonym for opacity. This was the only syntax that worked in Safari 1.1,
-// and may be in use on some websites and widgets.
--webkit-opacity = opacity
-orphans [Inherited, AutoFunctions]
-outline [Longhands=outline-color|outline-style|outline-width]
-outline-color [VisitedLinkColorSupport, Initial=invalidColor]
-outline-offset [Converter=ComputedLength<float>]
-outline-style [Custom=All]
-outline-width [Converter=LineWidth<float>]
-overflow [Longhands=overflow-x|overflow-y]
-overflow-wrap
-overflow-x
-overflow-y
-padding [Longhands=padding-top|padding-right|padding-bottom|padding-left]
-padding-bottom [Initial=initialPadding, Converter=Length]
-padding-left [Initial=initialPadding, Converter=Length]
-padding-right [Initial=initialPadding, Converter=Length]
-padding-top [Initial=initialPadding, Converter=Length]
-page [SkipBuilder]
-page-break-after [Initial=initialBreakBetween, NameForMethods=BreakAfter, Converter=PageBreakBetween]
-page-break-before [Initial=initialBreakBetween, NameForMethods=BreakBefore, Converter=PageBreakBetween]
-page-break-inside [Initial=initialBreakInside, NameForMethods=BreakInside, Converter=PageBreakInside]
-paint-order [SVG, Converter=PaintOrder]
-pointer-events [Inherited]
-position
-quotes [Inherited, Converter=Quotes]
-r [Initial=initialZeroLength, Converter=Length]
-resize [Inherited, Converter=Resize]
-right [Initial=initialOffset, Converter=LengthOrAuto]
-rx [Initial=initialZeroLength, Converter=Length]
-ry [Initial=initialZeroLength, Converter=Length]
-shape-rendering [Inherited, SVG]
-size [Custom=All]
-src [SkipBuilder]
-stop-color [SVG, Converter=SVGColor]
-stop-opacity [SVG, Converter=Opacity]
-stroke [Inherited, SVG, Custom=All]
-stroke-dasharray [Inherited, SVG, Converter=StrokeDashArray, NameForMethods=StrokeDashArray]
-stroke-dashoffset [Inherited, NameForMethods=StrokeDashOffset, Initial=initialZeroLength, Converter=Length]
-stroke-linecap [Inherited, SVG, NameForMethods=CapStyle]
-stroke-linejoin [Inherited, SVG, NameForMethods=JoinStyle]
-stroke-miterlimit [Inherited, SVG, Converter=Number<float>, NameForMethods=StrokeMiterLimit]
-stroke-opacity [Inherited, SVG, Converter=Opacity]
-stroke-width [Inherited, Initial=initialOneLength, Converter=Length]
-speak [Inherited]
-table-layout
-tab-size [Inherited]
-text-align [Inherited, Converter=TextAlign]
-text-anchor [Inherited, SVG]
-text-decoration [Converter=TextDecoration]
-text-indent [Inherited, Custom=All]
-text-line-through [SkipBuilder]
-text-line-through-color [SkipBuilder]
-text-line-through-mode [SkipBuilder]
-text-line-through-style [SkipBuilder]
-text-line-through-width [SkipBuilder]
-text-overflow
-text-overline [SkipBuilder]
-text-overline-color [SkipBuilder]
-text-overline-mode [SkipBuilder]
-text-overline-style [SkipBuilder]
-text-overline-width [SkipBuilder]
-text-shadow [Inherited, Custom=All]
-text-transform [Inherited]
--epub-text-transform = text-transform
-text-underline [SkipBuilder]
-text-underline-color [SkipBuilder]
-text-underline-mode [SkipBuilder]
-text-underline-style [SkipBuilder]
-text-underline-width [SkipBuilder]
-top [Initial=initialOffset, Converter=LengthOrAuto]
-transition [Longhands=transition-property|transition-duration|transition-timing-function|transition-delay]
-transition-delay [AnimationProperty, NameForMethods=Delay]
-transition-duration [AnimationProperty, NameForMethods=Duration]
-transition-property [AnimationProperty, NameForMethods=Property]
-transition-timing-function [AnimationProperty, NameForMethods=TimingFunction]
-unicode-bidi
-unicode-range [SkipBuilder]
-vector-effect [SVG]
-vertical-align [Custom=Value]
-visibility [Inherited]
-white-space [Inherited]
-widows [Inherited, AutoFunctions]
-width [Initial=initialSize, Converter=LengthSizing]
-will-change [Custom=Value]
-word-break [Inherited]
--epub-word-break = word-break
-word-spacing [Inherited, ConditionalConverter=WordSpacing]
-word-wrap [Inherited=EOverflowWrap, NameForMethods=OverflowWrap]
-x [Initial=initialZeroLength, Converter=Length]
-y [Initial=initialZeroLength, Converter=Length]
-z-index [AutoFunctions]
-alt [NameForMethods=ContentAltText, Custom=Value]
--webkit-alt = alt
--webkit-animation = animation
--webkit-animation-delay = animation-delay
--webkit-animation-direction = animation-direction
--webkit-animation-duration = animation-duration
--webkit-animation-fill-mode = animation-fill-mode
--webkit-animation-iteration-count = animation-iteration-count
--webkit-animation-name = animation-name
--webkit-animation-play-state = animation-play-state
--webkit-animation-timing-function = animation-timing-function
-#if defined(ENABLE_CSS_ANIMATIONS_LEVEL_2) && ENABLE_CSS_ANIMATIONS_LEVEL_2
--webkit-animation-trigger [AnimationProperty, NameForMethods=Trigger]
-#endif
--webkit-appearance
--webkit-aspect-ratio [Inherited, Custom=All]
--webkit-backface-visibility
--webkit-background-clip [FillLayerProperty, NameForMethods=Clip]
--webkit-background-composite [FillLayerProperty, NameForMethods=Composite]
--webkit-background-origin [FillLayerProperty, NameForMethods=Origin]
-// -webkit-background-size differs from background-size only in the interpretation of
-// a single value: -webkit-background-size: l; is equivalent to background-size: l l;
-// whereas background-size: l; is equivalent to background-size: l auto;
--webkit-background-size [FillLayerProperty, NameForMethods=Size]
--webkit-border-after [Longhands=-webkit-border-after-width|-webkit-border-after-style|-webkit-border-after-color]
--webkit-border-after-color [SkipBuilder]
--webkit-border-after-style [SkipBuilder]
--webkit-border-after-width [SkipBuilder]
--webkit-border-before [Longhands=-webkit-border-before-width|-webkit-border-before-style|-webkit-border-before-color]
--webkit-border-before-color [SkipBuilder]
--webkit-border-before-style [SkipBuilder]
--webkit-border-before-width [SkipBuilder]
--webkit-border-end [Longhands=-webkit-border-end-width|-webkit-border-end-style|-webkit-border-end-color]
--webkit-border-end-color [SkipBuilder]
--webkit-border-end-style [SkipBuilder]
--webkit-border-end-width [SkipBuilder]
--webkit-border-fit
--webkit-border-horizontal-spacing [Inherited, NameForMethods=HorizontalBorderSpacing, Converter=ComputedLength<float>]
--webkit-border-image [Initial=initialNinePieceImage, Converter=BorderImage<CSSPropertyWebkitBorderImage>]
-// -webkit-border-radius differs from border-radius only in the interpretation of
-// a value consisting of two lengths: "-webkit-border-radius: l1 l2;" is equivalent
-// to "border-radius: l1 / l2;"
--webkit-border-radius [Longhands=border-top-left-radius|border-top-right-radius|border-bottom-right-radius|border-bottom-left-radius]
--webkit-border-start [Longhands=-webkit-border-start-width|-webkit-border-start-style|-webkit-border-start-color]
--webkit-border-start-color [SkipBuilder]
--webkit-border-start-style [SkipBuilder]
--webkit-border-start-width [SkipBuilder]
--webkit-border-vertical-spacing [Inherited, NameForMethods=VerticalBorderSpacing, Converter=ComputedLength<float>]
--webkit-box-align
--webkit-box-direction [Inherited]
--webkit-box-flex
--webkit-box-flex-group
--webkit-box-lines
--webkit-box-ordinal-group
--webkit-box-orient
--webkit-box-pack
--webkit-box-reflect [Converter=Reflection]
-// -webkit-box-shadow differs from box-shadow in its treatement of blur radii > 8px.
-// Let -webkit-box-shadow blur radius be w_r and box-shadow blur radius be b_r. For
-// w_r > 8px, b_r = 8 + 4 * sqrt((w_r - 8) / 2).
--webkit-box-shadow [Custom=All]
--webkit-column-axis
--webkit-column-break-after [Initial=initialBreakBetween, NameForMethods=BreakAfter, Converter=ColumnBreakBetween]
--webkit-column-break-before [Initial=initialBreakBetween, NameForMethods=BreakBefore, Converter=ColumnBreakBetween]
--webkit-column-break-inside [Initial=initialBreakInside, NameForMethods=BreakInside, Converter=ColumnBreakInside]
-column-count [AutoFunctions]
--webkit-column-count = column-count
-column-fill
--webkit-column-fill = column-fill
-column-gap [Custom=All]
--webkit-column-gap = column-gap
--webkit-column-progression
-column-rule [Longhands=column-rule-width|column-rule-style|column-rule-color]
--webkit-column-rule = column-rule
-column-rule-color [VisitedLinkColorSupport, Initial=invalidColor]
--webkit-column-rule-color = column-rule-color
-column-rule-style [Initial=initialBorderStyle]
--webkit-column-rule-style = column-rule-style
-column-rule-width [Converter=LineWidth<unsigned short>]
--webkit-column-rule-width = column-rule-width
-column-span
--webkit-column-span = column-span
-column-width [AutoFunctions, Converter=ComputedLength<float>]
--webkit-column-width = column-width
-columns [Longhands=column-width|column-count]
--webkit-columns = columns
-#if defined(ENABLE_CSS_BOX_DECORATION_BREAK) && ENABLE_CSS_BOX_DECORATION_BREAK
--webkit-box-decoration-break
-#endif
-#if defined(ENABLE_CSS_COMPOSITING) && ENABLE_CSS_COMPOSITING
-mix-blend-mode [NameForMethods=BlendMode]
-isolation
-#endif
-filter [ConditionalConverter=FilterOperations]
--webkit-filter = filter
-align-content [Initial=initialContentAlignment, Converter=ContentAlignmentData]
--webkit-align-content = align-content
-align-items [Initial=initialDefaultAlignment, Converter=SelfOrDefaultAlignmentData]
--webkit-align-items = align-items
-align-self [Initial=initialSelfAlignment, Converter=SelfOrDefaultAlignmentData]
--webkit-align-self = align-self
-flex [Longhands=flex-grow|flex-shrink|flex-basis]
--webkit-flex = flex
-flex-basis [Converter=LengthOrAuto]
--webkit-flex-basis = flex-basis
-flex-direction
--webkit-flex-direction = flex-direction
-flex-flow [Longhands=flex-direction|flex-wrap]
--webkit-flex-flow = flex-flow
-flex-grow
--webkit-flex-grow = flex-grow
-flex-shrink
--webkit-flex-shrink = flex-shrink
-flex-wrap
--webkit-flex-wrap = flex-wrap
-justify-content [Initial=initialContentAlignment, Converter=ContentAlignmentData]
--webkit-justify-content = justify-content
-#if defined(ENABLE_FILTERS_LEVEL_2) && ENABLE_FILTERS_LEVEL_2
--webkit-backdrop-filter [ConditionalConverter=FilterOperations]
-#endif
--webkit-font-size-delta [SkipBuilder]
-#if defined(ENABLE_CSS_GRID_LAYOUT) && ENABLE_CSS_GRID_LAYOUT
-justify-self [Initial=initialSelfAlignment, Converter=SelfOrDefaultAlignmentData]
-justify-items [Initial=initialSelfAlignment, Converter=SelfOrDefaultAlignmentData]
--webkit-justify-items = justify-items
-grid [Longhands=grid-template-rows|grid-template-columns|grid-template-areas|grid-auto-flow|grid-auto-rows|grid-auto-columns|grid-column-gap|grid-row-gap]
-grid-area [Longhands=grid-row-start|grid-column-start|grid-row-end|grid-column-end]
-grid-auto-columns [Converter=GridTrackSizeList]
-grid-auto-rows [Converter=GridTrackSizeList]
-grid-column-end [ConditionalConverter=GridPosition, NameForMethods=GridItemColumnEnd]
-grid-column-gap [Initial=initialZeroLength, Converter=Length]
-grid-column-start [ConditionalConverter=GridPosition, NameForMethods=GridItemColumnStart]
-grid-template [Longhands=grid-template-rows|grid-template-columns|grid-template-areas]
-grid-template-columns [Custom=All]
-grid-template-rows [Custom=All]
-grid-row-end [ConditionalConverter=GridPosition, NameForMethods=GridItemRowEnd]
-grid-row-gap [Initial=initialZeroLength, Converter=Length]
-grid-row-start [ConditionalConverter=GridPosition, NameForMethods=GridItemRowStart]
-grid-column [Longhands=grid-column-start|grid-column-end]
-grid-gap [Longhands=grid-row-gap|grid-column-gap]
-grid-row [Longhands=grid-row-start|grid-row-end]
-grid-template-areas [Custom=All]
-grid-auto-flow [Converter=GridAutoFlow]
-#endif
--webkit-hyphenate-character [Inherited, NameForMethods=HyphenationString, Converter=StringOrAuto]
--webkit-hyphenate-limit-after [Inherited, NameForMethods=HyphenationLimitAfter, Converter=NumberOrAuto<short>]
--webkit-hyphenate-limit-before [Inherited, NameForMethods=HyphenationLimitBefore, Converter=NumberOrAuto<short>]
--webkit-hyphenate-limit-lines [Inherited, NameForMethods=HyphenationLimitLines, Converter=WebkitHyphenateLimitLines]
--webkit-hyphens [Inherited]
--epub-hyphens = -webkit-hyphens
--webkit-initial-letter [Converter=InitialLetter]
--webkit-line-box-contain [Inherited, Converter=LineBoxContain]
--webkit-line-align [Inherited]
--webkit-line-break [Inherited]
--webkit-line-clamp
--webkit-line-grid [Inherited, Converter=StringOrNone]
--webkit-line-snap [Inherited]
--webkit-logical-width [SkipBuilder]
--webkit-logical-height [SkipBuilder]
--webkit-margin-after-collapse
--webkit-margin-before-collapse
--webkit-margin-bottom-collapse [NameForMethods=MarginAfterCollapse]
--webkit-margin-top-collapse [NameForMethods=MarginBeforeCollapse]
--webkit-margin-collapse [Longhands=-webkit-margin-before-collapse|-webkit-margin-after-collapse]
--webkit-margin-after [SkipBuilder]
--webkit-margin-before [SkipBuilder]
--webkit-margin-end [SkipBuilder]
--webkit-margin-start [SkipBuilder]
--webkit-marquee [Longhands=-webkit-marquee-direction|-webkit-marquee-increment|-webkit-marquee-repetition|-webkit-marquee-style|-webkit-marquee-speed]
--webkit-marquee-direction
--webkit-marquee-increment [ConditionalConverter=MarqueeIncrement]
--webkit-marquee-repetition [NameForMethods=MarqueeLoopCount, Converter=MarqueeRepetition]
--webkit-marquee-speed [Converter=MarqueeSpeed]
--webkit-marquee-style [NameForMethods=MarqueeBehavior]
--webkit-mask [Longhands=-webkit-mask-image|-webkit-mask-source-type|-webkit-mask-position-x|-webkit-mask-position-y|-webkit-mask-size|-webkit-mask-repeat-x|-webkit-mask-repeat-y|-webkit-mask-origin|-webkit-mask-clip]
--webkit-mask-box-image [Initial=initialNinePieceImage, Converter=BorderMask<CSSPropertyWebkitMaskBoxImage>]
--webkit-mask-box-image-outset [Custom=All]
--webkit-mask-box-image-repeat [Custom=All]
--webkit-mask-box-image-slice [Custom=All]
--webkit-mask-box-image-source [Converter=StyleImage<CSSPropertyWebkitMaskBoxImageSource>]
--webkit-mask-box-image-width [Custom=All]
--webkit-mask-clip [FillLayerProperty, NameForMethods=Clip]
--webkit-mask-composite [FillLayerProperty, NameForMethods=Composite]
--webkit-mask-image [FillLayerProperty, NameForMethods=Image]
--webkit-mask-origin [FillLayerProperty, NameForMethods=Origin]
--webkit-mask-position [Longhands=-webkit-mask-position-x|-webkit-mask-position-y]
--webkit-mask-position-x [FillLayerProperty, NameForMethods=XPosition]
--webkit-mask-position-y [FillLayerProperty, NameForMethods=YPosition]
--webkit-mask-repeat [Longhands=-webkit-mask-repeat-x|-webkit-mask-repeat-y]
--webkit-mask-repeat-x [FillLayerProperty, NameForMethods=RepeatX]
--webkit-mask-repeat-y [FillLayerProperty, NameForMethods=RepeatY]
--webkit-mask-size [FillLayerProperty, NameForMethods=Size]
--webkit-mask-source-type [FillLayerProperty, NameForMethods=MaskSourceType]
--webkit-max-logical-width [SkipBuilder]
--webkit-max-logical-height [SkipBuilder]
--webkit-min-logical-width [SkipBuilder]
--webkit-min-logical-height [SkipBuilder]
--webkit-nbsp-mode [Inherited, Setter=setNBSPMode, Initial=initialNBSPMode]
-order
--webkit-order = order
--webkit-padding-after [SkipBuilder]
--webkit-padding-before [SkipBuilder]
--webkit-padding-end [SkipBuilder]
--webkit-padding-start [SkipBuilder]
-perspective [ConditionalConverter=Perspective]
--webkit-perspective = perspective
-perspective-origin [Longhands=perspective-origin-x|perspective-origin-y]
--webkit-perspective-origin = perspective-origin
-perspective-origin-x [Converter=PositionComponentX]
--webkit-perspective-origin-x = perspective-origin-x
-perspective-origin-y [Converter=PositionComponentY]
--webkit-perspective-origin-y = perspective-origin-y
--webkit-print-color-adjust [Inherited]
--webkit-rtl-ordering [Inherited, Setter=setRTLOrdering, Initial=initialRTLOrdering]
-#if defined(ENABLE_CSS_SCROLL_SNAP)
--webkit-scroll-snap-points-x [Converter=ScrollSnapPoints, Custom=Initial|Inherit]
--webkit-scroll-snap-points-y [Converter=ScrollSnapPoints, Custom=Initial|Inherit]
--webkit-scroll-snap-type
--webkit-scroll-snap-destination [Converter=SnapCoordinatePair]
--webkit-scroll-snap-coordinate [Converter=ScrollSnapCoordinates, NameForMethods=ScrollSnapCoordinates]
-#endif
--webkit-svg-shadow [SVG, Custom=All]
--webkit-text-combine [Inherited]
--epub-text-combine = -webkit-text-combine
-#if defined(ENABLE_CSS3_TEXT) && ENABLE_CSS3_TEXT
--webkit-text-align-last [Inherited]
--webkit-text-justify [Inherited]
-#endif
--webkit-text-decoration [Longhands=-webkit-text-decoration-line|-webkit-text-decoration-style|-webkit-text-decoration-color]
--webkit-text-decoration-line [NameForMethods=TextDecoration, Converter=TextDecoration]
--webkit-text-decoration-style
--webkit-text-decoration-color [VisitedLinkColorSupport, Initial=invalidColor]
--webkit-text-decoration-skip [Inherited, Converter=TextDecorationSkip]
--webkit-text-underline-position [Inherited, Converter=TextUnderlinePosition]
--webkit-text-decorations-in-effect [Inherited, SkipBuilder]
--webkit-text-emphasis [Inherited, Longhands=-webkit-text-emphasis-style|-webkit-text-emphasis-color]
--epub-text-emphasis = -webkit-text-emphasis
-text-emphasis = -webkit-text-emphasis
--webkit-text-emphasis-color [Inherited, VisitedLinkColorSupport, Initial=invalidColor]
--epub-text-emphasis-color = -webkit-text-emphasis-color
-text-emphasis-color = -webkit-text-emphasis-color
--webkit-text-emphasis-position [Inherited, Converter=TextEmphasisPosition]
-text-emphasis-position = -webkit-text-emphasis-position
--webkit-text-emphasis-style [Inherited, Custom=All]
--epub-text-emphasis-style = -webkit-text-emphasis-style
-text-emphasis-style = -webkit-text-emphasis-style
--webkit-text-fill-color [Inherited, VisitedLinkColorSupport, Initial=invalidColor]
--webkit-text-security [Inherited]
--webkit-text-stroke [Inherited, Longhands=-webkit-text-stroke-width|-webkit-text-stroke-color]
--webkit-text-stroke-color [Inherited, VisitedLinkColorSupport, Initial=invalidColor]
--webkit-text-stroke-width [Inherited, Converter=TextStrokeWidth]
-
-transform [Converter=Transform]
--webkit-transform = transform
-transform-origin [Longhands=transform-origin-x|transform-origin-y|transform-origin-z]
--webkit-transform-origin = transform-origin
-transform-origin-x [Converter=PositionComponentX]
--webkit-transform-origin-x = transform-origin-x
-transform-origin-y [Converter=PositionComponentY]
--webkit-transform-origin-y = transform-origin-y
-transform-origin-z [Converter=ComputedLength<float>]
--webkit-transform-origin-z = transform-origin-z
-transform-style [NameForMethods=TransformStyle3D]
-// Keeping -webkit-transform-style around is how we'll detect legacy content. At that point we'll have to add a custom builder and a new ETransformStyle3D type.
--webkit-transform-style [NameForMethods=TransformStyle3D]
--webkit-transition = transition
--webkit-transition-delay = transition-delay
--webkit-transition-duration = transition-duration
--webkit-transition-property = transition-property
--webkit-transition-timing-function = transition-timing-function
--webkit-user-drag
--webkit-user-modify [Inherited]
--webkit-user-select [Inherited]
-#if defined(ENABLE_CSS_REGIONS) && ENABLE_CSS_REGIONS
--webkit-flow-into [NameForMethods=FlowThread, Converter=StringOrNone]
--webkit-flow-from [NameForMethods=RegionThread, Converter=StringOrNone]
--webkit-region-fragment
--webkit-region-break-after [Initial=initialBreakBetween, NameForMethods=BreakAfter, Converter=RegionBreakBetween]
--webkit-region-break-before [Initial=initialBreakBetween, NameForMethods=BreakBefore, Converter=RegionBreakBetween]
--webkit-region-break-inside [Initial=initialBreakInside, NameForMethods=BreakInside, Converter=RegionBreakInside]
-#endif
-shape-outside [Converter=ShapeValue]
--webkit-shape-outside = shape-outside
-shape-margin [Converter=Length]
--webkit-shape-margin = shape-margin
-shape-image-threshold [Converter=NumberOrAuto<float>]
--webkit-shape-image-threshold = shape-image-threshold
-#if defined(ENABLE_CSS_DEVICE_ADAPTATION) && ENABLE_CSS_DEVICE_ADAPTATION
-max-zoom [SkipBuilder]
-min-zoom [SkipBuilder]
-orientation [SkipBuilder]
-user-zoom [SkipBuilder]
-#endif
-#if defined(ENABLE_TOUCH_EVENTS) && ENABLE_TOUCH_EVENTS
--webkit-tap-highlight-color [Inherited, Converter=TapHighlightColor]
-#endif
-#if defined(ENABLE_DASHBOARD_SUPPORT) && ENABLE_DASHBOARD_SUPPORT
--webkit-dashboard-region [NameForMethods=DashboardRegions, Custom=Value]
-#endif
-#if defined(ENABLE_ACCELERATED_OVERFLOW_SCROLLING) && ENABLE_ACCELERATED_OVERFLOW_SCROLLING
--webkit-overflow-scrolling [Inherited, NameForMethods=UseTouchOverflowScrolling, Converter=OverflowScrolling]
-#endif
-#if defined(ENABLE_TOUCH_EVENTS) && ENABLE_TOUCH_EVENTS
-touch-action
-#endif
-#if defined(WTF_PLATFORM_IOS) && WTF_PLATFORM_IOS
--webkit-touch-callout [Inherited, NameForMethods=TouchCalloutEnabled, Converter=TouchCallout]
-#endif
-
-#if defined(ENABLE_CSS_TRAILING_WORD) && ENABLE_CSS_TRAILING_WORD
--apple-trailing-word [Inherited, NameForMethods=TrailingWord]
-#endif
-
-#if defined(ENABLE_APPLE_PAY) && ENABLE_APPLE_PAY
--apple-pay-button-style
--apple-pay-button-type
-#endif
</del></span></pre></div>
<a id="trunkSourceWebCorecssStyleResolvercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/StyleResolver.cpp (209000 => 209001)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/StyleResolver.cpp        2016-11-28 18:28:50 UTC (rev 209000)
+++ trunk/Source/WebCore/css/StyleResolver.cpp        2016-11-28 19:11:38 UTC (rev 209001)
</span><span class="lines">@@ -164,7 +164,6 @@
</span><span class="cx">
</span><span class="cx"> using namespace HTMLNames;
</span><span class="cx">
</span><del>-static const CSSPropertyID lastHighPriorityProperty = CSSPropertyFontSynthesis;
</del><span class="cx"> static const CSSPropertyID firstLowPriorityProperty = static_cast<CSSPropertyID>(lastHighPriorityProperty + 1);
</span><span class="cx">
</span><span class="cx"> static void extractDirectionAndWritingMode(const RenderStyle&, const StyleResolver::MatchResult&, TextDirection&, WritingMode&);
</span></span></pre></div>
<a id="trunkSourceWebCorecssmakeproppl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/makeprop.pl (209000 => 209001)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/makeprop.pl        2016-11-28 18:28:50 UTC (rev 209000)
+++ trunk/Source/WebCore/css/makeprop.pl        2016-11-28 19:11:38 UTC (rev 209001)
</span><span class="lines">@@ -3,7 +3,7 @@
</span><span class="cx"> # This file is part of the WebKit project
</span><span class="cx"> #
</span><span class="cx"> # Copyright (C) 1999 Waldo Bastian (bastian@kde.org)
</span><del>-# Copyright (C) 2007, 2008, 2012, 2014, 2015 Apple Inc. All rights reserved.
</del><ins>+# Copyright (C) 2007-2016 Apple Inc. All rights reserved.
</ins><span class="cx"> # Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
</span><span class="cx"> # Copyright (C) 2010 Andras Becsi (abecsi@inf.u-szeged.hu), University of Szeged
</span><span class="cx"> # Copyright (C) 2013 Google Inc. All rights reserved.
</span><span class="lines">@@ -22,103 +22,163 @@
</span><span class="cx"> # along with this library; see the file COPYING.LIB. If not, write to
</span><span class="cx"> # the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
</span><span class="cx"> # Boston, MA 02110-1301, USA.
</span><del>-use FindBin;
-use lib "$FindBin::Bin/../bindings/scripts";
</del><span class="cx">
</span><del>-use Getopt::Long;
-use preprocessor;
</del><span class="cx"> use strict;
</span><span class="cx"> use warnings;
</span><span class="cx">
</span><del>-my $defines;
-my $preprocessor;
</del><ins>+use English;
+use File::Spec;
+use Getopt::Long;
+use JSON::PP;
+
+sub addProperty($$);
+sub isPropertyEnabled($);
+
+my $inputFile = "CSSProperties.json";
+
+my $defines = "";
</ins><span class="cx"> my $gperf;
</span><span class="cx"> GetOptions('defines=s' => \$defines,
</span><del>- 'preprocessor=s' => \$preprocessor,
</del><span class="cx"> 'gperf-executable=s' => \$gperf);
</span><span class="cx">
</span><del>-my @NAMES = applyPreprocessor("CSSPropertyNames.in", $defines, $preprocessor);
-die "We've reached more than 1024 CSS properties, please make sure to update CSSProperty/StylePropertyMetadata accordingly" if (scalar(@NAMES) > 1024);
</del><ins>+my $input;
+{
+ local $INPUT_RECORD_SEPARATOR; # No separator; read through until end-of-file.
+ open(JSON, "<", $inputFile) or die "Cannot open $inputFile.\n";
+ $input = <JSON>;
+ close(JSON);
+}
</ins><span class="cx">
</span><del>-my %namesHash;
-my @duplicates = ();
</del><ins>+my $jsonDecoder = JSON::PP->new->utf8;
+my $jsonHashRef = $jsonDecoder->decode($input);
+my $propertiesHashRef = $jsonHashRef->{properties};
+my @allNames = keys(%$propertiesHashRef);
+die "We've reached more than 1024 CSS properties, please make sure to update CSSProperty/StylePropertyMetadata accordingly" if @allNames > 1024;
</ins><span class="cx">
</span><ins>+my %defines = map { $_ => 1 } split(/ /, $defines);
+
+my @names;
</ins><span class="cx"> my $numPredefinedProperties = 2;
</span><del>-my @names = ();
</del><span class="cx"> my %nameIsInherited;
</span><ins>+my %nameIsHighPriority;
</ins><span class="cx"> my %propertiesWithStyleBuilderOptions;
</span><span class="cx"> my %styleBuilderOptions = (
</span><del>- AnimationProperty => 1, # Defined in Source/WebCore/css/StyleBuilderConverter.h
- AutoFunctions => 1,
- ConditionalConverter => 1,
- Converter => 1,
- Custom => 1,
- FillLayerProperty => 1,
- FontProperty => 1,
- Getter => 1,
- Initial => 1,
- Longhands => 1,
- NameForMethods => 1,
- NoDefaultColor => 1,
- SVG => 1,
- SkipBuilder => 1,
- Setter => 1,
- VisitedLinkColorSupport => 1,
</del><ins>+ "animatable" => 1, # Defined in Source/WebCore/css/StyleBuilderConverter.h
+ "auto-functions" => 1,
+ "conditional-converter" => 1,
+ "converter" => 1,
+ "custom" => 1,
+ "fill-layer-property" => 1,
+ "font-property" => 1,
+ "getter" => 1,
+ "initial" => 1,
+ "longhands" => 1,
+ "name-for-methods" => 1,
+ "no-default-color" => 1,
+ "svg" => 1,
+ "skip-builder" => 1,
+ "setter" => 1,
+ "visited-link-color-support" => 1,
</ins><span class="cx"> );
</span><span class="cx"> my %nameToId;
</span><del>-my @aliases = ();
-foreach (@NAMES) {
- next if (m/(^\s*$)/);
- next if (/^#/);
</del><ins>+my %nameToAliases;
</ins><span class="cx">
</span><del>- # Input may use a different EOL sequence than $/, so avoid chomp.
- $_ =~ s/\s*\[(.+?)\]\r?$//;
- my @options = ();
- if ($1) {
- @options = split(/\s*,\s*/, $1);
- }
</del><ins>+for my $name (@allNames) {
+ my $value = $propertiesHashRef->{$name};
+ my $valueType = ref($value);
+ if ($valueType eq "HASH") {
+ if (isPropertyEnabled($value)) {
+ addProperty($name, $value);
+ }
+ } elsif ($valueType eq "ARRAY") {
+ for my $v (@$value) {
+ if (isPropertyEnabled($v)) {
+ addProperty($name, $v);
+ last;
+ }
+ }
+ } else {
+ die "$name does not have a supported value type. Only dictionary and array types are supported.";
+ }
+}
</ins><span class="cx">
</span><del>- $_ =~ s/[\r\n]+$//g;
- if (exists $namesHash{$_}) {
- push @duplicates, $_;
- } else {
- $namesHash{$_} = 1;
- }
- if ($_ =~ /=/) {
- if (@options) {
- die "Options are specified on an alias $_: ", join(", ", @options) . "\n";
</del><ins>+sub isPropertyEnabled($)
+{
+ my ($optionsHashRef) = @_;
+ if (!$optionsHashRef->{"codegen-properties"} || !$optionsHashRef->{"codegen-properties"}{"enable-if"}) {
+ return 1;
</ins><span class="cx"> }
</span><del>- push @aliases, $_;
- } else {
- $nameIsInherited{$_} = 0;
- $propertiesWithStyleBuilderOptions{$_} = {};
- foreach my $option (@options) {
- my ($optionName, $optionValue) = split(/=/, $option);
- if ($optionName eq "Inherited") {
- $nameIsInherited{$_} = 1;
- } elsif ($styleBuilderOptions{$optionName}) {
- $propertiesWithStyleBuilderOptions{$_}{$optionName} = $optionValue;
- } else {
- die "Unrecognized \"" . $optionName . "\" option for " . $_ . " property.";
- }
</del><ins>+ if (exists($defines{$optionsHashRef->{"codegen-properties"}{"enable-if"}})) {
+ return 1;
</ins><span class="cx"> }
</span><ins>+ if (substr($optionsHashRef->{"codegen-properties"}{"enable-if"}, 0, 1) eq "!" && !exists($defines{substr($optionsHashRef->{"codegen-properties"}{"enable-if"}, 1)})) {
+ return 1;
+ }
+ return 0;
+}
</ins><span class="cx">
</span><del>- my $id = $_;
</del><ins>+sub addProperty($$)
+{
+ my ($name, $optionsHashRef) = @_;
+
+ push @names, $name;
+
+ my $id = $name;
</ins><span class="cx"> $id =~ s/(^[^-])|-(.)/uc($1||$2)/ge;
</span><del>- $nameToId{$_} = $id;
</del><ins>+ $nameToId{$name} = $id;
</ins><span class="cx">
</span><del>- push @names, $_;
- }
</del><ins>+ for my $optionName (keys %{$optionsHashRef}) {
+ if ($optionName eq "codegen-properties") {
+ my $codegenProperties = $optionsHashRef->{"codegen-properties"};
+ for my $codegenOptionName (keys %$codegenProperties) {
+ if ($codegenOptionName eq "enable-if") {
+ next;
+ } elsif ($codegenOptionName eq "high-priority") {
+ $nameIsHighPriority{$name} = 1;
+ } elsif ($codegenOptionName eq "aliases") {
+ $nameToAliases{$name} = $codegenProperties->{"aliases"};
+ } elsif ($styleBuilderOptions{$codegenOptionName}) {
+ $propertiesWithStyleBuilderOptions{$name}{$codegenOptionName} = $codegenProperties->{$codegenOptionName};
+ } else {
+ die "Unrecognized codegen property \"$optionName\" for $name property.";
+ }
+ }
+ } elsif ($optionName eq "animatable") {
+ $propertiesWithStyleBuilderOptions{$name}{"animatable"} = $optionsHashRef->{"animatable"};
+ } elsif ($optionName eq "inherited") {
+ $nameIsInherited{$name} = 1;
+ } elsif ($optionName eq "values") {
+ # FIXME: Implement.
+ }
+ # We allow unrecognized options to pass through without error to support annotation.
+ }
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-if (@duplicates > 0) {
- die 'Duplicate CSS property names: ', join(', ', @duplicates) . "\n";
</del><ins>+sub sortByDescendingPriorityAndName
+{
+ # Sort names with high priority to the front
+ if (!!$nameIsHighPriority{$a} < !!$nameIsHighPriority{$b}) {
+ return 1;
+ }
+ if (!!$nameIsHighPriority{$a} > !!$nameIsHighPriority{$b}) {
+ return -1;
+ }
+ # Sort names without leading '-' to the front
+ if (substr($a, 0, 1) eq "-" && substr($b, 0, 1) ne "-") {
+ return 1;
+ }
+ if (substr($a, 0, 1) ne "-" && substr($b, 0, 1) eq "-") {
+ return -1;
+ }
+ return $a cmp $b;
</ins><span class="cx"> }
</span><span class="cx">
</span><ins>+@names = sort sortByDescendingPriorityAndName @names;
+
</ins><span class="cx"> open GPERF, ">CSSPropertyNames.gperf" || die "Could not open CSSPropertyNames.gperf for writing";
</span><span class="cx"> print GPERF << "EOF";
</span><span class="cx"> %{
</span><del>-/* This file is automatically generated from CSSPropertyNames.in by makeprop, do not edit */
</del><ins>+/* This file is automatically generated from $inputFile by makeprop, do not edit */
</ins><span class="cx"> #include "config.h"
</span><span class="cx"> #include \"CSSProperty.h\"
</span><span class="cx"> #include \"CSSPropertyNames.h\"
</span><span class="lines">@@ -171,10 +231,13 @@
</span><span class="cx"> print GPERF $name . ", CSSProperty" . $nameToId{$name} . "\n";
</span><span class="cx"> }
</span><span class="cx">
</span><del>-foreach my $alias (@aliases) {
- $alias =~ /^([^\s]*)[\s]*=[\s]*([^\s]*)/;
- my $name = $1;
- print GPERF $name . ", CSSProperty" . $nameToId{$2} . "\n";
</del><ins>+for my $name (@names) {
+ if (!$nameToAliases{$name}) {
+ next;
+ }
+ for my $alias (@{$nameToAliases{$name}}) {
+ print GPERF $alias . ", CSSProperty" . $nameToId{$name} . "\n";
+ }
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> print GPERF<< "EOF";
</span><span class="lines">@@ -271,7 +334,7 @@
</span><span class="cx">
</span><span class="cx"> open HEADER, ">CSSPropertyNames.h" || die "Could not open CSSPropertyNames.h for writing";
</span><span class="cx"> print HEADER << "EOF";
</span><del>-/* This file is automatically generated from CSSPropertyNames.in by makeprop, do not edit */
</del><ins>+/* This file is automatically generated from $inputFile by makeprop, do not edit */
</ins><span class="cx">
</span><span class="cx"> #pragma once
</span><span class="cx">
</span><span class="lines">@@ -294,7 +357,9 @@
</span><span class="cx"> my $first = $numPredefinedProperties;
</span><span class="cx"> my $i = $numPredefinedProperties;
</span><span class="cx"> my $maxLen = 0;
</span><ins>+my $lastHighPriorityPropertyName;
</ins><span class="cx"> foreach my $name (@names) {
</span><ins>+ $lastHighPriorityPropertyName = $name if $nameIsHighPriority{$name}; # Assumes that @names is sorted by descending priorities.
</ins><span class="cx"> print HEADER " CSSProperty" . $nameToId{$name} . " = " . $i . ",\n";
</span><span class="cx"> $i = $i + 1;
</span><span class="cx"> if (length($name) > $maxLen) {
</span><span class="lines">@@ -309,6 +374,7 @@
</span><span class="cx"> print HEADER "const int numCSSProperties = $num;\n";
</span><span class="cx"> print HEADER "const int lastCSSProperty = $last;\n";
</span><span class="cx"> print HEADER "const size_t maxCSSPropertyNameLength = $maxLen;\n";
</span><ins>+print HEADER "const CSSPropertyID lastHighPriorityProperty = CSSProperty" . $nameToId{$lastHighPriorityPropertyName} . ";\n";
</ins><span class="cx">
</span><span class="cx"> print HEADER << "EOF";
</span><span class="cx">
</span><span class="lines">@@ -347,7 +413,7 @@
</span><span class="cx"> my $name = shift;
</span><span class="cx"> my $builderFunction = shift;
</span><span class="cx">
</span><del>- return $propertiesWithStyleBuilderOptions{$name}{"Custom"}{$builderFunction} ? "StyleBuilderCustom" : "StyleBuilderFunctions";
</del><ins>+ return $propertiesWithStyleBuilderOptions{$name}{"custom"}{$builderFunction} ? "StyleBuilderCustom" : "StyleBuilderFunctions";
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> sub getNameForMethods {
</span><span class="lines">@@ -355,8 +421,8 @@
</span><span class="cx">
</span><span class="cx"> my $nameForMethods = $nameToId{$name};
</span><span class="cx"> $nameForMethods =~ s/Webkit//g;
</span><del>- if (exists($propertiesWithStyleBuilderOptions{$name}{"NameForMethods"})) {
- $nameForMethods = $propertiesWithStyleBuilderOptions{$name}{"NameForMethods"};
</del><ins>+ if (exists($propertiesWithStyleBuilderOptions{$name}{"name-for-methods"})) {
+ $nameForMethods = $propertiesWithStyleBuilderOptions{$name}{"name-for-methods"};
</ins><span class="cx"> }
</span><span class="cx"> return $nameForMethods;
</span><span class="cx"> }
</span><span class="lines">@@ -449,30 +515,31 @@
</span><span class="cx"> foreach my $name (@names) {
</span><span class="cx"> my $nameForMethods = getNameForMethods($name);
</span><span class="cx"> $nameForMethods =~ s/Webkit//g;
</span><del>- if (exists($propertiesWithStyleBuilderOptions{$name}{"NameForMethods"})) {
- $nameForMethods = $propertiesWithStyleBuilderOptions{$name}{"NameForMethods"};
</del><ins>+ if (exists($propertiesWithStyleBuilderOptions{$name}{"name-for-methods"})) {
+ $nameForMethods = $propertiesWithStyleBuilderOptions{$name}{"name-for-methods"};
</ins><span class="cx"> }
</span><span class="cx">
</span><del>- if (!exists($propertiesWithStyleBuilderOptions{$name}{"Getter"})) {
- $propertiesWithStyleBuilderOptions{$name}{"Getter"} = lcfirst($nameForMethods);
</del><ins>+ if (!exists($propertiesWithStyleBuilderOptions{$name}{"getter"})) {
+ $propertiesWithStyleBuilderOptions{$name}{"getter"} = lcfirst($nameForMethods);
</ins><span class="cx"> }
</span><del>- if (!exists($propertiesWithStyleBuilderOptions{$name}{"Setter"})) {
- $propertiesWithStyleBuilderOptions{$name}{"Setter"} = "set" . $nameForMethods;
</del><ins>+ if (!exists($propertiesWithStyleBuilderOptions{$name}{"setter"})) {
+ $propertiesWithStyleBuilderOptions{$name}{"setter"} = "set" . $nameForMethods;
</ins><span class="cx"> }
</span><del>- if (!exists($propertiesWithStyleBuilderOptions{$name}{"Initial"})) {
- if (exists($propertiesWithStyleBuilderOptions{$name}{"FillLayerProperty"})) {
- $propertiesWithStyleBuilderOptions{$name}{"Initial"} = "initialFill" . $nameForMethods;
</del><ins>+ if (!exists($propertiesWithStyleBuilderOptions{$name}{"initial"})) {
+ if (exists($propertiesWithStyleBuilderOptions{$name}{"fill-layer-property"})) {
+ $propertiesWithStyleBuilderOptions{$name}{"initial"} = "initialFill" . $nameForMethods;
</ins><span class="cx"> } else {
</span><del>- $propertiesWithStyleBuilderOptions{$name}{"Initial"} = "initial" . $nameForMethods;
</del><ins>+ $propertiesWithStyleBuilderOptions{$name}{"initial"} = "initial" . $nameForMethods;
</ins><span class="cx"> }
</span><span class="cx"> }
</span><del>- if (!exists($propertiesWithStyleBuilderOptions{$name}{"Custom"})) {
- $propertiesWithStyleBuilderOptions{$name}{"Custom"} = "";
- } elsif ($propertiesWithStyleBuilderOptions{$name}{"Custom"} eq "All") {
- $propertiesWithStyleBuilderOptions{$name}{"Custom"} = "Initial|Inherit|Value";
</del><ins>+ # FIXME: Convert option custom from a string to an array.
+ if (!exists($propertiesWithStyleBuilderOptions{$name}{"custom"})) {
+ $propertiesWithStyleBuilderOptions{$name}{"custom"} = "";
+ } elsif ($propertiesWithStyleBuilderOptions{$name}{"custom"} eq "All") {
+ $propertiesWithStyleBuilderOptions{$name}{"custom"} = "Initial|Inherit|Value";
</ins><span class="cx"> }
</span><del>- my %customValues = map { $_ => 1 } split(/\|/, $propertiesWithStyleBuilderOptions{$name}{"Custom"});
- $propertiesWithStyleBuilderOptions{$name}{"Custom"} = \%customValues;
</del><ins>+ my %customValues = map { $_ => 1 } split(/\|/, $propertiesWithStyleBuilderOptions{$name}{"custom"});
+ $propertiesWithStyleBuilderOptions{$name}{"custom"} = \%customValues;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> use constant {
</span><span class="lines">@@ -500,7 +567,7 @@
</span><span class="cx">
</span><span class="cx"> my $style = "styleResolver.style()";
</span><span class="cx"> my $setterContent .= $indent . "if (styleResolver.applyPropertyToRegularStyle())\n";
</span><del>- my $setValue = $style . "->" . $propertiesWithStyleBuilderOptions{$name}{"Setter"};
</del><ins>+ my $setValue = $style . "->" . $propertiesWithStyleBuilderOptions{$name}{"setter"};
</ins><span class="cx"> my $color = $valueIsPrimitive ? colorFromPrimitiveValue($value) : $value;
</span><span class="cx"> $setterContent .= $indent . " " . $setValue . "(" . $color . ");\n";
</span><span class="cx"> $setterContent .= $indent . "if (styleResolver.applyPropertyToVisitedLinkStyle())\n";
</span><span class="lines">@@ -530,8 +597,8 @@
</span><span class="cx"> $setterContent .= $indent . "AnimationList& list = styleResolver.style()->" . getEnsureAnimationsOrTransitionsMethod($name) . "();\n";
</span><span class="cx"> $setterContent .= $indent . "if (list.isEmpty())\n";
</span><span class="cx"> $setterContent .= $indent . " list.append(Animation::create());\n";
</span><del>- my $setter = $propertiesWithStyleBuilderOptions{$name}{"Setter"};
- my $initial = $propertiesWithStyleBuilderOptions{$name}{"Initial"};
</del><ins>+ my $setter = $propertiesWithStyleBuilderOptions{$name}{"setter"};
+ my $initial = $propertiesWithStyleBuilderOptions{$name}{"initial"};
</ins><span class="cx"> $setterContent .= $indent . "list.animation(0)." . $setter . "(Animation::" . $initial . "());\n";
</span><span class="cx"> if ($name eq "-webkit-transition-property") {
</span><span class="cx"> $setterContent .= $indent . "list.animation(0).setAnimationMode(Animation::AnimateAll);\n";
</span><span class="lines">@@ -553,8 +620,8 @@
</span><span class="cx"> $setterContent .= $indent . "for ( ; i < parentSize && parentList->animation(i)." . getTestFunction($name) . "(); ++i) {\n";
</span><span class="cx"> $setterContent .= $indent . " if (list.size() <= i)\n";
</span><span class="cx"> $setterContent .= $indent . " list.append(Animation::create());\n";
</span><del>- my $getter = $propertiesWithStyleBuilderOptions{$name}{"Getter"};
- my $setter = $propertiesWithStyleBuilderOptions{$name}{"Setter"};
</del><ins>+ my $getter = $propertiesWithStyleBuilderOptions{$name}{"getter"};
+ my $setter = $propertiesWithStyleBuilderOptions{$name}{"setter"};
</ins><span class="cx"> $setterContent .= $indent . " list.animation(i)." . $setter . "(parentList->animation(i)." . $getter . "());\n";
</span><span class="cx"> $setterContent .= $indent . " list.animation(i).setAnimationMode(parentList->animation(i).animationMode());\n";
</span><span class="cx"> $setterContent .= $indent . "}\n";
</span><span class="lines">@@ -599,11 +666,11 @@
</span><span class="cx"> my $name = shift;
</span><span class="cx"> my $indent = shift;
</span><span class="cx">
</span><del>- my $getter = $propertiesWithStyleBuilderOptions{$name}{"Getter"};
- my $setter = $propertiesWithStyleBuilderOptions{$name}{"Setter"};
</del><ins>+ my $getter = $propertiesWithStyleBuilderOptions{$name}{"getter"};
+ my $setter = $propertiesWithStyleBuilderOptions{$name}{"setter"};
</ins><span class="cx"> my $clearFunction = getClearFunction($name);
</span><span class="cx"> my $testFunction = getTestFunction($name);
</span><del>- my $initial = "FillLayer::" . $propertiesWithStyleBuilderOptions{$name}{"Initial"} . "(" . getFillLayerType($name) . ")";
</del><ins>+ my $initial = "FillLayer::" . $propertiesWithStyleBuilderOptions{$name}{"initial"} . "(" . getFillLayerType($name) . ")";
</ins><span class="cx">
</span><span class="cx"> my $setterContent = "";
</span><span class="cx"> $setterContent .= $indent . "// Check for (single-layer) no-op before clearing anything.\n";
</span><span class="lines">@@ -623,8 +690,8 @@
</span><span class="cx"> my $name = shift;
</span><span class="cx"> my $indent = shift;
</span><span class="cx">
</span><del>- my $getter = $propertiesWithStyleBuilderOptions{$name}{"Getter"};
- my $setter = $propertiesWithStyleBuilderOptions{$name}{"Setter"};
</del><ins>+ my $getter = $propertiesWithStyleBuilderOptions{$name}{"getter"};
+ my $setter = $propertiesWithStyleBuilderOptions{$name}{"setter"};
</ins><span class="cx"> my $clearFunction = getClearFunction($name);
</span><span class="cx"> my $testFunction = getTestFunction($name);
</span><span class="cx">
</span><span class="lines">@@ -685,8 +752,8 @@
</span><span class="cx"> my $name = shift;
</span><span class="cx"> my $value = shift;
</span><span class="cx">
</span><del>- my $isSVG = exists $propertiesWithStyleBuilderOptions{$name}{"SVG"};
- my $setter = $propertiesWithStyleBuilderOptions{$name}{"Setter"};
</del><ins>+ my $isSVG = exists $propertiesWithStyleBuilderOptions{$name}{"svg"};
+ my $setter = $propertiesWithStyleBuilderOptions{$name}{"setter"};
</ins><span class="cx"> return "styleResolver.style()->" . ($isSVG ? "accessSVGStyle()." : "") . $setter . "(" . $value . ")";
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -694,25 +761,25 @@
</span><span class="cx"> my $name = shift;
</span><span class="cx"> my $indent = shift;
</span><span class="cx">
</span><del>- my $setter = $propertiesWithStyleBuilderOptions{$name}{"Setter"};
- my $initial = $propertiesWithStyleBuilderOptions{$name}{"Initial"};
- my $isSVG = exists $propertiesWithStyleBuilderOptions{$name}{"SVG"};
</del><ins>+ my $setter = $propertiesWithStyleBuilderOptions{$name}{"setter"};
+ my $initial = $propertiesWithStyleBuilderOptions{$name}{"initial"};
+ my $isSVG = exists $propertiesWithStyleBuilderOptions{$name}{"svg"};
</ins><span class="cx"> my $setterContent = "";
</span><span class="cx"> $setterContent .= $indent . "static void applyInitial" . $nameToId{$name} . "(StyleResolver& styleResolver)\n";
</span><span class="cx"> $setterContent .= $indent . "{\n";
</span><span class="cx"> my $style = "styleResolver.style()";
</span><del>- if (exists $propertiesWithStyleBuilderOptions{$name}{"AutoFunctions"}) {
</del><ins>+ if (exists $propertiesWithStyleBuilderOptions{$name}{"auto-functions"}) {
</ins><span class="cx"> $setterContent .= $indent . " " . getAutoSetter($name, $style) . ";\n";
</span><del>- } elsif (exists $propertiesWithStyleBuilderOptions{$name}{"VisitedLinkColorSupport"}) {
</del><ins>+ } elsif (exists $propertiesWithStyleBuilderOptions{$name}{"visited-link-color-support"}) {
</ins><span class="cx"> my $initialColor = "RenderStyle::" . $initial . "()";
</span><span class="cx"> $setterContent .= generateColorValueSetter($name, $initialColor, $indent . " ");
</span><del>- } elsif (exists $propertiesWithStyleBuilderOptions{$name}{"AnimationProperty"}) {
</del><ins>+ } elsif (exists $propertiesWithStyleBuilderOptions{$name}{"animatable"}) {
</ins><span class="cx"> $setterContent .= generateAnimationPropertyInitialValueSetter($name, $indent . " ");
</span><del>- } elsif (exists $propertiesWithStyleBuilderOptions{$name}{"FontProperty"}) {
</del><ins>+ } elsif (exists $propertiesWithStyleBuilderOptions{$name}{"font-property"}) {
</ins><span class="cx"> $setterContent .= $indent . " auto fontDescription = styleResolver.fontDescription();\n";
</span><span class="cx"> $setterContent .= $indent . " fontDescription." . $setter . "(FontCascadeDescription::" . $initial . "());\n";
</span><span class="cx"> $setterContent .= $indent . " styleResolver.setFontDescription(fontDescription);\n";
</span><del>- } elsif (exists $propertiesWithStyleBuilderOptions{$name}{"FillLayerProperty"}) {
</del><ins>+ } elsif (exists $propertiesWithStyleBuilderOptions{$name}{"fill-layer-property"}) {
</ins><span class="cx"> $setterContent .= generateFillLayerPropertyInitialValueSetter($name, $indent . " ");
</span><span class="cx"> } else {
</span><span class="cx"> my $initialValue = ($isSVG ? "SVGRenderStyle" : "RenderStyle") . "::" . $initial . "()";
</span><span class="lines">@@ -730,34 +797,34 @@
</span><span class="cx"> my $setterContent = "";
</span><span class="cx"> $setterContent .= $indent . "static void applyInherit" . $nameToId{$name} . "(StyleResolver& styleResolver)\n";
</span><span class="cx"> $setterContent .= $indent . "{\n";
</span><del>- my $isSVG = exists $propertiesWithStyleBuilderOptions{$name}{"SVG"};
</del><ins>+ my $isSVG = exists $propertiesWithStyleBuilderOptions{$name}{"svg"};
</ins><span class="cx"> my $parentStyle = "styleResolver.parentStyle()";
</span><span class="cx"> my $style = "styleResolver.style()";
</span><del>- my $getter = $propertiesWithStyleBuilderOptions{$name}{"Getter"};
- my $setter = $propertiesWithStyleBuilderOptions{$name}{"Setter"};
</del><ins>+ my $getter = $propertiesWithStyleBuilderOptions{$name}{"getter"};
+ my $setter = $propertiesWithStyleBuilderOptions{$name}{"setter"};
</ins><span class="cx"> my $didCallSetValue = 0;
</span><del>- if (exists $propertiesWithStyleBuilderOptions{$name}{"AutoFunctions"}) {
</del><ins>+ if (exists $propertiesWithStyleBuilderOptions{$name}{"auto-functions"}) {
</ins><span class="cx"> $setterContent .= $indent . " if (" . getAutoGetter($name, $parentStyle) . ") {\n";
</span><span class="cx"> $setterContent .= $indent . " " . getAutoSetter($name, $style) . ";\n";
</span><span class="cx"> $setterContent .= $indent . " return;\n";
</span><span class="cx"> $setterContent .= $indent . " }\n";
</span><del>- } elsif (exists $propertiesWithStyleBuilderOptions{$name}{"VisitedLinkColorSupport"}) {
</del><ins>+ } elsif (exists $propertiesWithStyleBuilderOptions{$name}{"visited-link-color-support"}) {
</ins><span class="cx"> $setterContent .= $indent . " Color color = " . $parentStyle . "->" . $getter . "();\n";
</span><del>- if (!exists($propertiesWithStyleBuilderOptions{$name}{"NoDefaultColor"})) {
</del><ins>+ if (!exists($propertiesWithStyleBuilderOptions{$name}{"no-default-color"})) {
</ins><span class="cx"> $setterContent .= $indent . " if (!color.isValid())\n";
</span><span class="cx"> $setterContent .= $indent . " color = " . $parentStyle . "->color();\n";
</span><span class="cx"> }
</span><span class="cx"> $setterContent .= generateColorValueSetter($name, "color", $indent . " ");
</span><span class="cx"> $didCallSetValue = 1;
</span><del>- } elsif (exists $propertiesWithStyleBuilderOptions{$name}{"AnimationProperty"}) {
</del><ins>+ } elsif (exists $propertiesWithStyleBuilderOptions{$name}{"animatable"}) {
</ins><span class="cx"> $setterContent .= generateAnimationPropertyInheritValueSetter($name, $indent . " ");
</span><span class="cx"> $didCallSetValue = 1;
</span><del>- } elsif (exists $propertiesWithStyleBuilderOptions{$name}{"FontProperty"}) {
</del><ins>+ } elsif (exists $propertiesWithStyleBuilderOptions{$name}{"font-property"}) {
</ins><span class="cx"> $setterContent .= $indent . " auto fontDescription = styleResolver.fontDescription();\n";
</span><span class="cx"> $setterContent .= $indent . " fontDescription." . $setter . "(styleResolver.parentFontDescription()." . $getter . "());\n";
</span><span class="cx"> $setterContent .= $indent . " styleResolver.setFontDescription(fontDescription);\n";
</span><span class="cx"> $didCallSetValue = 1;
</span><del>- } elsif (exists $propertiesWithStyleBuilderOptions{$name}{"FillLayerProperty"}) {
</del><ins>+ } elsif (exists $propertiesWithStyleBuilderOptions{$name}{"fill-layer-property"}) {
</ins><span class="cx"> $setterContent .= generateFillLayerPropertyInheritValueSetter($name, $indent . " ");
</span><span class="cx"> $didCallSetValue = 1;
</span><span class="cx"> }
</span><span class="lines">@@ -778,24 +845,24 @@
</span><span class="cx"> $setterContent .= $indent . "static void applyValue" . $nameToId{$name} . "(StyleResolver& styleResolver, CSSValue& value)\n";
</span><span class="cx"> $setterContent .= $indent . "{\n";
</span><span class="cx"> my $convertedValue;
</span><del>- if (exists($propertiesWithStyleBuilderOptions{$name}{"Converter"})) {
- $convertedValue = "StyleBuilderConverter::convert" . $propertiesWithStyleBuilderOptions{$name}{"Converter"} . "(styleResolver, value)";
- } elsif (exists($propertiesWithStyleBuilderOptions{$name}{"ConditionalConverter"})) {
- $setterContent .= $indent . " auto convertedValue = StyleBuilderConverter::convert" . $propertiesWithStyleBuilderOptions{$name}{"ConditionalConverter"} . "(styleResolver, value);\n";
</del><ins>+ if (exists($propertiesWithStyleBuilderOptions{$name}{"converter"})) {
+ $convertedValue = "StyleBuilderConverter::convert" . $propertiesWithStyleBuilderOptions{$name}{"converter"} . "(styleResolver, value)";
+ } elsif (exists($propertiesWithStyleBuilderOptions{$name}{"conditional-converter"})) {
+ $setterContent .= $indent . " auto convertedValue = StyleBuilderConverter::convert" . $propertiesWithStyleBuilderOptions{$name}{"conditional-converter"} . "(styleResolver, value);\n";
</ins><span class="cx"> $convertedValue = "convertedValue.value()";
</span><span class="cx"> } else {
</span><span class="cx"> $convertedValue = "downcast<CSSPrimitiveValue>(value)";
</span><span class="cx"> }
</span><span class="cx">
</span><del>- my $setter = $propertiesWithStyleBuilderOptions{$name}{"Setter"};
</del><ins>+ my $setter = $propertiesWithStyleBuilderOptions{$name}{"setter"};
</ins><span class="cx"> my $style = "styleResolver.style()";
</span><span class="cx"> my $didCallSetValue = 0;
</span><del>- if (exists $propertiesWithStyleBuilderOptions{$name}{"AutoFunctions"}) {
</del><ins>+ if (exists $propertiesWithStyleBuilderOptions{$name}{"auto-functions"}) {
</ins><span class="cx"> $setterContent .= $indent . " if (downcast<CSSPrimitiveValue>(value).valueID() == CSSValueAuto) {\n";
</span><span class="cx"> $setterContent .= $indent . " ". getAutoSetter($name, $style) . ";\n";
</span><span class="cx"> $setterContent .= $indent . " return;\n";
</span><span class="cx"> $setterContent .= $indent . " }\n";
</span><del>- } elsif (exists $propertiesWithStyleBuilderOptions{$name}{"VisitedLinkColorSupport"}) {
</del><ins>+ } elsif (exists $propertiesWithStyleBuilderOptions{$name}{"visited-link-color-support"}) {
</ins><span class="cx"> $setterContent .= $indent . " auto& primitiveValue = downcast<CSSPrimitiveValue>(value);\n";
</span><span class="cx"> if ($name eq "color") {
</span><span class="cx"> # The "color" property supports "currentColor" value. We should add a parameter.
</span><span class="lines">@@ -803,20 +870,20 @@
</span><span class="cx"> }
</span><span class="cx"> $setterContent .= generateColorValueSetter($name, "primitiveValue", $indent . " ", VALUE_IS_PRIMITIVE);
</span><span class="cx"> $didCallSetValue = 1;
</span><del>- } elsif (exists $propertiesWithStyleBuilderOptions{$name}{"AnimationProperty"}) {
</del><ins>+ } elsif (exists $propertiesWithStyleBuilderOptions{$name}{"animatable"}) {
</ins><span class="cx"> $setterContent .= generateAnimationPropertyValueSetter($name, $indent . " ");
</span><span class="cx"> $didCallSetValue = 1;
</span><del>- } elsif (exists $propertiesWithStyleBuilderOptions{$name}{"FontProperty"}) {
</del><ins>+ } elsif (exists $propertiesWithStyleBuilderOptions{$name}{"font-property"}) {
</ins><span class="cx"> $setterContent .= $indent . " auto fontDescription = styleResolver.fontDescription();\n";
</span><span class="cx"> $setterContent .= $indent . " fontDescription." . $setter . "(" . $convertedValue . ");\n";
</span><span class="cx"> $setterContent .= $indent . " styleResolver.setFontDescription(fontDescription);\n";
</span><span class="cx"> $didCallSetValue = 1;
</span><del>- } elsif (exists $propertiesWithStyleBuilderOptions{$name}{"FillLayerProperty"}) {
</del><ins>+ } elsif (exists $propertiesWithStyleBuilderOptions{$name}{"fill-layer-property"}) {
</ins><span class="cx"> $setterContent .= generateFillLayerPropertyValueSetter($name, $indent . " ");
</span><span class="cx"> $didCallSetValue = 1;
</span><span class="cx"> }
</span><span class="cx"> if (!$didCallSetValue) {
</span><del>- if (exists($propertiesWithStyleBuilderOptions{$name}{"ConditionalConverter"})) {
</del><ins>+ if (exists($propertiesWithStyleBuilderOptions{$name}{"conditional-converter"})) {
</ins><span class="cx"> $setterContent .= $indent . " if (convertedValue)\n";
</span><span class="cx"> $setterContent .= " ";
</span><span class="cx"> }
</span><span class="lines">@@ -829,7 +896,7 @@
</span><span class="cx">
</span><span class="cx"> open STYLEBUILDER, ">StyleBuilder.cpp" || die "Could not open StyleBuilder.cpp for writing";
</span><span class="cx"> print STYLEBUILDER << "EOF";
</span><del>-/* This file is automatically generated from CSSPropertyNames.in by makeprop, do not edit */
</del><ins>+/* This file is automatically generated from $inputFile by makeprop, do not edit */
</ins><span class="cx">
</span><span class="cx"> #include "config.h"
</span><span class="cx"> #include "StyleBuilder.h"
</span><span class="lines">@@ -850,17 +917,17 @@
</span><span class="cx">
</span><span class="cx"> foreach my $name (@names) {
</span><span class="cx"> # Skip Shorthand properties and properties that do not use the StyleBuilder.
</span><del>- next if (exists $propertiesWithStyleBuilderOptions{$name}{"Longhands"});
- next if (exists $propertiesWithStyleBuilderOptions{$name}{"SkipBuilder"});
</del><ins>+ next if (exists $propertiesWithStyleBuilderOptions{$name}{"longhands"});
+ next if (exists $propertiesWithStyleBuilderOptions{$name}{"skip-builder"});
</ins><span class="cx">
</span><span class="cx"> my $indent = " ";
</span><del>- if (!$propertiesWithStyleBuilderOptions{$name}{"Custom"}{"Initial"}) {
</del><ins>+ if (!$propertiesWithStyleBuilderOptions{$name}{"custom"}{"Initial"}) {
</ins><span class="cx"> print STYLEBUILDER generateInitialValueSetter($name, $indent);
</span><span class="cx"> }
</span><del>- if (!$propertiesWithStyleBuilderOptions{$name}{"Custom"}{"Inherit"}) {
</del><ins>+ if (!$propertiesWithStyleBuilderOptions{$name}{"custom"}{"Inherit"}) {
</ins><span class="cx"> print STYLEBUILDER generateInheritValueSetter($name, $indent);
</span><span class="cx"> }
</span><del>- if (!$propertiesWithStyleBuilderOptions{$name}{"Custom"}{"Value"}) {
</del><ins>+ if (!$propertiesWithStyleBuilderOptions{$name}{"custom"}{"Value"}) {
</ins><span class="cx"> print STYLEBUILDER generateValueSetter($name, $indent);
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="lines">@@ -878,10 +945,10 @@
</span><span class="cx">
</span><span class="cx"> foreach my $name (@names) {
</span><span class="cx"> print STYLEBUILDER " case CSSProperty" . $nameToId{$name} . ":\n";
</span><del>- if (exists $propertiesWithStyleBuilderOptions{$name}{"Longhands"}) {
</del><ins>+ if (exists $propertiesWithStyleBuilderOptions{$name}{"longhands"}) {
</ins><span class="cx"> print STYLEBUILDER " ASSERT(isShorthandCSSProperty(property));\n";
</span><span class="cx"> print STYLEBUILDER " ASSERT_NOT_REACHED();\n";
</span><del>- } elsif (!exists $propertiesWithStyleBuilderOptions{$name}{"SkipBuilder"}) {
</del><ins>+ } elsif (!exists $propertiesWithStyleBuilderOptions{$name}{"skip-builder"}) {
</ins><span class="cx"> print STYLEBUILDER " if (isInitial)\n";
</span><span class="cx"> print STYLEBUILDER " " . getScopeForFunction($name, "Initial") . "::applyInitial" . $nameToId{$name} . "(styleResolver);\n";
</span><span class="cx"> print STYLEBUILDER " else if (isInherit)\n";
</span><span class="lines">@@ -904,7 +971,7 @@
</span><span class="cx"> # Generate StylePropertyShorthandsFunctions.
</span><span class="cx"> open SHORTHANDS_H, ">StylePropertyShorthandFunctions.h" || die "Could not open StylePropertyShorthandFunctions.h for writing";
</span><span class="cx"> print SHORTHANDS_H << "EOF";
</span><del>-/* This file is automatically generated from CSSPropertyNames.in by makeprop, do not edit */
</del><ins>+/* This file is automatically generated from $inputFile by makeprop, do not edit */
</ins><span class="cx">
</span><span class="cx"> #pragma once
</span><span class="cx">
</span><span class="lines">@@ -916,7 +983,7 @@
</span><span class="cx">
</span><span class="cx"> foreach my $name (@names) {
</span><span class="cx"> # Skip non-Shorthand properties.
</span><del>- next if (!exists $propertiesWithStyleBuilderOptions{$name}{"Longhands"});
</del><ins>+ next if (!exists $propertiesWithStyleBuilderOptions{$name}{"longhands"});
</ins><span class="cx">
</span><span class="cx"> print SHORTHANDS_H "StylePropertyShorthand " . lcfirst($nameToId{$name}) . "Shorthand();\n";
</span><span class="cx"> }
</span><span class="lines">@@ -930,7 +997,7 @@
</span><span class="cx">
</span><span class="cx"> open SHORTHANDS_CPP, ">StylePropertyShorthandFunctions.cpp" || die "Could not open StylePropertyShorthandFunctions.cpp for writing";
</span><span class="cx"> print SHORTHANDS_CPP << "EOF";
</span><del>-/* This file is automatically generated from CSSPropertyNames.in by makeprop, do not edit */
</del><ins>+/* This file is automatically generated from $inputFile by makeprop, do not edit */
</ins><span class="cx">
</span><span class="cx"> #include "config.h"
</span><span class="cx"> #include "StylePropertyShorthandFunctions.h"
</span><span class="lines">@@ -946,10 +1013,10 @@
</span><span class="cx">
</span><span class="cx"> foreach my $name (@names) {
</span><span class="cx"> # Skip non-Shorthand properties.
</span><del>- next if (!exists $propertiesWithStyleBuilderOptions{$name}{"Longhands"});
</del><ins>+ next if (!exists $propertiesWithStyleBuilderOptions{$name}{"longhands"});
</ins><span class="cx">
</span><span class="cx"> my $lowercaseId = lcfirst($nameToId{$name});
</span><del>- my @longhands = split(/\|/, $propertiesWithStyleBuilderOptions{$name}{"Longhands"});
</del><ins>+ my @longhands = @{$propertiesWithStyleBuilderOptions{$name}{"longhands"}};
</ins><span class="cx">
</span><span class="cx"> print SHORTHANDS_CPP "StylePropertyShorthand " . $lowercaseId . "Shorthand()\n";
</span><span class="cx"> print SHORTHANDS_CPP "{\n";
</span><span class="lines">@@ -957,14 +1024,14 @@
</span><span class="cx"> foreach (@longhands) {
</span><span class="cx"> if ($_ eq "all") {
</span><span class="cx"> foreach my $propname (@names) {
</span><del>- next if (exists $propertiesWithStyleBuilderOptions{$propname}{"Longhands"});
</del><ins>+ next if (exists $propertiesWithStyleBuilderOptions{$propname}{"longhands"});
</ins><span class="cx"> next if ($propname eq "direction" || $propname eq "unicode-bidi");
</span><del>- die "Unknown CSS property used in all shorthand: " . $nameToId{$propname} if !exists($nameToId{$propname});
</del><ins>+ die "Unknown CSS property used in all shorthand: $propname" if !exists($nameToId{$propname});
</ins><span class="cx"> push(@{$longhandToShorthands{$propname}}, $name);
</span><span class="cx"> print SHORTHANDS_CPP " CSSProperty" . $nameToId{$propname} . ",\n";
</span><span class="cx"> }
</span><span class="cx"> } else {
</span><del>- die "Unknown CSS property used in Longhands: " . $nameToId{$_} if !exists($nameToId{$_});
</del><ins>+ die "Unknown CSS property used in longhands: $_" if !exists($nameToId{$_});
</ins><span class="cx"> push(@{$longhandToShorthands{$_}}, $name);
</span><span class="cx"> print SHORTHANDS_CPP " CSSProperty" . $nameToId{$_} . ",\n";
</span><span class="cx"> }
</span><span class="lines">@@ -984,7 +1051,7 @@
</span><span class="cx">
</span><span class="cx"> foreach my $name (@names) {
</span><span class="cx"> # Skip non-Shorthand properties.
</span><del>- next if (!exists $propertiesWithStyleBuilderOptions{$name}{"Longhands"});
</del><ins>+ next if (!exists $propertiesWithStyleBuilderOptions{$name}{"longhands"});
</ins><span class="cx">
</span><span class="cx"> print SHORTHANDS_CPP " case CSSProperty" . $nameToId{$name} . ":\n";
</span><span class="cx"> print SHORTHANDS_CPP " return " . lcfirst($nameToId{$name}) . "Shorthand();\n";
</span></span></pre>
</div>
</div>
</body>
</html>