<!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>[282702] trunk</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/282702">282702</a></dd>
<dt>Author</dt> <dd>achristensen@apple.com</dd>
<dt>Date</dt> <dd>2021-09-17 16:02:17 -0700 (Fri, 17 Sep 2021)</dd>
</dl>

<h3>Log Message</h3>
<pre>Addition of CSSTransformValue, CSSTransformComponent & subclasses
https://bugs.webkit.org/show_bug.cgi?id=230284

LayoutTests/imported/w3c:

Reviewed by Alex Christensen.

* web-platform-tests/css/css-typed-om/idlharness-expected.txt:
* web-platform-tests/css/css-typed-om/rotate-by-added-angle-expected.txt:
* web-platform-tests/css/css-typed-om/stylevalue-normalization/transformvalue-normalization.tentative-expected.txt:
* web-platform-tests/css/css-typed-om/stylevalue-serialization/crashtests/cssTransform-Internal-value-expected.txt:
* web-platform-tests/css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative-expected.txt:
* web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssMatrixComponent.tentative-expected.txt:
* web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssPerspective.tentative-expected.txt:
* web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssRotate.tentative-expected.txt:
* web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssScale.tentative-expected.txt:
* web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssSkew.tentative-expected.txt:
* web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssSkewX.tentative-expected.txt:
* web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssSkewY.tentative-expected.txt:
* web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssTransformComponent-toMatrix-expected.txt:
* web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssTransformComponent-toMatrix-relative-units-expected.txt:
* web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssTransformValue-toMatrix-expected.txt:
* web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssTransformValue.tentative-expected.txt:
* web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssTranslate.tentative-expected.txt:

Source/WebCore:

Patch by Johnson Zhou <qiaosong_zhou@apple.com> on 2021-09-17
Reviewed by Alex Christensen.

* CMakeLists.txt:
* DerivedSources-input.xcfilelist:
* DerivedSources.make:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/WebCoreBuiltinNames.h:
* css/DOMMatrix.idl:
* css/DOMMatrixReadOnly.h:
* css/typedom/transform/CSSMatrixComponent.cpp: Added.
(WebCore::CSSMatrixComponent::create):
(WebCore::CSSMatrixComponent::CSSMatrixComponent):
(WebCore::CSSMatrixComponent::toString const):
(WebCore::CSSMatrixComponent::toMatrix):
* css/typedom/transform/CSSMatrixComponent.h: Added.
(WebCore::CSSMatrixComponent::create):
(WebCore::CSSMatrixComponent::matrix):
(WebCore::CSSMatrixComponent::setMatrix):
* css/typedom/transform/CSSMatrixComponent.idl: Added.
* css/typedom/transform/CSSMatrixComponentOptions.h: Added.
* css/typedom/transform/CSSMatrixComponentOptions.idl: Added.
* css/typedom/transform/CSSPerspective.cpp: Added.
(WebCore::CSSPerspective::create):
(WebCore::CSSPerspective::CSSPerspective):
(WebCore::CSSPerspective::toString const):
(WebCore::CSSPerspective::toMatrix):
* css/typedom/transform/CSSPerspective.h: Added.
(WebCore::CSSPerspective::length):
(WebCore::CSSPerspective::setLength):
* css/typedom/transform/CSSPerspective.idl: Added.
* css/typedom/transform/CSSRotate.cpp: Added.
(WebCore::CSSRotate::create):
(WebCore::CSSRotate::CSSRotate):
(WebCore::CSSRotate::toString const):
(WebCore::CSSRotate::toMatrix):
* css/typedom/transform/CSSRotate.h: Added.
(WebCore::CSSRotate::x):
(WebCore::CSSRotate::y):
(WebCore::CSSRotate::z):
(WebCore::CSSRotate::angle):
(WebCore::CSSRotate::setX):
(WebCore::CSSRotate::setY):
(WebCore::CSSRotate::setZ):
(WebCore::CSSRotate::setAngle):
* css/typedom/transform/CSSRotate.idl: Added.
* css/typedom/transform/CSSScale.cpp: Added.
(WebCore::CSSScale::create):
(WebCore::CSSScale::CSSScale):
(WebCore::CSSScale::toString const):
(WebCore::CSSScale::toMatrix):
* css/typedom/transform/CSSScale.h: Added.
(WebCore::CSSScale::x):
(WebCore::CSSScale::y):
(WebCore::CSSScale::z):
(WebCore::CSSScale::setX):
(WebCore::CSSScale::setY):
(WebCore::CSSScale::setZ):
* css/typedom/transform/CSSScale.idl: Added.
* css/typedom/transform/CSSSkew.cpp: Added.
(WebCore::CSSSkew::create):
(WebCore::CSSSkew::CSSSkew):
(WebCore::CSSSkew::toString const):
(WebCore::CSSSkew::toMatrix):
* css/typedom/transform/CSSSkew.h: Added.
(WebCore::CSSSkew::ax):
(WebCore::CSSSkew::ay):
(WebCore::CSSSkew::setAx):
(WebCore::CSSSkew::setAy):
* css/typedom/transform/CSSSkew.idl: Added.
* css/typedom/transform/CSSSkewX.cpp: Added.
(WebCore::CSSSkewX::create):
(WebCore::CSSSkewX::CSSSkewX):
(WebCore::CSSSkewX::toString const):
(WebCore::CSSSkewX::toMatrix):
* css/typedom/transform/CSSSkewX.h: Added.
(WebCore::CSSSkewX::ax):
(WebCore::CSSSkewX::setAx):
* css/typedom/transform/CSSSkewX.idl: Added.
* css/typedom/transform/CSSSkewY.cpp: Added.
(WebCore::CSSSkewY::create):
(WebCore::CSSSkewY::CSSSkewY):
(WebCore::CSSSkewY::toString const):
(WebCore::CSSSkewY::toMatrix):
* css/typedom/transform/CSSSkewY.h: Added.
(WebCore::CSSSkewY::ay):
(WebCore::CSSSkewY::setAy):
* css/typedom/transform/CSSSkewY.idl: Added.
* css/typedom/transform/CSSTransformComponent.cpp: Added.
(WebCore::CSSTransformComponent::toString const):
(WebCore::CSSTransformComponent::toMatrix):
* css/typedom/transform/CSSTransformComponent.h: Added.
(WebCore::CSSTransformComponent::is2D const):
(WebCore::CSSTransformComponent::setIs2D):
* css/typedom/transform/CSSTransformComponent.idl: Added.
* css/typedom/transform/CSSTransformValue.cpp: Added.
(WebCore::CSSTransformValue::create):
(WebCore::CSSTransformValue::item):
(WebCore::CSSTransformValue::setItem):
(WebCore::CSSTransformValue::is2D const):
(WebCore::CSSTransformValue::setIs2D):
(WebCore::CSSTransformValue::toMatrix):
(WebCore::CSSTransformValue::CSSTransformValue):
* css/typedom/transform/CSSTransformValue.h: Added.
(WebCore::CSSTransformValue::length const):
(isType):
* css/typedom/transform/CSSTransformValue.idl: Added.
* css/typedom/transform/CSSTranslate.cpp: Added.
(WebCore::CSSTranslate::create):
(WebCore::CSSTranslate::CSSTranslate):
(WebCore::CSSTranslate::toString const):
(WebCore::CSSTranslate::toMatrix):
* css/typedom/transform/CSSTranslate.h: Added.
(WebCore::CSSTranslate::x):
(WebCore::CSSTranslate::y):
(WebCore::CSSTranslate::z):
(WebCore::CSSTranslate::setX):
(WebCore::CSSTranslate::setY):
(WebCore::CSSTranslate::setZ):
* css/typedom/transform/CSSTranslate.idl: Added.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsimportedw3cChangeLog">trunk/LayoutTests/imported/w3c/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscsstypedomidlharnessexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/idlharness-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscsstypedomrotatebyaddedangleexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/rotate-by-added-angle-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscsstypedomstylevaluenormalizationtransformvaluenormalizationtentativeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-normalization/transformvalue-normalization.tentative-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscsstypedomstylevalueserializationcrashtestscssTransformInternalvalueexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-serialization/crashtests/cssTransform-Internal-value-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscsstypedomstylevalueserializationcssTransformValuetentativeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscsstypedomstylevaluesubclassescssMatrixComponenttentativeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssMatrixComponent.tentative-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscsstypedomstylevaluesubclassescssPerspectivetentativeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssPerspective.tentative-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscsstypedomstylevaluesubclassescssRotatetentativeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssRotate.tentative-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscsstypedomstylevaluesubclassescssScaletentativeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssScale.tentative-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscsstypedomstylevaluesubclassescssSkewtentativeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssSkew.tentative-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscsstypedomstylevaluesubclassescssSkewXtentativeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssSkewX.tentative-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscsstypedomstylevaluesubclassescssSkewYtentativeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssSkewY.tentative-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscsstypedomstylevaluesubclassescssTransformComponenttoMatrixexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssTransformComponent-toMatrix-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscsstypedomstylevaluesubclassescssTransformComponenttoMatrixrelativeunitsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssTransformComponent-toMatrix-relative-units-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscsstypedomstylevaluesubclassescssTransformValuetoMatrixexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssTransformValue-toMatrix-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscsstypedomstylevaluesubclassescssTransformValuetentativeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssTransformValue.tentative-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscsstypedomstylevaluesubclassescssTranslatetentativeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssTranslate.tentative-expected.txt</a></li>
<li><a href="#trunkSourceWebCoreCMakeListstxt">trunk/Source/WebCore/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreDerivedSourcesinputxcfilelist">trunk/Source/WebCore/DerivedSources-input.xcfilelist</a></li>
<li><a href="#trunkSourceWebCoreDerivedSourcesmake">trunk/Source/WebCore/DerivedSources.make</a></li>
<li><a href="#trunkSourceWebCoreSourcestxt">trunk/Source/WebCore/Sources.txt</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCorebindingsjsWebCoreBuiltinNamesh">trunk/Source/WebCore/bindings/js/WebCoreBuiltinNames.h</a></li>
<li><a href="#trunkSourceWebCorecssDOMMatrixidl">trunk/Source/WebCore/css/DOMMatrix.idl</a></li>
<li><a href="#trunkSourceWebCorecssDOMMatrixReadOnlycpp">trunk/Source/WebCore/css/DOMMatrixReadOnly.cpp</a></li>
<li><a href="#trunkSourceWebCorecssDOMMatrixReadOnlyh">trunk/Source/WebCore/css/DOMMatrixReadOnly.h</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWebCorebindingsjsJSCSSTransformComponentCustomcpp">trunk/Source/WebCore/bindings/js/JSCSSTransformComponentCustom.cpp</a></li>
<li>trunk/Source/WebCore/css/typedom/transform/</li>
<li><a href="#trunkSourceWebCorecsstypedomtransformCSSMatrixComponentcpp">trunk/Source/WebCore/css/typedom/transform/CSSMatrixComponent.cpp</a></li>
<li><a href="#trunkSourceWebCorecsstypedomtransformCSSMatrixComponenth">trunk/Source/WebCore/css/typedom/transform/CSSMatrixComponent.h</a></li>
<li><a href="#trunkSourceWebCorecsstypedomtransformCSSMatrixComponentidl">trunk/Source/WebCore/css/typedom/transform/CSSMatrixComponent.idl</a></li>
<li><a href="#trunkSourceWebCorecsstypedomtransformCSSMatrixComponentOptionsh">trunk/Source/WebCore/css/typedom/transform/CSSMatrixComponentOptions.h</a></li>
<li><a href="#trunkSourceWebCorecsstypedomtransformCSSMatrixComponentOptionsidl">trunk/Source/WebCore/css/typedom/transform/CSSMatrixComponentOptions.idl</a></li>
<li><a href="#trunkSourceWebCorecsstypedomtransformCSSPerspectivecpp">trunk/Source/WebCore/css/typedom/transform/CSSPerspective.cpp</a></li>
<li><a href="#trunkSourceWebCorecsstypedomtransformCSSPerspectiveh">trunk/Source/WebCore/css/typedom/transform/CSSPerspective.h</a></li>
<li><a href="#trunkSourceWebCorecsstypedomtransformCSSPerspectiveidl">trunk/Source/WebCore/css/typedom/transform/CSSPerspective.idl</a></li>
<li><a href="#trunkSourceWebCorecsstypedomtransformCSSRotatecpp">trunk/Source/WebCore/css/typedom/transform/CSSRotate.cpp</a></li>
<li><a href="#trunkSourceWebCorecsstypedomtransformCSSRotateh">trunk/Source/WebCore/css/typedom/transform/CSSRotate.h</a></li>
<li><a href="#trunkSourceWebCorecsstypedomtransformCSSRotateidl">trunk/Source/WebCore/css/typedom/transform/CSSRotate.idl</a></li>
<li><a href="#trunkSourceWebCorecsstypedomtransformCSSScalecpp">trunk/Source/WebCore/css/typedom/transform/CSSScale.cpp</a></li>
<li><a href="#trunkSourceWebCorecsstypedomtransformCSSScaleh">trunk/Source/WebCore/css/typedom/transform/CSSScale.h</a></li>
<li><a href="#trunkSourceWebCorecsstypedomtransformCSSScaleidl">trunk/Source/WebCore/css/typedom/transform/CSSScale.idl</a></li>
<li><a href="#trunkSourceWebCorecsstypedomtransformCSSSkewcpp">trunk/Source/WebCore/css/typedom/transform/CSSSkew.cpp</a></li>
<li><a href="#trunkSourceWebCorecsstypedomtransformCSSSkewh">trunk/Source/WebCore/css/typedom/transform/CSSSkew.h</a></li>
<li><a href="#trunkSourceWebCorecsstypedomtransformCSSSkewidl">trunk/Source/WebCore/css/typedom/transform/CSSSkew.idl</a></li>
<li><a href="#trunkSourceWebCorecsstypedomtransformCSSSkewXcpp">trunk/Source/WebCore/css/typedom/transform/CSSSkewX.cpp</a></li>
<li><a href="#trunkSourceWebCorecsstypedomtransformCSSSkewXh">trunk/Source/WebCore/css/typedom/transform/CSSSkewX.h</a></li>
<li><a href="#trunkSourceWebCorecsstypedomtransformCSSSkewXidl">trunk/Source/WebCore/css/typedom/transform/CSSSkewX.idl</a></li>
<li><a href="#trunkSourceWebCorecsstypedomtransformCSSSkewYcpp">trunk/Source/WebCore/css/typedom/transform/CSSSkewY.cpp</a></li>
<li><a href="#trunkSourceWebCorecsstypedomtransformCSSSkewYh">trunk/Source/WebCore/css/typedom/transform/CSSSkewY.h</a></li>
<li><a href="#trunkSourceWebCorecsstypedomtransformCSSSkewYidl">trunk/Source/WebCore/css/typedom/transform/CSSSkewY.idl</a></li>
<li><a href="#trunkSourceWebCorecsstypedomtransformCSSTransformComponentcpp">trunk/Source/WebCore/css/typedom/transform/CSSTransformComponent.cpp</a></li>
<li><a href="#trunkSourceWebCorecsstypedomtransformCSSTransformComponenth">trunk/Source/WebCore/css/typedom/transform/CSSTransformComponent.h</a></li>
<li><a href="#trunkSourceWebCorecsstypedomtransformCSSTransformComponentidl">trunk/Source/WebCore/css/typedom/transform/CSSTransformComponent.idl</a></li>
<li><a href="#trunkSourceWebCorecsstypedomtransformCSSTransformValuecpp">trunk/Source/WebCore/css/typedom/transform/CSSTransformValue.cpp</a></li>
<li><a href="#trunkSourceWebCorecsstypedomtransformCSSTransformValueh">trunk/Source/WebCore/css/typedom/transform/CSSTransformValue.h</a></li>
<li><a href="#trunkSourceWebCorecsstypedomtransformCSSTransformValueidl">trunk/Source/WebCore/css/typedom/transform/CSSTransformValue.idl</a></li>
<li><a href="#trunkSourceWebCorecsstypedomtransformCSSTranslatecpp">trunk/Source/WebCore/css/typedom/transform/CSSTranslate.cpp</a></li>
<li><a href="#trunkSourceWebCorecsstypedomtransformCSSTranslateh">trunk/Source/WebCore/css/typedom/transform/CSSTranslate.h</a></li>
<li><a href="#trunkSourceWebCorecsstypedomtransformCSSTranslateidl">trunk/Source/WebCore/css/typedom/transform/CSSTranslate.idl</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsimportedw3cChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/ChangeLog (282701 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/ChangeLog 2021-09-17 22:58:36 UTC (rev 282701)
+++ trunk/LayoutTests/imported/w3c/ChangeLog    2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -1,3 +1,28 @@
</span><ins>+2021-09-17  Alex Christensen  <achristensen@webkit.org>
+
+        Addition of CSSTransformValue, CSSTransformComponent & subclasses
+        https://bugs.webkit.org/show_bug.cgi?id=230284
+
+        Reviewed by Alex Christensen.
+
+        * web-platform-tests/css/css-typed-om/idlharness-expected.txt:
+        * web-platform-tests/css/css-typed-om/rotate-by-added-angle-expected.txt:
+        * web-platform-tests/css/css-typed-om/stylevalue-normalization/transformvalue-normalization.tentative-expected.txt:
+        * web-platform-tests/css/css-typed-om/stylevalue-serialization/crashtests/cssTransform-Internal-value-expected.txt:
+        * web-platform-tests/css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative-expected.txt:
+        * web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssMatrixComponent.tentative-expected.txt:
+        * web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssPerspective.tentative-expected.txt:
+        * web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssRotate.tentative-expected.txt:
+        * web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssScale.tentative-expected.txt:
+        * web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssSkew.tentative-expected.txt:
+        * web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssSkewX.tentative-expected.txt:
+        * web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssSkewY.tentative-expected.txt:
+        * web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssTransformComponent-toMatrix-expected.txt:
+        * web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssTransformComponent-toMatrix-relative-units-expected.txt:
+        * web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssTransformValue-toMatrix-expected.txt:
+        * web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssTransformValue.tentative-expected.txt:
+        * web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssTranslate.tentative-expected.txt:
+
</ins><span class="cx"> 2021-09-17  Cameron McCormack  <heycam@apple.com>
</span><span class="cx"> 
</span><span class="cx">         Preserve color space when creating ImageBuffers for ImageBitmaps
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscsstypedomidlharnessexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/idlharness-expected.txt (282701 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/idlharness-expected.txt       2021-09-17 22:58:36 UTC (rev 282701)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/idlharness-expected.txt  2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -245,16 +245,16 @@
</span><span class="cx"> PASS CSSNumericArray interface: existence and properties of interface prototype object's @@unscopables property
</span><span class="cx"> PASS CSSNumericArray interface: iterable<CSSNumericValue>
</span><span class="cx"> PASS CSSNumericArray interface: attribute length
</span><del>-FAIL CSSTransformValue interface: existence and properties of interface object assert_own_property: self does not have own property "CSSTransformValue" expected property "CSSTransformValue" missing
-FAIL CSSTransformValue interface object length assert_own_property: self does not have own property "CSSTransformValue" expected property "CSSTransformValue" missing
-FAIL CSSTransformValue interface object name assert_own_property: self does not have own property "CSSTransformValue" expected property "CSSTransformValue" missing
-FAIL CSSTransformValue interface: existence and properties of interface prototype object assert_own_property: self does not have own property "CSSTransformValue" expected property "CSSTransformValue" missing
-FAIL CSSTransformValue interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "CSSTransformValue" expected property "CSSTransformValue" missing
-FAIL CSSTransformValue interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "CSSTransformValue" expected property "CSSTransformValue" missing
-FAIL CSSTransformValue interface: iterable<CSSTransformComponent> undefined is not an object (evaluating 'this.get_interface_object().prototype')
-FAIL CSSTransformValue interface: attribute length assert_own_property: self does not have own property "CSSTransformValue" expected property "CSSTransformValue" missing
-FAIL CSSTransformValue interface: attribute is2D assert_own_property: self does not have own property "CSSTransformValue" expected property "CSSTransformValue" missing
-FAIL CSSTransformValue interface: operation toMatrix() assert_own_property: self does not have own property "CSSTransformValue" expected property "CSSTransformValue" missing
</del><ins>+PASS CSSTransformValue interface: existence and properties of interface object
+PASS CSSTransformValue interface object length
+PASS CSSTransformValue interface object name
+PASS CSSTransformValue interface: existence and properties of interface prototype object
+PASS CSSTransformValue interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSTransformValue interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSTransformValue interface: iterable<CSSTransformComponent>
+PASS CSSTransformValue interface: attribute length
+PASS CSSTransformValue interface: attribute is2D
+PASS CSSTransformValue interface: operation toMatrix()
</ins><span class="cx"> FAIL CSSTransformValue must be primary interface of transformValue assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: transformValue"
</span><span class="cx"> FAIL Stringification of transformValue assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: transformValue"
</span><span class="cx"> FAIL CSSTransformValue interface: transformValue must inherit property "length" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: transformValue"
</span><span class="lines">@@ -264,24 +264,24 @@
</span><span class="cx"> FAIL CSSStyleValue interface: calling parse(USVString, USVString) on transformValue with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: transformValue"
</span><span class="cx"> FAIL CSSStyleValue interface: transformValue must inherit property "parseAll(USVString, USVString)" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: transformValue"
</span><span class="cx"> FAIL CSSStyleValue interface: calling parseAll(USVString, USVString) on transformValue with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: transformValue"
</span><del>-FAIL CSSTransformComponent interface: existence and properties of interface object assert_own_property: self does not have own property "CSSTransformComponent" expected property "CSSTransformComponent" missing
-FAIL CSSTransformComponent interface object length assert_own_property: self does not have own property "CSSTransformComponent" expected property "CSSTransformComponent" missing
-FAIL CSSTransformComponent interface object name assert_own_property: self does not have own property "CSSTransformComponent" expected property "CSSTransformComponent" missing
-FAIL CSSTransformComponent interface: existence and properties of interface prototype object assert_own_property: self does not have own property "CSSTransformComponent" expected property "CSSTransformComponent" missing
-FAIL CSSTransformComponent interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "CSSTransformComponent" expected property "CSSTransformComponent" missing
-FAIL CSSTransformComponent interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "CSSTransformComponent" expected property "CSSTransformComponent" missing
-FAIL CSSTransformComponent interface: stringifier assert_own_property: self does not have own property "CSSTransformComponent" expected property "CSSTransformComponent" missing
-FAIL CSSTransformComponent interface: attribute is2D assert_own_property: self does not have own property "CSSTransformComponent" expected property "CSSTransformComponent" missing
-FAIL CSSTransformComponent interface: operation toMatrix() assert_own_property: self does not have own property "CSSTransformComponent" expected property "CSSTransformComponent" missing
-FAIL CSSTranslate interface: existence and properties of interface object assert_own_property: self does not have own property "CSSTranslate" expected property "CSSTranslate" missing
-FAIL CSSTranslate interface object length assert_own_property: self does not have own property "CSSTranslate" expected property "CSSTranslate" missing
-FAIL CSSTranslate interface object name assert_own_property: self does not have own property "CSSTranslate" expected property "CSSTranslate" missing
-FAIL CSSTranslate interface: existence and properties of interface prototype object assert_own_property: self does not have own property "CSSTranslate" expected property "CSSTranslate" missing
-FAIL CSSTranslate interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "CSSTranslate" expected property "CSSTranslate" missing
-FAIL CSSTranslate interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "CSSTranslate" expected property "CSSTranslate" missing
-FAIL CSSTranslate interface: attribute x assert_own_property: self does not have own property "CSSTranslate" expected property "CSSTranslate" missing
-FAIL CSSTranslate interface: attribute y assert_own_property: self does not have own property "CSSTranslate" expected property "CSSTranslate" missing
-FAIL CSSTranslate interface: attribute z assert_own_property: self does not have own property "CSSTranslate" expected property "CSSTranslate" missing
</del><ins>+PASS CSSTransformComponent interface: existence and properties of interface object
+PASS CSSTransformComponent interface object length
+PASS CSSTransformComponent interface object name
+PASS CSSTransformComponent interface: existence and properties of interface prototype object
+PASS CSSTransformComponent interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSTransformComponent interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSTransformComponent interface: stringifier
+PASS CSSTransformComponent interface: attribute is2D
+PASS CSSTransformComponent interface: operation toMatrix()
+PASS CSSTranslate interface: existence and properties of interface object
+PASS CSSTranslate interface object length
+PASS CSSTranslate interface object name
+PASS CSSTranslate interface: existence and properties of interface prototype object
+PASS CSSTranslate interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSTranslate interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSTranslate interface: attribute x
+PASS CSSTranslate interface: attribute y
+PASS CSSTranslate interface: attribute z
</ins><span class="cx"> FAIL CSSTranslate must be primary interface of transformValue[0] assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: transformValue"
</span><span class="cx"> FAIL Stringification of transformValue[0] assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: transformValue"
</span><span class="cx"> FAIL CSSTranslate interface: transformValue[0] must inherit property "x" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: transformValue"
</span><span class="lines">@@ -289,16 +289,16 @@
</span><span class="cx"> FAIL CSSTranslate interface: transformValue[0] must inherit property "z" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: transformValue"
</span><span class="cx"> FAIL CSSTransformComponent interface: transformValue[0] must inherit property "is2D" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: transformValue"
</span><span class="cx"> FAIL CSSTransformComponent interface: transformValue[0] must inherit property "toMatrix()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: transformValue"
</span><del>-FAIL CSSRotate interface: existence and properties of interface object assert_own_property: self does not have own property "CSSRotate" expected property "CSSRotate" missing
-FAIL CSSRotate interface object length assert_own_property: self does not have own property "CSSRotate" expected property "CSSRotate" missing
-FAIL CSSRotate interface object name assert_own_property: self does not have own property "CSSRotate" expected property "CSSRotate" missing
-FAIL CSSRotate interface: existence and properties of interface prototype object assert_own_property: self does not have own property "CSSRotate" expected property "CSSRotate" missing
-FAIL CSSRotate interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "CSSRotate" expected property "CSSRotate" missing
-FAIL CSSRotate interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "CSSRotate" expected property "CSSRotate" missing
-FAIL CSSRotate interface: attribute x assert_own_property: self does not have own property "CSSRotate" expected property "CSSRotate" missing
-FAIL CSSRotate interface: attribute y assert_own_property: self does not have own property "CSSRotate" expected property "CSSRotate" missing
-FAIL CSSRotate interface: attribute z assert_own_property: self does not have own property "CSSRotate" expected property "CSSRotate" missing
-FAIL CSSRotate interface: attribute angle assert_own_property: self does not have own property "CSSRotate" expected property "CSSRotate" missing
</del><ins>+PASS CSSRotate interface: existence and properties of interface object
+PASS CSSRotate interface object length
+PASS CSSRotate interface object name
+PASS CSSRotate interface: existence and properties of interface prototype object
+PASS CSSRotate interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSRotate interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSRotate interface: attribute x
+PASS CSSRotate interface: attribute y
+PASS CSSRotate interface: attribute z
+PASS CSSRotate interface: attribute angle
</ins><span class="cx"> FAIL CSSRotate must be primary interface of rotate assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: rotate"
</span><span class="cx"> FAIL Stringification of rotate assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: rotate"
</span><span class="cx"> FAIL CSSRotate interface: rotate must inherit property "x" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: rotate"
</span><span class="lines">@@ -307,15 +307,15 @@
</span><span class="cx"> FAIL CSSRotate interface: rotate must inherit property "angle" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: rotate"
</span><span class="cx"> FAIL CSSTransformComponent interface: rotate must inherit property "is2D" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: rotate"
</span><span class="cx"> FAIL CSSTransformComponent interface: rotate must inherit property "toMatrix()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: rotate"
</span><del>-FAIL CSSScale interface: existence and properties of interface object assert_own_property: self does not have own property "CSSScale" expected property "CSSScale" missing
-FAIL CSSScale interface object length assert_own_property: self does not have own property "CSSScale" expected property "CSSScale" missing
-FAIL CSSScale interface object name assert_own_property: self does not have own property "CSSScale" expected property "CSSScale" missing
-FAIL CSSScale interface: existence and properties of interface prototype object assert_own_property: self does not have own property "CSSScale" expected property "CSSScale" missing
-FAIL CSSScale interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "CSSScale" expected property "CSSScale" missing
-FAIL CSSScale interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "CSSScale" expected property "CSSScale" missing
-FAIL CSSScale interface: attribute x assert_own_property: self does not have own property "CSSScale" expected property "CSSScale" missing
-FAIL CSSScale interface: attribute y assert_own_property: self does not have own property "CSSScale" expected property "CSSScale" missing
-FAIL CSSScale interface: attribute z assert_own_property: self does not have own property "CSSScale" expected property "CSSScale" missing
</del><ins>+PASS CSSScale interface: existence and properties of interface object
+PASS CSSScale interface object length
+PASS CSSScale interface object name
+PASS CSSScale interface: existence and properties of interface prototype object
+PASS CSSScale interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSScale interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSScale interface: attribute x
+PASS CSSScale interface: attribute y
+PASS CSSScale interface: attribute z
</ins><span class="cx"> FAIL CSSScale must be primary interface of scale assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: scale"
</span><span class="cx"> FAIL Stringification of scale assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: scale"
</span><span class="cx"> FAIL CSSScale interface: scale must inherit property "x" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: scale"
</span><span class="lines">@@ -323,14 +323,14 @@
</span><span class="cx"> FAIL CSSScale interface: scale must inherit property "z" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: scale"
</span><span class="cx"> FAIL CSSTransformComponent interface: scale must inherit property "is2D" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: scale"
</span><span class="cx"> FAIL CSSTransformComponent interface: scale must inherit property "toMatrix()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: scale"
</span><del>-FAIL CSSSkew interface: existence and properties of interface object assert_own_property: self does not have own property "CSSSkew" expected property "CSSSkew" missing
-FAIL CSSSkew interface object length assert_own_property: self does not have own property "CSSSkew" expected property "CSSSkew" missing
-FAIL CSSSkew interface object name assert_own_property: self does not have own property "CSSSkew" expected property "CSSSkew" missing
-FAIL CSSSkew interface: existence and properties of interface prototype object assert_own_property: self does not have own property "CSSSkew" expected property "CSSSkew" missing
-FAIL CSSSkew interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "CSSSkew" expected property "CSSSkew" missing
-FAIL CSSSkew interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "CSSSkew" expected property "CSSSkew" missing
-FAIL CSSSkew interface: attribute ax assert_own_property: self does not have own property "CSSSkew" expected property "CSSSkew" missing
-FAIL CSSSkew interface: attribute ay assert_own_property: self does not have own property "CSSSkew" expected property "CSSSkew" missing
</del><ins>+PASS CSSSkew interface: existence and properties of interface object
+PASS CSSSkew interface object length
+PASS CSSSkew interface object name
+PASS CSSSkew interface: existence and properties of interface prototype object
+PASS CSSSkew interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSSkew interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSSkew interface: attribute ax
+PASS CSSSkew interface: attribute ay
</ins><span class="cx"> FAIL CSSSkew must be primary interface of skew assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: skew"
</span><span class="cx"> FAIL Stringification of skew assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: skew"
</span><span class="cx"> FAIL CSSSkew interface: skew must inherit property "ax" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: skew"
</span><span class="lines">@@ -337,49 +337,49 @@
</span><span class="cx"> FAIL CSSSkew interface: skew must inherit property "ay" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: skew"
</span><span class="cx"> FAIL CSSTransformComponent interface: skew must inherit property "is2D" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: skew"
</span><span class="cx"> FAIL CSSTransformComponent interface: skew must inherit property "toMatrix()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: skew"
</span><del>-FAIL CSSSkewX interface: existence and properties of interface object assert_own_property: self does not have own property "CSSSkewX" expected property "CSSSkewX" missing
-FAIL CSSSkewX interface object length assert_own_property: self does not have own property "CSSSkewX" expected property "CSSSkewX" missing
-FAIL CSSSkewX interface object name assert_own_property: self does not have own property "CSSSkewX" expected property "CSSSkewX" missing
-FAIL CSSSkewX interface: existence and properties of interface prototype object assert_own_property: self does not have own property "CSSSkewX" expected property "CSSSkewX" missing
-FAIL CSSSkewX interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "CSSSkewX" expected property "CSSSkewX" missing
-FAIL CSSSkewX interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "CSSSkewX" expected property "CSSSkewX" missing
-FAIL CSSSkewX interface: attribute ax assert_own_property: self does not have own property "CSSSkewX" expected property "CSSSkewX" missing
</del><ins>+PASS CSSSkewX interface: existence and properties of interface object
+PASS CSSSkewX interface object length
+PASS CSSSkewX interface object name
+PASS CSSSkewX interface: existence and properties of interface prototype object
+PASS CSSSkewX interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSSkewX interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSSkewX interface: attribute ax
</ins><span class="cx"> FAIL CSSSkewX must be primary interface of skewX assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: skewX"
</span><span class="cx"> FAIL Stringification of skewX assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: skewX"
</span><span class="cx"> FAIL CSSSkewX interface: skewX must inherit property "ax" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: skewX"
</span><span class="cx"> FAIL CSSTransformComponent interface: skewX must inherit property "is2D" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: skewX"
</span><span class="cx"> FAIL CSSTransformComponent interface: skewX must inherit property "toMatrix()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: skewX"
</span><del>-FAIL CSSSkewY interface: existence and properties of interface object assert_own_property: self does not have own property "CSSSkewY" expected property "CSSSkewY" missing
-FAIL CSSSkewY interface object length assert_own_property: self does not have own property "CSSSkewY" expected property "CSSSkewY" missing
-FAIL CSSSkewY interface object name assert_own_property: self does not have own property "CSSSkewY" expected property "CSSSkewY" missing
-FAIL CSSSkewY interface: existence and properties of interface prototype object assert_own_property: self does not have own property "CSSSkewY" expected property "CSSSkewY" missing
-FAIL CSSSkewY interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "CSSSkewY" expected property "CSSSkewY" missing
-FAIL CSSSkewY interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "CSSSkewY" expected property "CSSSkewY" missing
-FAIL CSSSkewY interface: attribute ay assert_own_property: self does not have own property "CSSSkewY" expected property "CSSSkewY" missing
</del><ins>+PASS CSSSkewY interface: existence and properties of interface object
+PASS CSSSkewY interface object length
+PASS CSSSkewY interface object name
+PASS CSSSkewY interface: existence and properties of interface prototype object
+PASS CSSSkewY interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSSkewY interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSSkewY interface: attribute ay
</ins><span class="cx"> FAIL CSSSkewY must be primary interface of skewY assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: skewY"
</span><span class="cx"> FAIL Stringification of skewY assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: skewY"
</span><span class="cx"> FAIL CSSSkewY interface: skewY must inherit property "ay" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: skewY"
</span><span class="cx"> FAIL CSSTransformComponent interface: skewY must inherit property "is2D" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: skewY"
</span><span class="cx"> FAIL CSSTransformComponent interface: skewY must inherit property "toMatrix()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: skewY"
</span><del>-FAIL CSSPerspective interface: existence and properties of interface object assert_own_property: self does not have own property "CSSPerspective" expected property "CSSPerspective" missing
-FAIL CSSPerspective interface object length assert_own_property: self does not have own property "CSSPerspective" expected property "CSSPerspective" missing
-FAIL CSSPerspective interface object name assert_own_property: self does not have own property "CSSPerspective" expected property "CSSPerspective" missing
-FAIL CSSPerspective interface: existence and properties of interface prototype object assert_own_property: self does not have own property "CSSPerspective" expected property "CSSPerspective" missing
-FAIL CSSPerspective interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "CSSPerspective" expected property "CSSPerspective" missing
-FAIL CSSPerspective interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "CSSPerspective" expected property "CSSPerspective" missing
-FAIL CSSPerspective interface: attribute length assert_own_property: self does not have own property "CSSPerspective" expected property "CSSPerspective" missing
</del><ins>+PASS CSSPerspective interface: existence and properties of interface object
+PASS CSSPerspective interface object length
+PASS CSSPerspective interface object name
+PASS CSSPerspective interface: existence and properties of interface prototype object
+PASS CSSPerspective interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSPerspective interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSPerspective interface: attribute length
</ins><span class="cx"> FAIL CSSPerspective must be primary interface of perspective assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: perspective"
</span><span class="cx"> FAIL Stringification of perspective assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: perspective"
</span><span class="cx"> FAIL CSSPerspective interface: perspective must inherit property "length" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: perspective"
</span><span class="cx"> FAIL CSSTransformComponent interface: perspective must inherit property "is2D" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: perspective"
</span><span class="cx"> FAIL CSSTransformComponent interface: perspective must inherit property "toMatrix()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: perspective"
</span><del>-FAIL CSSMatrixComponent interface: existence and properties of interface object assert_own_property: self does not have own property "CSSMatrixComponent" expected property "CSSMatrixComponent" missing
-FAIL CSSMatrixComponent interface object length assert_own_property: self does not have own property "CSSMatrixComponent" expected property "CSSMatrixComponent" missing
-FAIL CSSMatrixComponent interface object name assert_own_property: self does not have own property "CSSMatrixComponent" expected property "CSSMatrixComponent" missing
-FAIL CSSMatrixComponent interface: existence and properties of interface prototype object assert_own_property: self does not have own property "CSSMatrixComponent" expected property "CSSMatrixComponent" missing
-FAIL CSSMatrixComponent interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "CSSMatrixComponent" expected property "CSSMatrixComponent" missing
-FAIL CSSMatrixComponent interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "CSSMatrixComponent" expected property "CSSMatrixComponent" missing
-FAIL CSSMatrixComponent interface: attribute matrix assert_own_property: self does not have own property "CSSMatrixComponent" expected property "CSSMatrixComponent" missing
</del><ins>+PASS CSSMatrixComponent interface: existence and properties of interface object
+PASS CSSMatrixComponent interface object length
+PASS CSSMatrixComponent interface object name
+PASS CSSMatrixComponent interface: existence and properties of interface prototype object
+PASS CSSMatrixComponent interface: existence and properties of interface prototype object's "constructor" property
+PASS CSSMatrixComponent interface: existence and properties of interface prototype object's @@unscopables property
+PASS CSSMatrixComponent interface: attribute matrix
</ins><span class="cx"> FAIL CSSMatrixComponent must be primary interface of matrix assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: matrix"
</span><span class="cx"> FAIL Stringification of matrix assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: matrix"
</span><span class="cx"> FAIL CSSMatrixComponent interface: matrix must inherit property "matrix" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: matrix"
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscsstypedomrotatebyaddedangleexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/rotate-by-added-angle-expected.txt (282701 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/rotate-by-added-angle-expected.txt    2021-09-17 22:58:36 UTC (rev 282701)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/rotate-by-added-angle-expected.txt       2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><del>-CONSOLE MESSAGE: ReferenceError: Can't find variable: CSSTransformValue
</del><ins>+CONSOLE MESSAGE: TypeError: target.attributeStyleMap.set is not a function. (In 'target.attributeStyleMap.set('transform', transform)', 'target.attributeStyleMap.set' is undefined)
</ins><span class="cx"> layer at (0,0) size 800x600
</span><span class="cx">   RenderView at (0,0) size 800x600
</span><span class="cx"> layer at (0,0) size 800x50
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscsstypedomstylevaluenormalizationtransformvaluenormalizationtentativeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-normalization/transformvalue-normalization.tentative-expected.txt (282701 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-normalization/transformvalue-normalization.tentative-expected.txt  2021-09-17 22:58:36 UTC (rev 282701)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-normalization/transformvalue-normalization.tentative-expected.txt     2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -1,7 +1,29 @@
</span><del>-CONSOLE MESSAGE: ReferenceError: Can't find variable: CSSTranslate
</del><span class="cx"> 
</span><del>-Harness Error (FAIL), message = ReferenceError: Can't find variable: CSSTranslate
</del><ins>+FAIL Normalizing a matrix() returns a CSSMatrixComponent matrix(1, 2, 3, 4, 5, 6) cannot be parsed as a transform
+FAIL Normalizing a matrix3d() returns a CSSMatrixComponent matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) cannot be parsed as a transform
+FAIL Normalizing a translate() with X returns a CSSTranslate translate(1px) cannot be parsed as a transform
+FAIL Normalizing a translate() with X and Y returns a CSSTranslate translate(1%, 1px) cannot be parsed as a transform
+FAIL Normalizing a translateX() returns a CSSTranslate translateX(1%) cannot be parsed as a transform
+FAIL Normalizing a translateY() returns a CSSTranslate translateY(1px) cannot be parsed as a transform
+FAIL Normalizing a translate3d() returns a CSSTranslate translate3d(1px, 2%, 3px) cannot be parsed as a transform
+FAIL Normalizing a translateZ() returns a CSSTranslate translateZ(1px) cannot be parsed as a transform
+FAIL Normalizing a scale() with one argument returns a CSSScale scale(2) cannot be parsed as a transform
+FAIL Normalizing a scale() with two arguments returns a CSSScale scale(2, 3) cannot be parsed as a transform
+FAIL Normalizing a scaleX() returns a CSSScale scaleX(2) cannot be parsed as a transform
+FAIL Normalizing a scaleY() returns a CSSScale scaleY(2) cannot be parsed as a transform
+FAIL Normalizing a scale3d() returns a CSSScale scale3d(1, 2, 3) cannot be parsed as a transform
+FAIL Normalizing a scaleZ() returns a CSSScale scaleZ(2) cannot be parsed as a transform
+FAIL Normalizing a rotate() returns a CSSRotate rotate(90deg) cannot be parsed as a transform
+FAIL Normalizing a rotate3d() returns a CSSRotate rotate3d(1, 2, 3, 90deg) cannot be parsed as a transform
+FAIL Normalizing a rotateX() returns a CSSRotate rotateX(90deg) cannot be parsed as a transform
+FAIL Normalizing a rotateY() returns a CSSRotate rotateY(90deg) cannot be parsed as a transform
+FAIL Normalizing a rotateZ() returns a CSSRotate rotateZ(90deg) cannot be parsed as a transform
+FAIL Normalizing a skew() with only X returns a CSSSkew skew(90deg) cannot be parsed as a transform
+FAIL Normalizing a skew() with X and Y which is 0 value returns a CSSSkew skew(90deg, 0deg) cannot be parsed as a transform
+FAIL Normalizing a skew() with X and Y returns a CSSSkew skew(90deg, 45deg) cannot be parsed as a transform
+FAIL Normalizing a skewX() returns a CSSSkewX skewX(90deg) cannot be parsed as a transform
+FAIL Normalizing a skewY() returns a CSSSkewY skewY(90deg) cannot be parsed as a transform
+FAIL Normalizing a perspective() returns a CSSPerspective perspective(1px) cannot be parsed as a transform
+FAIL Normalizing a <transform-list> returns a CSSTransformValue containing all the transforms translate(1px) rotateX(90deg) perspective(1px) skew(90deg) skewX(20deg) skewY(30deg) scale3d(1, 2, 3) cannot be parsed as a transform
+FAIL Normalizing transforms with calc values contains CSSMathValues translate(calc(1px + 1em)) perspective(calc(1px + 1em)) cannot be parsed as a transform
</ins><span class="cx"> 
</span><del>-FAIL Normalizing a matrix() returns a CSSMatrixComponent Can't find variable: CSSTransformValue
-FAIL Normalizing a matrix3d() returns a CSSMatrixComponent Can't find variable: CSSTransformValue
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscsstypedomstylevalueserializationcrashtestscssTransformInternalvalueexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-serialization/crashtests/cssTransform-Internal-value-expected.txt (282701 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-serialization/crashtests/cssTransform-Internal-value-expected.txt  2021-09-17 22:58:36 UTC (rev 282701)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-serialization/crashtests/cssTransform-Internal-value-expected.txt     2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -1,4 +1,3 @@
</span><del>-CONSOLE MESSAGE: ReferenceError: Can't find variable: CSSTranslate
</del><span class="cx"> layer at (0,0) size 800x600
</span><span class="cx">   RenderView at (0,0) size 800x600
</span><span class="cx"> layer at (0,0) size 800x8
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscsstypedomstylevalueserializationcssTransformValuetentativeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative-expected.txt (282701 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative-expected.txt     2021-09-17 22:58:36 UTC (rev 282701)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative-expected.txt        2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -1,5 +1,20 @@
</span><del>-CONSOLE MESSAGE: ReferenceError: Can't find variable: CSSTranslate
</del><span class="cx"> 
</span><del>-Harness Error (FAIL), message = ReferenceError: Can't find variable: CSSTranslate
</del><ins>+FAIL CSSTranslate with 2 arguments serializes correctly assert_equals: expected "translate(1%, 1px)" but got ""
+FAIL CSSTranslate with 3 arguments serializes correctly assert_equals: expected "translate3d(1px, 2%, 3px)" but got ""
+FAIL CSSScale with 2 arguments serializes correctly assert_equals: expected "scale(2, 3)" but got ""
+FAIL CSSScale with 3 arguments serializes correctly assert_equals: expected "scale3d(1, 2, 3)" but got ""
+FAIL CSSRotate with 1 argument serializes correctly assert_equals: expected "rotate(90deg)" but got ""
+FAIL CSSRotate with 4 arguments serializes correctly assert_equals: expected "rotate3d(1, 2, 3, 90deg)" but got ""
+FAIL CSSSkew serializes correctly assert_equals: expected "skew(90deg, 45deg)" but got ""
+FAIL CSSSkew with Y which is 0 value serializes correctly assert_equals: expected "skew(90deg)" but got ""
+FAIL CSSSkewX serializes correctly assert_equals: expected "skewX(90deg)" but got ""
+FAIL CSSSkewY serializes correctly assert_equals: expected "skewY(90deg)" but got ""
+FAIL CSSPerspective serializes correctly assert_equals: expected "perspective(1px)" but got ""
+FAIL CSSPerspective with negative length serializes correctly assert_equals: expected "perspective(calc(-1px))" but got ""
+FAIL CSSTransformValue with a single transform serializes correctly assert_equals: expected "perspective(1px)" but got ""
+FAIL CSSTransformValue with multiple transforms serializes correctly assert_equals: expected "translate(1px, 0px) rotate(90deg) perspective(1px) skew(90deg, 45deg) scale3d(1, 2, 3)" but got ""
+FAIL CSSTransformValue containing CSSMathValues serializes correctly assert_equals: expected "translate(calc(1px + 1em), 0px) rotate(calc(90deg + 1turn)) perspective(calc(1px + 1em)) skew(calc(90deg * 2), calc(1turn * 2)) scale3d(calc(1 * 2), calc(1 + 1), calc(3))" but got ""
+FAIL CSSMatrixComponent with 6 elements serializes correctly assert_equals: expected "matrix(1, 2, 3, 4, 5, 6)" but got ""
+FAIL CSSMatrixComponent with 16 elements serializes correctly assert_equals: expected "matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)" but got ""
+FAIL CSSTransformValue with updated is2D serializes as 2D transforms assert_equals: expected "translate(1px, 2px) rotate(90deg) scale(1, 2)" but got ""
</ins><span class="cx"> 
</span><del>-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscsstypedomstylevaluesubclassescssMatrixComponenttentativeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssMatrixComponent.tentative-expected.txt (282701 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssMatrixComponent.tentative-expected.txt       2021-09-17 22:58:36 UTC (rev 282701)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssMatrixComponent.tentative-expected.txt  2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -1,12 +1,12 @@
</span><span class="cx"> 
</span><del>-FAIL CSSMatrixComponent can be constructed from a 2D matrix with is2D true Can't find variable: CSSMatrixComponent
-FAIL CSSMatrixComponent can be constructed from a 2D matrix with is2D false Can't find variable: CSSMatrixComponent
-FAIL CSSMatrixComponent can be constructed from a 2D matrix without a CSSMatrixComponentOptions Can't find variable: CSSMatrixComponent
-FAIL CSSMatrixComponent can be constructed from a 2D matrix with an invalid CSSMatrixComponentOptions Can't find variable: CSSMatrixComponent
-FAIL CSSMatrixComponent.matrix can be updated to a 2D matrix Can't find variable: CSSMatrixComponent
-FAIL CSSMatrixComponent can be constructed from a 3D matrix with is2D true Can't find variable: CSSMatrixComponent
-FAIL CSSMatrixComponent can be constructed from a 3D matrix with is2D false Can't find variable: CSSMatrixComponent
-FAIL CSSMatrixComponent can be constructed from a 3D matrix without a CSSMatrixComponentOptions Can't find variable: CSSMatrixComponent
-FAIL CSSMatrixComponent can be constructed from a 3D matrix with an invalid CSSMatrixComponentOptions Can't find variable: CSSMatrixComponent
-FAIL CSSMatrixComponent.matrix can be updated to a 3D matrix Can't find variable: CSSMatrixComponent
</del><ins>+FAIL CSSMatrixComponent can be constructed from a 2D matrix with is2D true assert_true: expected true got false
+PASS CSSMatrixComponent can be constructed from a 2D matrix with is2D false
+FAIL CSSMatrixComponent can be constructed from a 2D matrix without a CSSMatrixComponentOptions assert_equals: expected true but got false
+FAIL CSSMatrixComponent can be constructed from a 2D matrix with an invalid CSSMatrixComponentOptions assert_equals: expected true but got false
+PASS CSSMatrixComponent.matrix can be updated to a 2D matrix
+FAIL CSSMatrixComponent can be constructed from a 3D matrix with is2D true assert_true: expected true got false
+PASS CSSMatrixComponent can be constructed from a 3D matrix with is2D false
+PASS CSSMatrixComponent can be constructed from a 3D matrix without a CSSMatrixComponentOptions
+PASS CSSMatrixComponent can be constructed from a 3D matrix with an invalid CSSMatrixComponentOptions
+PASS CSSMatrixComponent.matrix can be updated to a 3D matrix
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscsstypedomstylevaluesubclassescssPerspectivetentativeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssPerspective.tentative-expected.txt (282701 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssPerspective.tentative-expected.txt   2021-09-17 22:58:36 UTC (rev 282701)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssPerspective.tentative-expected.txt      2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -1,35 +1,21 @@
</span><span class="cx"> 
</span><del>-FAIL Constructing a CSSPerspective with a keyword throws a TypeError assert_throws_js: function "() => new CSSPerspective(length)" threw object "ReferenceError: Can't find variable: CSSPerspective" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL Constructing a CSSPerspective with a double throws a TypeError assert_throws_js: function "() => new CSSPerspective(length)" threw object "ReferenceError: Can't find variable: CSSPerspective" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL Constructing a CSSPerspective with a unitless zero throws a TypeError assert_throws_js: function "() => new CSSPerspective(length)" threw object "ReferenceError: Can't find variable: CSSPerspective" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL Constructing a CSSPerspective with a string length throws a TypeError assert_throws_js: function "() => new CSSPerspective(length)" threw object "ReferenceError: Can't find variable: CSSPerspective" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL Constructing a CSSPerspective with a number CSSUnitValue throws a TypeError assert_throws_js: function "() => new CSSPerspective(length)" threw object "ReferenceError: Can't find variable: CSSPerspective" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL Constructing a CSSPerspective with a time dimension CSSUnitValue throws a TypeError assert_throws_js: function "() => new CSSPerspective(length)" threw object "ReferenceError: Can't find variable: CSSPerspective" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL Constructing a CSSPerspective with a CSSMathValue of angle type throws a TypeError assert_throws_js: function "() => new CSSPerspective(length)" threw object "ReferenceError: Can't find variable: CSSPerspective" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL Updating CSSPerspective.length with a keyword throws a TypeError Can't find variable: CSSPerspective
-FAIL Updating CSSPerspective.length with a double throws a TypeError Can't find variable: CSSPerspective
-FAIL Updating CSSPerspective.length with a unitless zero throws a TypeError Can't find variable: CSSPerspective
-FAIL Updating CSSPerspective.length with a string length throws a TypeError Can't find variable: CSSPerspective
-FAIL Updating CSSPerspective.length with a number CSSUnitValue throws a TypeError Can't find variable: CSSPerspective
-FAIL Updating CSSPerspective.length with a time dimension CSSUnitValue throws a TypeError Can't find variable: CSSPerspective
-FAIL Updating CSSPerspective.length with a CSSMathValue of angle type throws a TypeError Can't find variable: CSSPerspective
-FAIL CSSPerspective can be constructed from a length CSSUnitValue Can't find variable: CSSPerspective
-FAIL CSSPerspective.length can be updated to a length CSSUnitValue Can't find variable: CSSPerspective
-FAIL CSSPerspective can be constructed from a CSSMathValue of length type Can't find variable: CSSPerspective
-FAIL CSSPerspective.length can be updated to a CSSMathValue of length type Can't find variable: CSSPerspective
-FAIL Modifying CSSPerspective.is2D is a no-op Can't find variable: CSSPerspective
</del><ins>+PASS Constructing a CSSPerspective with a keyword throws a TypeError
+PASS Constructing a CSSPerspective with a double throws a TypeError
+PASS Constructing a CSSPerspective with a unitless zero throws a TypeError
+PASS Constructing a CSSPerspective with a string length throws a TypeError
+FAIL Constructing a CSSPerspective with a number CSSUnitValue throws a TypeError assert_throws_js: function "() => new CSSPerspective(length)" did not throw
+FAIL Constructing a CSSPerspective with a time dimension CSSUnitValue throws a TypeError assert_throws_js: function "() => new CSSPerspective(length)" did not throw
+FAIL Constructing a CSSPerspective with a CSSMathValue of angle type throws a TypeError assert_throws_js: function "() => new CSSPerspective(length)" did not throw
+PASS Updating CSSPerspective.length with a keyword throws a TypeError
+PASS Updating CSSPerspective.length with a double throws a TypeError
+PASS Updating CSSPerspective.length with a unitless zero throws a TypeError
+PASS Updating CSSPerspective.length with a string length throws a TypeError
+FAIL Updating CSSPerspective.length with a number CSSUnitValue throws a TypeError assert_throws_js: function "() => perspective.length = length" did not throw
+FAIL Updating CSSPerspective.length with a time dimension CSSUnitValue throws a TypeError assert_throws_js: function "() => perspective.length = length" did not throw
+FAIL Updating CSSPerspective.length with a CSSMathValue of angle type throws a TypeError assert_throws_js: function "() => perspective.length = length" did not throw
+PASS CSSPerspective can be constructed from a length CSSUnitValue
+PASS CSSPerspective.length can be updated to a length CSSUnitValue
+PASS CSSPerspective can be constructed from a CSSMathValue of length type
+PASS CSSPerspective.length can be updated to a CSSMathValue of length type
+FAIL Modifying CSSPerspective.is2D is a no-op assert_false: expected false got true
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscsstypedomstylevaluesubclassescssRotatetentativeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssRotate.tentative-expected.txt (282701 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssRotate.tentative-expected.txt        2021-09-17 22:58:36 UTC (rev 282701)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssRotate.tentative-expected.txt   2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -1,37 +1,29 @@
</span><span class="cx"> 
</span><del>-FAIL Constructing a CSSRotate with a CSSUnitValue with type other than angle for the angle throws a TypeError assert_throws_js: function "() => new CSSRotate(angle)" threw object "ReferenceError: Can't find variable: CSSRotate" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL Constructing a CSSRotate with a CSSMathValue that doesn't match <angle> for the angle throws a TypeError assert_throws_js: function "() => new CSSRotate(angle)" threw object "ReferenceError: Can't find variable: CSSRotate" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL Constructing a CSSRotate with a CSSUnitValue with type other than number for the coordinates throws a TypeError assert_throws_js: function "() => new CSSRotate(coord, 0, 0, CSS.deg(0))" threw object "ReferenceError: Can't find variable: CSSRotate" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL Constructing a CSSRotate with a CSSMathValue that doesn't match <number> for the coordinates throws a TypeError assert_throws_js: function "() => new CSSRotate(coord, 0, 0, CSS.deg(0))" threw object "ReferenceError: Can't find variable: CSSRotate" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL Updating CSSRotate.x to a CSSUnitValue with type other than number throws a TypeError Can't find variable: CSSRotate
-FAIL Updating CSSRotate.x to a CSSMathValue that doesn't match <number> throws a TypeError Can't find variable: CSSRotate
-FAIL Updating CSSRotate.y to a CSSUnitValue with type other than number throws a TypeError Can't find variable: CSSRotate
-FAIL Updating CSSRotate.y to a CSSMathValue that doesn't match <number> throws a TypeError Can't find variable: CSSRotate
-FAIL Updating CSSRotate.z to a CSSUnitValue with type other than number throws a TypeError Can't find variable: CSSRotate
-FAIL Updating CSSRotate.z to a CSSMathValue that doesn't match <number> throws a TypeError Can't find variable: CSSRotate
-FAIL Updating CSSRotate.angle to a CSSUnitValue with type other than angle throws a TypeError Can't find variable: CSSRotate
-FAIL Updating CSSRotate.angle to a CSSMathValue that doesn't match <angle> throws a TypeError Can't find variable: CSSRotate
-FAIL CSSRotate can be constructed from a single angle Can't find variable: CSSRotate
-FAIL CSSRotate can be constructed from numberish coordinates Can't find variable: CSSRotate
-FAIL CSSRotate can be constructed from CSSMathValues Can't find variable: CSSRotate
-FAIL CSSRotate.x can be updated to a double Can't find variable: CSSRotate
-FAIL CSSRotate.x can be updated to a number CSSUnitValue Can't find variable: CSSRotate
-FAIL CSSRotate.x can be updated to a CSSMathValue matching <number> Can't find variable: CSSRotate
-FAIL CSSRotate.y can be updated to a double Can't find variable: CSSRotate
-FAIL CSSRotate.y can be updated to a number CSSUnitValue Can't find variable: CSSRotate
-FAIL CSSRotate.y can be updated to a CSSMathValue matching <number> Can't find variable: CSSRotate
-FAIL CSSRotate.z can be updated to a double Can't find variable: CSSRotate
-FAIL CSSRotate.z can be updated to a number CSSUnitValue Can't find variable: CSSRotate
-FAIL CSSRotate.z can be updated to a CSSMathValue matching <number> Can't find variable: CSSRotate
-FAIL CSSRotate.angle can be updated to a degree CSSUnitValue Can't find variable: CSSRotate
-FAIL CSSRotate.angle can be updated to a CSSMathValue matching <angle> Can't find variable: CSSRotate
-FAIL Modifying CSSRotate.is2D can be updated to true or false Can't find variable: CSSRotate
</del><ins>+FAIL Constructing a CSSRotate with a CSSUnitValue with type other than angle for the angle throws a TypeError assert_throws_js: function "() => new CSSRotate(angle)" did not throw
+FAIL Constructing a CSSRotate with a CSSMathValue that doesn't match <angle> for the angle throws a TypeError assert_throws_js: function "() => new CSSRotate(angle)" did not throw
+FAIL Constructing a CSSRotate with a CSSUnitValue with type other than number for the coordinates throws a TypeError assert_throws_js: function "() => new CSSRotate(coord, 0, 0, CSS.deg(0))" did not throw
+FAIL Constructing a CSSRotate with a CSSMathValue that doesn't match <number> for the coordinates throws a TypeError assert_throws_js: function "() => new CSSRotate(coord, 0, 0, CSS.deg(0))" did not throw
+FAIL Updating CSSRotate.x to a CSSUnitValue with type other than number throws a TypeError assert_equals: expected "CSSUnitValue" but got "Number"
+FAIL Updating CSSRotate.x to a CSSMathValue that doesn't match <number> throws a TypeError assert_equals: expected "CSSUnitValue" but got "Number"
+FAIL Updating CSSRotate.y to a CSSUnitValue with type other than number throws a TypeError assert_equals: expected "CSSUnitValue" but got "Number"
+FAIL Updating CSSRotate.y to a CSSMathValue that doesn't match <number> throws a TypeError assert_equals: expected "CSSUnitValue" but got "Number"
+FAIL Updating CSSRotate.z to a CSSUnitValue with type other than number throws a TypeError assert_equals: expected "CSSUnitValue" but got "Number"
+FAIL Updating CSSRotate.z to a CSSMathValue that doesn't match <number> throws a TypeError assert_equals: expected "CSSUnitValue" but got "Number"
+FAIL Updating CSSRotate.angle to a CSSUnitValue with type other than angle throws a TypeError assert_throws_js: function "() => result.angle = angle" did not throw
+FAIL Updating CSSRotate.angle to a CSSMathValue that doesn't match <angle> throws a TypeError assert_throws_js: function "() => result.angle = angle" did not throw
+FAIL CSSRotate can be constructed from a single angle assert_equals: expected "CSSUnitValue" but got "Number"
+FAIL CSSRotate can be constructed from numberish coordinates assert_equals: expected "CSSUnitValue" but got "Number"
+FAIL CSSRotate can be constructed from CSSMathValues assert_equals: expected "CSSMathProduct" but got "CSSMathSum"
+FAIL CSSRotate.x can be updated to a double assert_equals: expected "CSSUnitValue" but got "Number"
+PASS CSSRotate.x can be updated to a number CSSUnitValue
+PASS CSSRotate.x can be updated to a CSSMathValue matching <number>
+FAIL CSSRotate.y can be updated to a double assert_equals: expected "CSSUnitValue" but got "Number"
+FAIL CSSRotate.y can be updated to a number CSSUnitValue assert_equals: expected "CSSUnitValue" but got "Number"
+FAIL CSSRotate.y can be updated to a CSSMathValue matching <number> assert_equals: expected "CSSMathSum" but got "Number"
+FAIL CSSRotate.z can be updated to a double assert_equals: expected "CSSUnitValue" but got "Number"
+FAIL CSSRotate.z can be updated to a number CSSUnitValue assert_equals: expected "CSSUnitValue" but got "Number"
+FAIL CSSRotate.z can be updated to a CSSMathValue matching <number> assert_equals: expected "CSSMathSum" but got "Number"
+PASS CSSRotate.angle can be updated to a degree CSSUnitValue
+PASS CSSRotate.angle can be updated to a CSSMathValue matching <angle>
+PASS Modifying CSSRotate.is2D can be updated to true or false
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscsstypedomstylevaluesubclassescssScaletentativeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssScale.tentative-expected.txt (282701 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssScale.tentative-expected.txt 2021-09-17 22:58:36 UTC (rev 282701)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssScale.tentative-expected.txt    2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -1,33 +1,27 @@
</span><span class="cx"> 
</span><del>-FAIL Constructing a CSSScale with an angle CSSUnitValue for the coordinates throws a TypeError assert_throws_js: function "() => new CSSScale(coord, 0)" threw object "ReferenceError: Can't find variable: CSSScale" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL Constructing a CSSScale with a CSSMathValue that doesn't match <number> for the coordinates throws a TypeError assert_throws_js: function "() => new CSSScale(coord, 0)" threw object "ReferenceError: Can't find variable: CSSScale" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL Constructing a CSSScale with an invalid division by px/px for the coordinates throws a TypeError assert_throws_js: function "() => new CSSScale(coord, 0)" threw object "ReferenceError: Can't find variable: CSSScale" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL Updating CSSScale.x to an angle CSSUnitValue throws a TypeError Can't find variable: CSSScale
-FAIL Updating CSSScale.x to a CSSMathValue that doesn't match <number> throws a TypeError Can't find variable: CSSScale
-FAIL Updating CSSScale.x to an invalid division by px/px throws a TypeError Can't find variable: CSSScale
-FAIL Updating CSSScale.y to an angle CSSUnitValue throws a TypeError Can't find variable: CSSScale
-FAIL Updating CSSScale.y to a CSSMathValue that doesn't match <number> throws a TypeError Can't find variable: CSSScale
-FAIL Updating CSSScale.y to an invalid division by px/px throws a TypeError Can't find variable: CSSScale
-FAIL Updating CSSScale.z to an angle CSSUnitValue throws a TypeError Can't find variable: CSSScale
-FAIL Updating CSSScale.z to a CSSMathValue that doesn't match <number> throws a TypeError Can't find variable: CSSScale
-FAIL Updating CSSScale.z to an invalid division by px/px throws a TypeError Can't find variable: CSSScale
-FAIL CSSScale can be constructed from two number coordinates Can't find variable: CSSScale
-FAIL CSSScale can be constructed from three number coordinates Can't find variable: CSSScale
-FAIL CSSScale can be constructed from CSSMathValue coordinates Can't find variable: CSSScale
-FAIL CSSScale.x can be updated to a number Can't find variable: CSSScale
-FAIL CSSScale.x can be updated to a numberish Can't find variable: CSSScale
-FAIL CSSScale.x can be updated to a CSSMathValue Can't find variable: CSSScale
-FAIL CSSScale.y can be updated to a number Can't find variable: CSSScale
-FAIL CSSScale.y can be updated to a numberish Can't find variable: CSSScale
-FAIL CSSScale.y can be updated to a CSSMathValue Can't find variable: CSSScale
-FAIL CSSScale.z can be updated to a number Can't find variable: CSSScale
-FAIL CSSScale.z can be updated to a numberish Can't find variable: CSSScale
-FAIL CSSScale.z can be updated to a CSSMathValue Can't find variable: CSSScale
-FAIL Modifying CSSScale.is2D can be updated to true or false Can't find variable: CSSScale
</del><ins>+FAIL Constructing a CSSScale with an angle CSSUnitValue for the coordinates throws a TypeError assert_throws_js: function "() => new CSSScale(coord, 0)" did not throw
+FAIL Constructing a CSSScale with a CSSMathValue that doesn't match <number> for the coordinates throws a TypeError assert_throws_js: function "() => new CSSScale(coord, 0)" did not throw
+FAIL Constructing a CSSScale with an invalid division by px/px for the coordinates throws a TypeError assert_throws_js: function "() => new CSSScale(coord, 0)" did not throw
+FAIL Updating CSSScale.x to an angle CSSUnitValue throws a TypeError assert_equals: expected "CSSUnitValue" but got "Number"
+FAIL Updating CSSScale.x to a CSSMathValue that doesn't match <number> throws a TypeError assert_equals: expected "CSSUnitValue" but got "Number"
+FAIL Updating CSSScale.x to an invalid division by px/px throws a TypeError assert_equals: expected "CSSUnitValue" but got "Number"
+FAIL Updating CSSScale.y to an angle CSSUnitValue throws a TypeError assert_equals: expected "CSSUnitValue" but got "Number"
+FAIL Updating CSSScale.y to a CSSMathValue that doesn't match <number> throws a TypeError assert_equals: expected "CSSUnitValue" but got "Number"
+FAIL Updating CSSScale.y to an invalid division by px/px throws a TypeError assert_equals: expected "CSSUnitValue" but got "Number"
+FAIL Updating CSSScale.z to an angle CSSUnitValue throws a TypeError assert_equals: expected "CSSUnitValue" but got "Number"
+FAIL Updating CSSScale.z to a CSSMathValue that doesn't match <number> throws a TypeError assert_equals: expected "CSSUnitValue" but got "Number"
+FAIL Updating CSSScale.z to an invalid division by px/px throws a TypeError assert_equals: expected "CSSUnitValue" but got "Number"
+FAIL CSSScale can be constructed from two number coordinates assert_equals: expected "CSSUnitValue" but got "Number"
+FAIL CSSScale can be constructed from three number coordinates assert_equals: expected "CSSUnitValue" but got "Number"
+PASS CSSScale can be constructed from CSSMathValue coordinates
+FAIL CSSScale.x can be updated to a number assert_equals: expected "CSSUnitValue" but got "Number"
+PASS CSSScale.x can be updated to a numberish
+PASS CSSScale.x can be updated to a CSSMathValue
+FAIL CSSScale.y can be updated to a number assert_equals: expected "CSSUnitValue" but got "Number"
+PASS CSSScale.y can be updated to a numberish
+PASS CSSScale.y can be updated to a CSSMathValue
+FAIL CSSScale.z can be updated to a number assert_equals: expected "CSSUnitValue" but got "Number"
+PASS CSSScale.z can be updated to a numberish
+PASS CSSScale.z can be updated to a CSSMathValue
+PASS Modifying CSSScale.is2D can be updated to true or false
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscsstypedomstylevaluesubclassescssSkewtentativeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssSkew.tentative-expected.txt (282701 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssSkew.tentative-expected.txt  2021-09-17 22:58:36 UTC (rev 282701)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssSkew.tentative-expected.txt     2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -1,46 +1,32 @@
</span><span class="cx"> 
</span><del>-FAIL Constructing a CSSSkew with a keyword throws a TypeError assert_throws_js: function "() => new CSSSkew(value, CSS.deg(0))" threw object "ReferenceError: Can't find variable: CSSSkew" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL Constructing a CSSSkew with a double throws a TypeError assert_throws_js: function "() => new CSSSkew(value, CSS.deg(0))" threw object "ReferenceError: Can't find variable: CSSSkew" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL Constructing a CSSSkew with a unitless zero throws a TypeError assert_throws_js: function "() => new CSSSkew(value, CSS.deg(0))" threw object "ReferenceError: Can't find variable: CSSSkew" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL Constructing a CSSSkew with a string angle throws a TypeError assert_throws_js: function "() => new CSSSkew(value, CSS.deg(0))" threw object "ReferenceError: Can't find variable: CSSSkew" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL Constructing a CSSSkew with a number CSSUnitValue throws a TypeError assert_throws_js: function "() => new CSSSkew(value, CSS.deg(0))" threw object "ReferenceError: Can't find variable: CSSSkew" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL Constructing a CSSSkew with a time dimension CSSUnitValue throws a TypeError assert_throws_js: function "() => new CSSSkew(value, CSS.deg(0))" threw object "ReferenceError: Can't find variable: CSSSkew" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL Constructing a CSSSkew with a CSSMathValue of length type throws a TypeError assert_throws_js: function "() => new CSSSkew(value, CSS.deg(0))" threw object "ReferenceError: Can't find variable: CSSSkew" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL Updating CSSSkew.ax with a keyword throws a TypeError Can't find variable: CSSSkew
-FAIL Updating CSSSkew.ax with a double throws a TypeError Can't find variable: CSSSkew
-FAIL Updating CSSSkew.ax with a unitless zero throws a TypeError Can't find variable: CSSSkew
-FAIL Updating CSSSkew.ax with a string angle throws a TypeError Can't find variable: CSSSkew
-FAIL Updating CSSSkew.ax with a number CSSUnitValue throws a TypeError Can't find variable: CSSSkew
-FAIL Updating CSSSkew.ax with a time dimension CSSUnitValue throws a TypeError Can't find variable: CSSSkew
-FAIL Updating CSSSkew.ax with a CSSMathValue of length type throws a TypeError Can't find variable: CSSSkew
-FAIL Updating CSSSkew.ay with a keyword throws a TypeError Can't find variable: CSSSkew
-FAIL Updating CSSSkew.ay with a double throws a TypeError Can't find variable: CSSSkew
-FAIL Updating CSSSkew.ay with a unitless zero throws a TypeError Can't find variable: CSSSkew
-FAIL Updating CSSSkew.ay with a string angle throws a TypeError Can't find variable: CSSSkew
-FAIL Updating CSSSkew.ay with a number CSSUnitValue throws a TypeError Can't find variable: CSSSkew
-FAIL Updating CSSSkew.ay with a time dimension CSSUnitValue throws a TypeError Can't find variable: CSSSkew
-FAIL Updating CSSSkew.ay with a CSSMathValue of length type throws a TypeError Can't find variable: CSSSkew
-FAIL CSSSkew can be constructed from an angle CSSUnitValue and an angle CSSUnitValue Can't find variable: CSSSkew
-FAIL CSSSkew can be constructed from an angle CSSUnitValue and a CSSMathValue of angle type Can't find variable: CSSSkew
-FAIL CSSSkew can be constructed from a CSSMathValue of angle type and an angle CSSUnitValue Can't find variable: CSSSkew
-FAIL CSSSkew can be constructed from a CSSMathValue of angle type and a CSSMathValue of angle type Can't find variable: CSSSkew
-FAIL CSSSkew.ax can be updated to an angle CSSUnitValue Can't find variable: CSSSkew
-FAIL CSSSkew.ax can be updated to a CSSMathValue of angle type Can't find variable: CSSSkew
-FAIL CSSSkew.ay can be updated to an angle CSSUnitValue Can't find variable: CSSSkew
-FAIL CSSSkew.ay can be updated to a CSSMathValue of angle type Can't find variable: CSSSkew
-FAIL Modifying CSSSkew.is2D is a no-op Can't find variable: CSSSkew
</del><ins>+PASS Constructing a CSSSkew with a keyword throws a TypeError
+PASS Constructing a CSSSkew with a double throws a TypeError
+PASS Constructing a CSSSkew with a unitless zero throws a TypeError
+PASS Constructing a CSSSkew with a string angle throws a TypeError
+FAIL Constructing a CSSSkew with a number CSSUnitValue throws a TypeError assert_throws_js: function "() => new CSSSkew(value, CSS.deg(0))" did not throw
+FAIL Constructing a CSSSkew with a time dimension CSSUnitValue throws a TypeError assert_throws_js: function "() => new CSSSkew(value, CSS.deg(0))" did not throw
+FAIL Constructing a CSSSkew with a CSSMathValue of length type throws a TypeError assert_throws_js: function "() => new CSSSkew(value, CSS.deg(0))" did not throw
+PASS Updating CSSSkew.ax with a keyword throws a TypeError
+PASS Updating CSSSkew.ax with a double throws a TypeError
+PASS Updating CSSSkew.ax with a unitless zero throws a TypeError
+PASS Updating CSSSkew.ax with a string angle throws a TypeError
+FAIL Updating CSSSkew.ax with a number CSSUnitValue throws a TypeError assert_throws_js: function "() => skew[attr] = value" did not throw
+FAIL Updating CSSSkew.ax with a time dimension CSSUnitValue throws a TypeError assert_throws_js: function "() => skew[attr] = value" did not throw
+FAIL Updating CSSSkew.ax with a CSSMathValue of length type throws a TypeError assert_throws_js: function "() => skew[attr] = value" did not throw
+PASS Updating CSSSkew.ay with a keyword throws a TypeError
+PASS Updating CSSSkew.ay with a double throws a TypeError
+PASS Updating CSSSkew.ay with a unitless zero throws a TypeError
+PASS Updating CSSSkew.ay with a string angle throws a TypeError
+FAIL Updating CSSSkew.ay with a number CSSUnitValue throws a TypeError assert_throws_js: function "() => skew[attr] = value" did not throw
+FAIL Updating CSSSkew.ay with a time dimension CSSUnitValue throws a TypeError assert_throws_js: function "() => skew[attr] = value" did not throw
+FAIL Updating CSSSkew.ay with a CSSMathValue of length type throws a TypeError assert_throws_js: function "() => skew[attr] = value" did not throw
+FAIL CSSSkew can be constructed from an angle CSSUnitValue and an angle CSSUnitValue assert_true: expected true got false
+FAIL CSSSkew can be constructed from an angle CSSUnitValue and a CSSMathValue of angle type assert_true: expected true got false
+FAIL CSSSkew can be constructed from a CSSMathValue of angle type and an angle CSSUnitValue assert_true: expected true got false
+FAIL CSSSkew can be constructed from a CSSMathValue of angle type and a CSSMathValue of angle type assert_true: expected true got false
+PASS CSSSkew.ax can be updated to an angle CSSUnitValue
+PASS CSSSkew.ax can be updated to a CSSMathValue of angle type
+PASS CSSSkew.ay can be updated to an angle CSSUnitValue
+PASS CSSSkew.ay can be updated to a CSSMathValue of angle type
+FAIL Modifying CSSSkew.is2D is a no-op assert_true: expected true got false
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscsstypedomstylevaluesubclassescssSkewXtentativeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssSkewX.tentative-expected.txt (282701 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssSkewX.tentative-expected.txt 2021-09-17 22:58:36 UTC (rev 282701)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssSkewX.tentative-expected.txt    2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -1,35 +1,21 @@
</span><span class="cx"> 
</span><del>-FAIL Constructing a CSSSkewX with a keyword throws a TypeError assert_throws_js: function "() => new CSSSkewX(value)" threw object "ReferenceError: Can't find variable: CSSSkewX" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL Constructing a CSSSkewX with a double throws a TypeError assert_throws_js: function "() => new CSSSkewX(value)" threw object "ReferenceError: Can't find variable: CSSSkewX" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL Constructing a CSSSkewX with a unitless zero throws a TypeError assert_throws_js: function "() => new CSSSkewX(value)" threw object "ReferenceError: Can't find variable: CSSSkewX" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL Constructing a CSSSkewX with a string angle throws a TypeError assert_throws_js: function "() => new CSSSkewX(value)" threw object "ReferenceError: Can't find variable: CSSSkewX" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL Constructing a CSSSkewX with a number CSSUnitValue throws a TypeError assert_throws_js: function "() => new CSSSkewX(value)" threw object "ReferenceError: Can't find variable: CSSSkewX" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL Constructing a CSSSkewX with a time dimension CSSUnitValue throws a TypeError assert_throws_js: function "() => new CSSSkewX(value)" threw object "ReferenceError: Can't find variable: CSSSkewX" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL Constructing a CSSSkewX with a CSSMathValue of length type throws a TypeError assert_throws_js: function "() => new CSSSkewX(value)" threw object "ReferenceError: Can't find variable: CSSSkewX" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL Updating CSSSkewX.ax with a keyword throws a TypeError Can't find variable: CSSSkewX
-FAIL Updating CSSSkewX.ax with a double throws a TypeError Can't find variable: CSSSkewX
-FAIL Updating CSSSkewX.ax with a unitless zero throws a TypeError Can't find variable: CSSSkewX
-FAIL Updating CSSSkewX.ax with a string angle throws a TypeError Can't find variable: CSSSkewX
-FAIL Updating CSSSkewX.ax with a number CSSUnitValue throws a TypeError Can't find variable: CSSSkewX
-FAIL Updating CSSSkewX.ax with a time dimension CSSUnitValue throws a TypeError Can't find variable: CSSSkewX
-FAIL Updating CSSSkewX.ax with a CSSMathValue of length type throws a TypeError Can't find variable: CSSSkewX
-FAIL CSSSkewX can be constructed from an angle CSSUnitValue Can't find variable: CSSSkewX
-FAIL CSSSkewX can be constructed from a CSSMathValue of angle type Can't find variable: CSSSkewX
-FAIL CSSSkew.ax can be updated to an angle CSSUnitValue Can't find variable: CSSSkewX
-FAIL CSSSkew.ax can be updated to a CSSMathValue of angle type Can't find variable: CSSSkewX
-FAIL Modifying skewX.is2D is a no-op Can't find variable: CSSSkewX
</del><ins>+PASS Constructing a CSSSkewX with a keyword throws a TypeError
+PASS Constructing a CSSSkewX with a double throws a TypeError
+PASS Constructing a CSSSkewX with a unitless zero throws a TypeError
+PASS Constructing a CSSSkewX with a string angle throws a TypeError
+FAIL Constructing a CSSSkewX with a number CSSUnitValue throws a TypeError assert_throws_js: function "() => new CSSSkewX(value)" did not throw
+FAIL Constructing a CSSSkewX with a time dimension CSSUnitValue throws a TypeError assert_throws_js: function "() => new CSSSkewX(value)" did not throw
+FAIL Constructing a CSSSkewX with a CSSMathValue of length type throws a TypeError assert_throws_js: function "() => new CSSSkewX(value)" did not throw
+PASS Updating CSSSkewX.ax with a keyword throws a TypeError
+PASS Updating CSSSkewX.ax with a double throws a TypeError
+PASS Updating CSSSkewX.ax with a unitless zero throws a TypeError
+PASS Updating CSSSkewX.ax with a string angle throws a TypeError
+FAIL Updating CSSSkewX.ax with a number CSSUnitValue throws a TypeError assert_throws_js: function "() => skewX.ax = value" did not throw
+FAIL Updating CSSSkewX.ax with a time dimension CSSUnitValue throws a TypeError assert_throws_js: function "() => skewX.ax = value" did not throw
+FAIL Updating CSSSkewX.ax with a CSSMathValue of length type throws a TypeError assert_throws_js: function "() => skewX.ax = value" did not throw
+FAIL CSSSkewX can be constructed from an angle CSSUnitValue assert_true: expected true got false
+FAIL CSSSkewX can be constructed from a CSSMathValue of angle type assert_true: expected true got false
+PASS CSSSkew.ax can be updated to an angle CSSUnitValue
+PASS CSSSkew.ax can be updated to a CSSMathValue of angle type
+FAIL Modifying skewX.is2D is a no-op assert_true: expected true got false
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscsstypedomstylevaluesubclassescssSkewYtentativeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssSkewY.tentative-expected.txt (282701 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssSkewY.tentative-expected.txt 2021-09-17 22:58:36 UTC (rev 282701)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssSkewY.tentative-expected.txt    2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -1,35 +1,21 @@
</span><span class="cx"> 
</span><del>-FAIL Constructing a CSSSkewY with a keyword throws a TypeError assert_throws_js: function "() => new CSSSkewY(value)" threw object "ReferenceError: Can't find variable: CSSSkewY" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL Constructing a CSSSkewY with a double throws a TypeError assert_throws_js: function "() => new CSSSkewY(value)" threw object "ReferenceError: Can't find variable: CSSSkewY" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL Constructing a CSSSkewY with a unitless zero throws a TypeError assert_throws_js: function "() => new CSSSkewY(value)" threw object "ReferenceError: Can't find variable: CSSSkewY" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL Constructing a CSSSkewY with a string angle throws a TypeError assert_throws_js: function "() => new CSSSkewY(value)" threw object "ReferenceError: Can't find variable: CSSSkewY" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL Constructing a CSSSkewY with a number CSSUnitValue throws a TypeError assert_throws_js: function "() => new CSSSkewY(value)" threw object "ReferenceError: Can't find variable: CSSSkewY" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL Constructing a CSSSkewY with a time dimension CSSUnitValue throws a TypeError assert_throws_js: function "() => new CSSSkewY(value)" threw object "ReferenceError: Can't find variable: CSSSkewY" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL Constructing a CSSSkewY with a CSSMathValue of length type throws a TypeError assert_throws_js: function "() => new CSSSkewY(value)" threw object "ReferenceError: Can't find variable: CSSSkewY" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL Updating CSSSkewY.ay with a keyword throws a TypeError Can't find variable: CSSSkewY
-FAIL Updating CSSSkewY.ay with a double throws a TypeError Can't find variable: CSSSkewY
-FAIL Updating CSSSkewY.ay with a unitless zero throws a TypeError Can't find variable: CSSSkewY
-FAIL Updating CSSSkewY.ay with a string angle throws a TypeError Can't find variable: CSSSkewY
-FAIL Updating CSSSkewY.ay with a number CSSUnitValue throws a TypeError Can't find variable: CSSSkewY
-FAIL Updating CSSSkewY.ay with a time dimension CSSUnitValue throws a TypeError Can't find variable: CSSSkewY
-FAIL Updating CSSSkewY.ay with a CSSMathValue of length type throws a TypeError Can't find variable: CSSSkewY
-FAIL CSSSkewY can be constructed from an angle CSSUnitValue Can't find variable: CSSSkewY
-FAIL CSSSkewY can be constructed from a CSSMathValue of angle type Can't find variable: CSSSkewY
-FAIL CSSSkewY.ay can be updated to an angle CSSUnitValue Can't find variable: CSSSkewY
-FAIL CSSSkewY.ay can be updated to a CSSMathValue of angle type Can't find variable: CSSSkewY
-FAIL Modifying skewY.is2D is a no-op Can't find variable: CSSSkewY
</del><ins>+PASS Constructing a CSSSkewY with a keyword throws a TypeError
+PASS Constructing a CSSSkewY with a double throws a TypeError
+PASS Constructing a CSSSkewY with a unitless zero throws a TypeError
+PASS Constructing a CSSSkewY with a string angle throws a TypeError
+FAIL Constructing a CSSSkewY with a number CSSUnitValue throws a TypeError assert_throws_js: function "() => new CSSSkewY(value)" did not throw
+FAIL Constructing a CSSSkewY with a time dimension CSSUnitValue throws a TypeError assert_throws_js: function "() => new CSSSkewY(value)" did not throw
+FAIL Constructing a CSSSkewY with a CSSMathValue of length type throws a TypeError assert_throws_js: function "() => new CSSSkewY(value)" did not throw
+PASS Updating CSSSkewY.ay with a keyword throws a TypeError
+PASS Updating CSSSkewY.ay with a double throws a TypeError
+PASS Updating CSSSkewY.ay with a unitless zero throws a TypeError
+PASS Updating CSSSkewY.ay with a string angle throws a TypeError
+FAIL Updating CSSSkewY.ay with a number CSSUnitValue throws a TypeError assert_throws_js: function "() => skewY.ay = value" did not throw
+FAIL Updating CSSSkewY.ay with a time dimension CSSUnitValue throws a TypeError assert_throws_js: function "() => skewY.ay = value" did not throw
+FAIL Updating CSSSkewY.ay with a CSSMathValue of length type throws a TypeError assert_throws_js: function "() => skewY.ay = value" did not throw
+FAIL CSSSkewY can be constructed from an angle CSSUnitValue assert_true: expected true got false
+FAIL CSSSkewY can be constructed from a CSSMathValue of angle type assert_true: expected true got false
+PASS CSSSkewY.ay can be updated to an angle CSSUnitValue
+PASS CSSSkewY.ay can be updated to a CSSMathValue of angle type
+FAIL Modifying skewY.is2D is a no-op assert_true: expected true got false
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscsstypedomstylevaluesubclassescssTransformComponenttoMatrixexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssTransformComponent-toMatrix-expected.txt (282701 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssTransformComponent-toMatrix-expected.txt     2021-09-17 22:58:36 UTC (rev 282701)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssTransformComponent-toMatrix-expected.txt        2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -1,10 +1,10 @@
</span><span class="cx"> 
</span><del>-FAIL CSSTranslate.toMatrix() returns correct matrix Can't find variable: CSSTranslate
-FAIL CSSRotate.toMatrix() returns correct matrix Can't find variable: CSSRotate
-FAIL CSSScale.toMatrix() returns correct matrix Can't find variable: CSSScale
-FAIL CSSSkew.toMatrix() returns correct matrix Can't find variable: CSSSkew
-FAIL CSSSkewX.toMatrix() returns correct matrix Can't find variable: CSSSkewX
-FAIL CSSSkewY.toMatrix() returns correct matrix Can't find variable: CSSSkewY
-FAIL CSSPerspective.toMatrix() returns correct matrix Can't find variable: CSSPerspective
-FAIL CSSMatrixComponent.toMatrix() returns correct matrix Can't find variable: CSSMatrixComponent
</del><ins>+FAIL CSSTranslate.toMatrix() returns correct matrix assert_array_approx_equals: property 12, expected 1 +/- 1e-8, expected 1 but got 0
+FAIL CSSRotate.toMatrix() returns correct matrix assert_array_approx_equals: property 0, expected 0.07142857142857148 +/- 0.000001, expected 0.07142857142857148 but got 1
+FAIL CSSScale.toMatrix() returns correct matrix assert_array_approx_equals: property 5, expected 2 +/- 0.000001, expected 2 but got 1
+FAIL CSSSkew.toMatrix() returns correct matrix assert_array_approx_equals: property 1, expected 2.2371609442247427 +/- 0.000001, expected 2.2371609442247427 but got 0
+FAIL CSSSkewX.toMatrix() returns correct matrix assert_array_approx_equals: property 4, expected 0.17632698070846498 +/- 0.000001, expected 0.17632698070846498 but got 0
+FAIL CSSSkewY.toMatrix() returns correct matrix assert_array_approx_equals: property 1, expected 0.17632698070846498 +/- 0.000001, expected 0.17632698070846498 but got 0
+FAIL CSSPerspective.toMatrix() returns correct matrix assert_array_approx_equals: property 11, expected -0.1 +/- 0.000001, expected -0.1 but got 0
+FAIL CSSMatrixComponent.toMatrix() returns correct matrix assert_array_approx_equals: property 1, expected 2 +/- 0.000001, expected 2 but got 0
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscsstypedomstylevaluesubclassescssTransformComponenttoMatrixrelativeunitsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssTransformComponent-toMatrix-relative-units-expected.txt (282701 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssTransformComponent-toMatrix-relative-units-expected.txt      2021-09-17 22:58:36 UTC (rev 282701)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssTransformComponent-toMatrix-relative-units-expected.txt 2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -4,12 +4,8 @@
</span><span class="cx">       new CSSUnitValue(1, 'px'),
</span><span class="cx">       new CSSUnitValue(1, 'em')
</span><span class="cx">     ).toMatrix();
</span><del>-  }" threw object "ReferenceError: Can't find variable: CSSTranslate" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
</del><ins>+  }" did not throw
</ins><span class="cx"> FAIL CSSPerspective.toMatrix() containing relative units throws TypeError assert_throws_js: function "() => {
</span><span class="cx">     return new CSSPerspective(new CSSUnitValue(1, 'em')).toMatrix();
</span><del>-  }" threw object "ReferenceError: Can't find variable: CSSPerspective" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
</del><ins>+  }" did not throw
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscsstypedomstylevaluesubclassescssTransformValuetoMatrixexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssTransformValue-toMatrix-expected.txt (282701 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssTransformValue-toMatrix-expected.txt 2021-09-17 22:58:36 UTC (rev 282701)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssTransformValue-toMatrix-expected.txt    2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><span class="cx"> 
</span><del>-FAIL CSSTransformValue.toMatrix() multiplies its component matrices Can't find variable: CSSScale
-FAIL CSSTransformValue.toMatrix() respects is2D changes in its components Can't find variable: CSSTranslate
</del><ins>+FAIL CSSTransformValue.toMatrix() multiplies its component matrices assert_array_approx_equals: property 0, expected 10 +/- 0.000001, expected 10 but got 1
+FAIL CSSTransformValue.toMatrix() respects is2D changes in its components assert_array_approx_equals: property 0, expected -6 +/- 0.000001, expected -6 but got 1
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscsstypedomstylevaluesubclassescssTransformValuetentativeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssTransformValue.tentative-expected.txt (282701 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssTransformValue.tentative-expected.txt        2021-09-17 22:58:36 UTC (rev 282701)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssTransformValue.tentative-expected.txt   2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -1,12 +1,10 @@
</span><span class="cx"> 
</span><del>-FAIL Constructing a CSSTransformValue with no components throws TypeError assert_throws_js: function "() => new CSSTransformValue()" threw object "ReferenceError: Can't find variable: CSSTransformValue" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL CSSTransformValue can be constructed with multiple transforms Can't find variable: CSSScale
-FAIL CSSTransformValue.set correctly sets the CSSTransformComponent at the given index Can't find variable: CSSScale
-FAIL Setting a component in CSSTransformValue correctly appends the CSSTransformComponent if index specified is greater than length Can't find variable: CSSScale
-FAIL CSSTransformValue.is2D is false when given mix of 2D and 3D transforms Can't find variable: CSSTransformValue
-FAIL CSSTransformValue.is2D is true when given only 2D transforms Can't find variable: CSSTransformValue
-FAIL CSSTransformValue.is2D is readonly Can't find variable: CSSTransformValue
-FAIL Can iterate through CSSTransformValue components Can't find variable: CSSScale
</del><ins>+FAIL Constructing a CSSTransformValue with no components throws TypeError assert_throws_js: function "() => new CSSTransformValue([])" did not throw
+PASS CSSTransformValue can be constructed with multiple transforms
+PASS CSSTransformValue.set correctly sets the CSSTransformComponent at the given index
+FAIL Setting a component in CSSTransformValue correctly appends the CSSTransformComponent if index specified is greater than length Index 3 exceeds the range of CSSTransformValue.
+PASS CSSTransformValue.is2D is false when given mix of 2D and 3D transforms
+FAIL CSSTransformValue.is2D is true when given only 2D transforms assert_equals: expected true but got false
+FAIL CSSTransformValue.is2D is readonly assert_equals: expected true but got false
+PASS Can iterate through CSSTransformValue components
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscsstypedomstylevaluesubclassescssTranslatetentativeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssTranslate.tentative-expected.txt (282701 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssTranslate.tentative-expected.txt     2021-09-17 22:58:36 UTC (rev 282701)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssTranslate.tentative-expected.txt        2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -1,30 +1,24 @@
</span><span class="cx"> 
</span><del>-FAIL Constructing a CSSTranslate with a CSSUnitValue with type other than length or percent for the coordinates throws a TypeError assert_throws_js: function "() => new CSSTranslate(coord, CSS.px(0), CSS.px(0))" threw object "ReferenceError: Can't find variable: CSSTranslate" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL Constructing a CSSTranslate with a CSSMathValue that doesn't match <length-percentage> for the coordinates throws a TypeError assert_throws_js: function "() => new CSSTranslate(coord, CSS.px(0), CSS.px(0))" threw object "ReferenceError: Can't find variable: CSSTranslate" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL Constructing a CSSTranslate with a percent for the Z coordinate throws a TypeError assert_throws_js: function "() => new CSSTranslate(CSS.px(0), CSS.px(0), CSS.percent(0))" threw object "ReferenceError: Can't find variable: CSSTranslate" ("ReferenceError") expected instance of function "function TypeError() {
-    [native code]
-}" ("TypeError")
-FAIL Updating CSSTranslate.x to a CSSUnitValue with type other than length or percent throws a TypeError Can't find variable: CSSTranslate
-FAIL Updating CSSTranslate.x to a CSSMathValue that doesn't match <length-percentage> throws a TypeError Can't find variable: CSSTranslate
-FAIL Updating CSSTranslate.y to a CSSUnitValue with type other than length or percent throws a TypeError Can't find variable: CSSTranslate
-FAIL Updating CSSTranslate.y to a CSSMathValue that doesn't match <length-percentage> throws a TypeError Can't find variable: CSSTranslate
-FAIL Updating CSSTranslate.z to a CSSUnitValue with type other than length or percent throws a TypeError Can't find variable: CSSTranslate
-FAIL Updating CSSTranslate.z to a CSSMathValue that doesn't match <length-percentage> throws a TypeError Can't find variable: CSSTranslate
-FAIL Updating CSSTranslate.z to a percent throws a TypeError Can't find variable: CSSTranslate
-FAIL CSSTranslate can be constructed from two length or percent coordinates Can't find variable: CSSTranslate
-FAIL CSSTranslate can be constructed from three length or percent coordinates Can't find variable: CSSTranslate
-FAIL CSSTranslate can be constructed from CSSMathValues Can't find variable: CSSTranslate
-FAIL CSSTranslate.x can be updated to a length Can't find variable: CSSTranslate
-FAIL CSSTranslate.x can be updated to a percent Can't find variable: CSSTranslate
-FAIL CSSTranslate.x can be updated to a CSSMathValue Can't find variable: CSSTranslate
-FAIL CSSTranslate.y can be updated to a length Can't find variable: CSSTranslate
-FAIL CSSTranslate.y can be updated to a percent Can't find variable: CSSTranslate
-FAIL CSSTranslate.y can be updated to a CSSMathValue Can't find variable: CSSTranslate
-FAIL CSSTranslate.z can be updated to a length Can't find variable: CSSTranslate
-FAIL CSSTranslate.z can be updated to a CSSMathValue Can't find variable: CSSTranslate
-FAIL Modifying CSSTranslate.is2D can be updated to true or false Can't find variable: CSSTranslate
</del><ins>+FAIL Constructing a CSSTranslate with a CSSUnitValue with type other than length or percent for the coordinates throws a TypeError assert_throws_js: function "() => new CSSTranslate(coord, CSS.px(0), CSS.px(0))" did not throw
+FAIL Constructing a CSSTranslate with a CSSMathValue that doesn't match <length-percentage> for the coordinates throws a TypeError assert_throws_js: function "() => new CSSTranslate(coord, CSS.px(0), CSS.px(0))" did not throw
+FAIL Constructing a CSSTranslate with a percent for the Z coordinate throws a TypeError assert_throws_js: function "() => new CSSTranslate(CSS.px(0), CSS.px(0), CSS.percent(0))" did not throw
+PASS Updating CSSTranslate.x to a CSSUnitValue with type other than length or percent throws a TypeError
+PASS Updating CSSTranslate.x to a CSSMathValue that doesn't match <length-percentage> throws a TypeError
+PASS Updating CSSTranslate.y to a CSSUnitValue with type other than length or percent throws a TypeError
+PASS Updating CSSTranslate.y to a CSSMathValue that doesn't match <length-percentage> throws a TypeError
+PASS Updating CSSTranslate.z to a CSSUnitValue with type other than length or percent throws a TypeError
+PASS Updating CSSTranslate.z to a CSSMathValue that doesn't match <length-percentage> throws a TypeError
+FAIL Updating CSSTranslate.z to a percent throws a TypeError assert_throws_js: function "() => result.z = CSS.percent(0)" did not throw
+FAIL CSSTranslate can be constructed from two length or percent coordinates assert_equals: expected object "0px" but got null
+PASS CSSTranslate can be constructed from three length or percent coordinates
+FAIL CSSTranslate can be constructed from CSSMathValues assert_equals: expected object "0px" but got null
+PASS CSSTranslate.x can be updated to a length
+PASS CSSTranslate.x can be updated to a percent
+PASS CSSTranslate.x can be updated to a CSSMathValue
+PASS CSSTranslate.y can be updated to a length
+PASS CSSTranslate.y can be updated to a percent
+PASS CSSTranslate.y can be updated to a CSSMathValue
+PASS CSSTranslate.z can be updated to a length
+PASS CSSTranslate.z can be updated to a CSSMathValue
+PASS Modifying CSSTranslate.is2D can be updated to true or false
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/CMakeLists.txt (282701 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/CMakeLists.txt      2021-09-17 22:58:36 UTC (rev 282701)
+++ trunk/Source/WebCore/CMakeLists.txt 2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -85,6 +85,7 @@
</span><span class="cx">     "${WEBCORE_DIR}/css/parser"
</span><span class="cx">     "${WEBCORE_DIR}/css/typedom"
</span><span class="cx">     "${WEBCORE_DIR}/css/typedom/numeric"
</span><ins>+    "${WEBCORE_DIR}/css/typedom/transform"
</ins><span class="cx">     "${WEBCORE_DIR}/cssjit"
</span><span class="cx">     "${WEBCORE_DIR}/display"
</span><span class="cx">     "${WEBCORE_DIR}/display/compositing"
</span><span class="lines">@@ -220,6 +221,7 @@
</span><span class="cx">     css/typedom
</span><span class="cx"> 
</span><span class="cx">     css/typedom/numeric
</span><ins>+    css/typedom/transform
</ins><span class="cx"> 
</span><span class="cx">     html/canvas
</span><span class="cx">     html/shadow
</span><span class="lines">@@ -768,6 +770,18 @@
</span><span class="cx">     css/typedom/numeric/CSSNumericBaseType.idl
</span><span class="cx">     css/typedom/numeric/CSSNumericType.idl
</span><span class="cx"> 
</span><ins>+    css/typedom/transform/CSSMatrixComponent.idl
+    css/typedom/transform/CSSMatrixComponentOptions.idl
+    css/typedom/transform/CSSPerspective.idl
+    css/typedom/transform/CSSRotate.idl
+    css/typedom/transform/CSSScale.idl
+    css/typedom/transform/CSSSkew.idl
+    css/typedom/transform/CSSSkewX.idl
+    css/typedom/transform/CSSSkewY.idl
+    css/typedom/transform/CSSTransformComponent.idl
+    css/typedom/transform/CSSTransformValue.idl
+    css/typedom/transform/CSSTranslate.idl
+
</ins><span class="cx">     dom/AbortAlgorithm.idl
</span><span class="cx">     dom/AbortController.idl
</span><span class="cx">     dom/AbortSignal.idl
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (282701 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog   2021-09-17 22:58:36 UTC (rev 282701)
+++ trunk/Source/WebCore/ChangeLog      2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -1,3 +1,129 @@
</span><ins>+2021-09-17  Johnson Zhou  <qiaosong_zhou@apple.com>
+
+        Addition of CSSTransformValue, CSSTransformComponent & subclasses
+        https://bugs.webkit.org/show_bug.cgi?id=230284
+
+        Reviewed by Alex Christensen.
+
+        * CMakeLists.txt:
+        * DerivedSources-input.xcfilelist:
+        * DerivedSources.make:
+        * Sources.txt:
+        * WebCore.xcodeproj/project.pbxproj:
+        * bindings/js/WebCoreBuiltinNames.h:
+        * css/DOMMatrix.idl:
+        * css/DOMMatrixReadOnly.h:
+        * css/typedom/transform/CSSMatrixComponent.cpp: Added.
+        (WebCore::CSSMatrixComponent::create):
+        (WebCore::CSSMatrixComponent::CSSMatrixComponent):
+        (WebCore::CSSMatrixComponent::toString const):
+        (WebCore::CSSMatrixComponent::toMatrix):
+        * css/typedom/transform/CSSMatrixComponent.h: Added.
+        (WebCore::CSSMatrixComponent::create):
+        (WebCore::CSSMatrixComponent::matrix):
+        (WebCore::CSSMatrixComponent::setMatrix):
+        * css/typedom/transform/CSSMatrixComponent.idl: Added.
+        * css/typedom/transform/CSSMatrixComponentOptions.h: Added.
+        * css/typedom/transform/CSSMatrixComponentOptions.idl: Added.
+        * css/typedom/transform/CSSPerspective.cpp: Added.
+        (WebCore::CSSPerspective::create):
+        (WebCore::CSSPerspective::CSSPerspective):
+        (WebCore::CSSPerspective::toString const):
+        (WebCore::CSSPerspective::toMatrix):
+        * css/typedom/transform/CSSPerspective.h: Added.
+        (WebCore::CSSPerspective::length):
+        (WebCore::CSSPerspective::setLength):
+        * css/typedom/transform/CSSPerspective.idl: Added.
+        * css/typedom/transform/CSSRotate.cpp: Added.
+        (WebCore::CSSRotate::create):
+        (WebCore::CSSRotate::CSSRotate):
+        (WebCore::CSSRotate::toString const):
+        (WebCore::CSSRotate::toMatrix):
+        * css/typedom/transform/CSSRotate.h: Added.
+        (WebCore::CSSRotate::x):
+        (WebCore::CSSRotate::y):
+        (WebCore::CSSRotate::z):
+        (WebCore::CSSRotate::angle):
+        (WebCore::CSSRotate::setX):
+        (WebCore::CSSRotate::setY):
+        (WebCore::CSSRotate::setZ):
+        (WebCore::CSSRotate::setAngle):
+        * css/typedom/transform/CSSRotate.idl: Added.
+        * css/typedom/transform/CSSScale.cpp: Added.
+        (WebCore::CSSScale::create):
+        (WebCore::CSSScale::CSSScale):
+        (WebCore::CSSScale::toString const):
+        (WebCore::CSSScale::toMatrix):
+        * css/typedom/transform/CSSScale.h: Added.
+        (WebCore::CSSScale::x):
+        (WebCore::CSSScale::y):
+        (WebCore::CSSScale::z):
+        (WebCore::CSSScale::setX):
+        (WebCore::CSSScale::setY):
+        (WebCore::CSSScale::setZ):
+        * css/typedom/transform/CSSScale.idl: Added.
+        * css/typedom/transform/CSSSkew.cpp: Added.
+        (WebCore::CSSSkew::create):
+        (WebCore::CSSSkew::CSSSkew):
+        (WebCore::CSSSkew::toString const):
+        (WebCore::CSSSkew::toMatrix):
+        * css/typedom/transform/CSSSkew.h: Added.
+        (WebCore::CSSSkew::ax):
+        (WebCore::CSSSkew::ay):
+        (WebCore::CSSSkew::setAx):
+        (WebCore::CSSSkew::setAy):
+        * css/typedom/transform/CSSSkew.idl: Added.
+        * css/typedom/transform/CSSSkewX.cpp: Added.
+        (WebCore::CSSSkewX::create):
+        (WebCore::CSSSkewX::CSSSkewX):
+        (WebCore::CSSSkewX::toString const):
+        (WebCore::CSSSkewX::toMatrix):
+        * css/typedom/transform/CSSSkewX.h: Added.
+        (WebCore::CSSSkewX::ax):
+        (WebCore::CSSSkewX::setAx):
+        * css/typedom/transform/CSSSkewX.idl: Added.
+        * css/typedom/transform/CSSSkewY.cpp: Added.
+        (WebCore::CSSSkewY::create):
+        (WebCore::CSSSkewY::CSSSkewY):
+        (WebCore::CSSSkewY::toString const):
+        (WebCore::CSSSkewY::toMatrix):
+        * css/typedom/transform/CSSSkewY.h: Added.
+        (WebCore::CSSSkewY::ay):
+        (WebCore::CSSSkewY::setAy):
+        * css/typedom/transform/CSSSkewY.idl: Added.
+        * css/typedom/transform/CSSTransformComponent.cpp: Added.
+        (WebCore::CSSTransformComponent::toString const):
+        (WebCore::CSSTransformComponent::toMatrix):
+        * css/typedom/transform/CSSTransformComponent.h: Added.
+        (WebCore::CSSTransformComponent::is2D const):
+        (WebCore::CSSTransformComponent::setIs2D):
+        * css/typedom/transform/CSSTransformComponent.idl: Added.
+        * css/typedom/transform/CSSTransformValue.cpp: Added.
+        (WebCore::CSSTransformValue::create):
+        (WebCore::CSSTransformValue::item):
+        (WebCore::CSSTransformValue::setItem):
+        (WebCore::CSSTransformValue::is2D const):
+        (WebCore::CSSTransformValue::setIs2D):
+        (WebCore::CSSTransformValue::toMatrix):
+        (WebCore::CSSTransformValue::CSSTransformValue):
+        * css/typedom/transform/CSSTransformValue.h: Added.
+        (WebCore::CSSTransformValue::length const):
+        (isType):
+        * css/typedom/transform/CSSTransformValue.idl: Added.
+        * css/typedom/transform/CSSTranslate.cpp: Added.
+        (WebCore::CSSTranslate::create):
+        (WebCore::CSSTranslate::CSSTranslate):
+        (WebCore::CSSTranslate::toString const):
+        (WebCore::CSSTranslate::toMatrix):
+        * css/typedom/transform/CSSTranslate.h: Added.
+        (WebCore::CSSTranslate::x):
+        (WebCore::CSSTranslate::y):
+        (WebCore::CSSTranslate::z):
+        (WebCore::CSSTranslate::setX):
+        (WebCore::CSSTranslate::setY):
+        (WebCore::CSSTranslate::setZ):
+        * css/typedom/transform/CSSTranslate.idl: Added.
+
</ins><span class="cx"> 2021-09-17  Simon Fraser  <simon.fraser@apple.com>
</span><span class="cx"> 
</span><span class="cx">         Make ScrollAnimation a little more generic
</span></span></pre></div>
<a id="trunkSourceWebCoreDerivedSourcesinputxcfilelist"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/DerivedSources-input.xcfilelist (282701 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/DerivedSources-input.xcfilelist     2021-09-17 22:58:36 UTC (rev 282701)
+++ trunk/Source/WebCore/DerivedSources-input.xcfilelist        2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -765,6 +765,17 @@
</span><span class="cx"> $(PROJECT_DIR)/css/typedom/numeric/CSSNumericArray.idl
</span><span class="cx"> $(PROJECT_DIR)/css/typedom/numeric/CSSNumericBaseType.idl
</span><span class="cx"> $(PROJECT_DIR)/css/typedom/numeric/CSSNumericType.idl
</span><ins>+$(PROJECT_DIR)/css/typedom/transform/CSSMatrixComponent.idl
+$(PROJECT_DIR)/css/typedom/transform/CSSMatrixComponentOptions.idl
+$(PROJECT_DIR)/css/typedom/transform/CSSPerspective.idl
+$(PROJECT_DIR)/css/typedom/transform/CSSRotate.idl
+$(PROJECT_DIR)/css/typedom/transform/CSSScale.idl
+$(PROJECT_DIR)/css/typedom/transform/CSSSkew.idl
+$(PROJECT_DIR)/css/typedom/transform/CSSSkewX.idl
+$(PROJECT_DIR)/css/typedom/transform/CSSSkewY.idl
+$(PROJECT_DIR)/css/typedom/transform/CSSTransformComponent.idl
+$(PROJECT_DIR)/css/typedom/transform/CSSTransformValue.idl
+$(PROJECT_DIR)/css/typedom/transform/CSSTranslate.idl
</ins><span class="cx"> $(PROJECT_DIR)/dom/AbortAlgorithm.idl
</span><span class="cx"> $(PROJECT_DIR)/dom/AbortController.idl
</span><span class="cx"> $(PROJECT_DIR)/dom/AbortSignal.idl
</span></span></pre></div>
<a id="trunkSourceWebCoreDerivedSourcesmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/DerivedSources.make (282701 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/DerivedSources.make 2021-09-17 22:58:36 UTC (rev 282701)
+++ trunk/Source/WebCore/DerivedSources.make    2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -637,6 +637,17 @@
</span><span class="cx">     $(WebCore)/css/typedom/numeric/CSSNumericArray.idl \
</span><span class="cx">     $(WebCore)/css/typedom/numeric/CSSNumericBaseType.idl \
</span><span class="cx">     $(WebCore)/css/typedom/numeric/CSSNumericType.idl \
</span><ins>+       $(WebCore)/css/typedom/transform/CSSMatrixComponent.idl \
+       $(WebCore)/css/typedom/transform/CSSMatrixComponentOptions.idl \
+       $(WebCore)/css/typedom/transform/CSSPerspective.idl \
+       $(WebCore)/css/typedom/transform/CSSRotate.idl \
+       $(WebCore)/css/typedom/transform/CSSScale.idl \
+       $(WebCore)/css/typedom/transform/CSSSkew.idl \
+       $(WebCore)/css/typedom/transform/CSSSkewX.idl \
+       $(WebCore)/css/typedom/transform/CSSSkewY.idl \
+       $(WebCore)/css/typedom/transform/CSSTransformComponent.idl \
+       $(WebCore)/css/typedom/transform/CSSTransformValue.idl \
+       $(WebCore)/css/typedom/transform/CSSTranslate.idl \
</ins><span class="cx">     $(WebCore)/dom/AbortAlgorithm.idl \
</span><span class="cx">     $(WebCore)/dom/AbortController.idl \
</span><span class="cx">     $(WebCore)/dom/AbortSignal.idl \
</span></span></pre></div>
<a id="trunkSourceWebCoreSourcestxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Sources.txt (282701 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Sources.txt 2021-09-17 22:58:36 UTC (rev 282701)
+++ trunk/Source/WebCore/Sources.txt    2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -544,6 +544,7 @@
</span><span class="cx"> bindings/js/JSTrackCustom.cpp
</span><span class="cx"> bindings/js/JSTreeWalkerCustom.cpp
</span><span class="cx"> bindings/js/JSCSSStyleValueCustom.cpp
</span><ins>+bindings/js/JSCSSTransformComponentCustom.cpp
</ins><span class="cx"> bindings/js/JSUndoItemCustom.cpp
</span><span class="cx"> bindings/js/JSWebAnimationCustom.cpp
</span><span class="cx"> bindings/js/JSWebGL2RenderingContextCustom.cpp
</span><span class="lines">@@ -796,6 +797,16 @@
</span><span class="cx"> css/typedom/numeric/CSSMathSum.cpp
</span><span class="cx"> css/typedom/numeric/CSSMathValue.cpp
</span><span class="cx"> css/typedom/numeric/CSSNumericArray.cpp
</span><ins>+css/typedom/transform/CSSMatrixComponent.cpp
+css/typedom/transform/CSSPerspective.cpp
+css/typedom/transform/CSSRotate.cpp
+css/typedom/transform/CSSScale.cpp
+css/typedom/transform/CSSSkew.cpp
+css/typedom/transform/CSSSkewX.cpp
+css/typedom/transform/CSSSkewY.cpp
+css/typedom/transform/CSSTransformComponent.cpp
+css/typedom/transform/CSSTransformValue.cpp
+css/typedom/transform/CSSTranslate.cpp
</ins><span class="cx"> cssjit/SelectorCompiler.cpp
</span><span class="cx"> display/compositing/DisplayLayerController.cpp
</span><span class="cx"> display/css/DisplayBox.cpp
</span><span class="lines">@@ -3657,6 +3668,17 @@
</span><span class="cx"> JSCSSNumericType.cpp
</span><span class="cx"> JSCSSNumericValue.cpp
</span><span class="cx"> JSCSSOMVariableReferenceValue.cpp
</span><ins>+JSCSSMatrixComponent.cpp
+JSCSSMatrixComponentOptions.cpp
+JSCSSPerspective.cpp
+JSCSSRotate.cpp
+JSCSSScale.cpp
+JSCSSSkew.cpp
+JSCSSSkewX.cpp
+JSCSSSkewY.cpp
+JSCSSTransformComponent.cpp
+JSCSSTransformValue.cpp
+JSCSSTranslate.cpp
</ins><span class="cx"> JSCSSStyleValue.cpp
</span><span class="cx"> JSCSSUnitValue.cpp
</span><span class="cx"> JSCSSUnparsedValue.cpp
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (282701 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj   2021-09-17 22:58:36 UTC (rev 282701)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj      2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -758,6 +758,17 @@
</span><span class="cx">          29D7BCFA1444AF7D0070619C /* AccessibilitySpinButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 29D7BCF91444AF7D0070619C /* AccessibilitySpinButton.h */; };
</span><span class="cx">          29FAF4B6195AB08900A522DC /* TextUndoInsertionMarkupMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 29FAF4B5195AB08900A522DC /* TextUndoInsertionMarkupMac.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">          2A4107A426CB66F8003BF797 /* CSSKeywordValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A4107A326CB66EE003BF797 /* CSSKeywordValue.h */; };
</span><ins>+               2A538A2526F0103300965FC8 /* CSSMatrixComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A538A1826E3693000965FC8 /* CSSMatrixComponent.h */; };
+               2A538A2626F0103600965FC8 /* CSSMatrixComponentOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A538A1326E3693000965FC8 /* CSSMatrixComponentOptions.h */; };
+               2A538A2726F0103900965FC8 /* CSSPerspective.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A538A0A26E3693000965FC8 /* CSSPerspective.h */; };
+               2A538A2826F0103C00965FC8 /* CSSRotate.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A538A0F26E3693000965FC8 /* CSSRotate.h */; };
+               2A538A2926F0103F00965FC8 /* CSSScale.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A538A1B26E3693000965FC8 /* CSSScale.h */; };
+               2A538A2A26F0104200965FC8 /* CSSSkew.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A538A2426E3693000965FC8 /* CSSSkew.h */; };
+               2A538A2B26F0104500965FC8 /* CSSSkewX.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A538A1026E3693000965FC8 /* CSSSkewX.h */; };
+               2A538A2C26F0104800965FC8 /* CSSSkewY.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A538A1A26E3693000965FC8 /* CSSSkewY.h */; };
+               2A538A2D26F0104C00965FC8 /* CSSTransformComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A538A0526E3693000965FC8 /* CSSTransformComponent.h */; };
+               2A538A2E26F0104F00965FC8 /* CSSTransformValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A538A1526E3693000965FC8 /* CSSTransformValue.h */; };
+               2A538A2F26F0105200965FC8 /* CSSTranslate.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A538A0C26E3693000965FC8 /* CSSTranslate.h */; };
</ins><span class="cx">           2ABFFFF326C535C00048875B /* CSSOMVariableReferenceValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ABFFFF126C535BD0048875B /* CSSOMVariableReferenceValue.h */; };
</span><span class="cx">          2ACB4D2B26DC4ACE00BEB753 /* CSSNumericFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACB4D2726DC4AB200BEB753 /* CSSNumericFactory.h */; };
</span><span class="cx">          2AEF6FD326E7ECA500326D02 /* CSSMathInvert.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AEF6FC626E716EE00326D02 /* CSSMathInvert.h */; };
</span><span class="lines">@@ -7253,6 +7264,39 @@
</span><span class="cx">          2A4107A026CB66ED003BF797 /* CSSKeywordValue.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CSSKeywordValue.cpp; sourceTree = "<group>"; };
</span><span class="cx">          2A4107A226CB66ED003BF797 /* CSSKeywordValue.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = CSSKeywordValue.idl; sourceTree = "<group>"; };
</span><span class="cx">          2A4107A326CB66EE003BF797 /* CSSKeywordValue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CSSKeywordValue.h; sourceTree = "<group>"; };
</span><ins>+               2A538A0426E3693000965FC8 /* CSSScale.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = CSSScale.idl; sourceTree = "<group>"; };
+               2A538A0526E3693000965FC8 /* CSSTransformComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CSSTransformComponent.h; sourceTree = "<group>"; };
+               2A538A0626E3693000965FC8 /* CSSMatrixComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CSSMatrixComponent.cpp; sourceTree = "<group>"; };
+               2A538A0726E3693000965FC8 /* CSSMatrixComponentOptions.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = CSSMatrixComponentOptions.idl; sourceTree = "<group>"; };
+               2A538A0826E3693000965FC8 /* CSSRotate.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CSSRotate.cpp; sourceTree = "<group>"; };
+               2A538A0926E3693000965FC8 /* CSSPerspective.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = CSSPerspective.idl; sourceTree = "<group>"; };
+               2A538A0A26E3693000965FC8 /* CSSPerspective.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CSSPerspective.h; sourceTree = "<group>"; };
+               2A538A0B26E3693000965FC8 /* CSSSkew.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CSSSkew.cpp; sourceTree = "<group>"; };
+               2A538A0C26E3693000965FC8 /* CSSTranslate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CSSTranslate.h; sourceTree = "<group>"; };
+               2A538A0D26E3693000965FC8 /* CSSSkewX.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = CSSSkewX.idl; sourceTree = "<group>"; };
+               2A538A0E26E3693000965FC8 /* CSSSkewY.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = CSSSkewY.idl; sourceTree = "<group>"; };
+               2A538A0F26E3693000965FC8 /* CSSRotate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CSSRotate.h; sourceTree = "<group>"; };
+               2A538A1026E3693000965FC8 /* CSSSkewX.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CSSSkewX.h; sourceTree = "<group>"; };
+               2A538A1126E3693000965FC8 /* CSSTransformValue.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = CSSTransformValue.idl; sourceTree = "<group>"; };
+               2A538A1226E3693000965FC8 /* CSSTranslate.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CSSTranslate.cpp; sourceTree = "<group>"; };
+               2A538A1326E3693000965FC8 /* CSSMatrixComponentOptions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CSSMatrixComponentOptions.h; sourceTree = "<group>"; };
+               2A538A1426E3693000965FC8 /* CSSTransformComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CSSTransformComponent.cpp; sourceTree = "<group>"; };
+               2A538A1526E3693000965FC8 /* CSSTransformValue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CSSTransformValue.h; sourceTree = "<group>"; };
+               2A538A1626E3693000965FC8 /* CSSMatrixComponent.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = CSSMatrixComponent.idl; sourceTree = "<group>"; };
+               2A538A1826E3693000965FC8 /* CSSMatrixComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CSSMatrixComponent.h; sourceTree = "<group>"; };
+               2A538A1926E3693000965FC8 /* CSSScale.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CSSScale.cpp; sourceTree = "<group>"; };
+               2A538A1A26E3693000965FC8 /* CSSSkewY.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CSSSkewY.h; sourceTree = "<group>"; };
+               2A538A1B26E3693000965FC8 /* CSSScale.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CSSScale.h; sourceTree = "<group>"; };
+               2A538A1C26E3693000965FC8 /* CSSTransformValue.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CSSTransformValue.cpp; sourceTree = "<group>"; };
+               2A538A1D26E3693000965FC8 /* CSSTranslate.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = CSSTranslate.idl; sourceTree = "<group>"; };
+               2A538A1E26E3693000965FC8 /* CSSTransformComponent.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = CSSTransformComponent.idl; sourceTree = "<group>"; };
+               2A538A1F26E3693000965FC8 /* CSSRotate.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = CSSRotate.idl; sourceTree = "<group>"; };
+               2A538A2026E3693000965FC8 /* CSSPerspective.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CSSPerspective.cpp; sourceTree = "<group>"; };
+               2A538A2126E3693000965FC8 /* CSSSkew.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = CSSSkew.idl; sourceTree = "<group>"; };
+               2A538A2226E3693000965FC8 /* CSSSkewX.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CSSSkewX.cpp; sourceTree = "<group>"; };
+               2A538A2326E3693000965FC8 /* CSSSkewY.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CSSSkewY.cpp; sourceTree = "<group>"; };
+               2A538A2426E3693000965FC8 /* CSSSkew.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CSSSkew.h; sourceTree = "<group>"; };
+               2A538A4A26F3DA5E00965FC8 /* JSCSSTransformComponentCustom.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = JSCSSTransformComponentCustom.cpp; sourceTree = "<group>"; };
</ins><span class="cx">           2A66438E26A006AE00C147A1 /* FormDataEvent.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = FormDataEvent.idl; sourceTree = "<group>"; };
</span><span class="cx">          2A66439026A006AF00C147A1 /* FormDataEvent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FormDataEvent.h; sourceTree = "<group>"; };
</span><span class="cx">          2A66439126A006AF00C147A1 /* FormDataEvent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FormDataEvent.cpp; sourceTree = "<group>"; };
</span><span class="lines">@@ -19266,6 +19310,45 @@
</span><span class="cx">                  path = isolatedtree;
</span><span class="cx">                  sourceTree = "<group>";
</span><span class="cx">          };
</span><ins>+               2A538A0326E3693000965FC8 /* transform */ = {
+                       isa = PBXGroup;
+                       children = (
+                               2A538A0626E3693000965FC8 /* CSSMatrixComponent.cpp */,
+                               2A538A1826E3693000965FC8 /* CSSMatrixComponent.h */,
+                               2A538A1626E3693000965FC8 /* CSSMatrixComponent.idl */,
+                               2A538A1326E3693000965FC8 /* CSSMatrixComponentOptions.h */,
+                               2A538A0726E3693000965FC8 /* CSSMatrixComponentOptions.idl */,
+                               2A538A2026E3693000965FC8 /* CSSPerspective.cpp */,
+                               2A538A0A26E3693000965FC8 /* CSSPerspective.h */,
+                               2A538A0926E3693000965FC8 /* CSSPerspective.idl */,
+                               2A538A0826E3693000965FC8 /* CSSRotate.cpp */,
+                               2A538A0F26E3693000965FC8 /* CSSRotate.h */,
+                               2A538A1F26E3693000965FC8 /* CSSRotate.idl */,
+                               2A538A1926E3693000965FC8 /* CSSScale.cpp */,
+                               2A538A1B26E3693000965FC8 /* CSSScale.h */,
+                               2A538A0426E3693000965FC8 /* CSSScale.idl */,
+                               2A538A0B26E3693000965FC8 /* CSSSkew.cpp */,
+                               2A538A2426E3693000965FC8 /* CSSSkew.h */,
+                               2A538A2126E3693000965FC8 /* CSSSkew.idl */,
+                               2A538A2226E3693000965FC8 /* CSSSkewX.cpp */,
+                               2A538A1026E3693000965FC8 /* CSSSkewX.h */,
+                               2A538A0D26E3693000965FC8 /* CSSSkewX.idl */,
+                               2A538A2326E3693000965FC8 /* CSSSkewY.cpp */,
+                               2A538A1A26E3693000965FC8 /* CSSSkewY.h */,
+                               2A538A0E26E3693000965FC8 /* CSSSkewY.idl */,
+                               2A538A1426E3693000965FC8 /* CSSTransformComponent.cpp */,
+                               2A538A0526E3693000965FC8 /* CSSTransformComponent.h */,
+                               2A538A1E26E3693000965FC8 /* CSSTransformComponent.idl */,
+                               2A538A1C26E3693000965FC8 /* CSSTransformValue.cpp */,
+                               2A538A1526E3693000965FC8 /* CSSTransformValue.h */,
+                               2A538A1126E3693000965FC8 /* CSSTransformValue.idl */,
+                               2A538A1226E3693000965FC8 /* CSSTranslate.cpp */,
+                               2A538A0C26E3693000965FC8 /* CSSTranslate.h */,
+                               2A538A1D26E3693000965FC8 /* CSSTranslate.idl */,
+                       );
+                       path = transform;
+                       sourceTree = "<group>";
+               };
</ins><span class="cx">           2AEF6FBB26E716EE00326D02 /* numeric */ = {
</span><span class="cx">                  isa = PBXGroup;
</span><span class="cx">                  children = (
</span><span class="lines">@@ -20378,6 +20461,7 @@
</span><span class="cx">                  isa = PBXGroup;
</span><span class="cx">                  children = (
</span><span class="cx">                          2AEF6FBB26E716EE00326D02 /* numeric */,
</span><ins>+                               2A538A0326E3693000965FC8 /* transform */,
</ins><span class="cx">                           2A4107A026CB66ED003BF797 /* CSSKeywordValue.cpp */,
</span><span class="cx">                          2A4107A326CB66EE003BF797 /* CSSKeywordValue.h */,
</span><span class="cx">                          2A4107A226CB66ED003BF797 /* CSSKeywordValue.idl */,
</span><span class="lines">@@ -22930,6 +23014,7 @@
</span><span class="cx">                          BC5825F20C0B89380053F1B5 /* JSCSSStyleDeclarationCustom.cpp */,
</span><span class="cx">                          AD726FEA16D9F40B003A4E6D /* JSCSSStyleDeclarationCustom.h */,
</span><span class="cx">                          4BAFD0E22192604D00C0AB64 /* JSCSSStyleValueCustom.cpp */,
</span><ins>+                               2A538A4A26F3DA5E00965FC8 /* JSCSSTransformComponentCustom.cpp */,
</ins><span class="cx">                           BC20FB7E0C0E8E6C00D1447F /* JSDeprecatedCSSOMValueCustom.cpp */,
</span><span class="cx">                          49C7BA8C1042F5B10009D447 /* JSDocumentCustom.cpp */,
</span><span class="cx">                          ADDA94BF19686F8000453029 /* JSDocumentCustom.h */,
</span><span class="lines">@@ -31893,6 +31978,8 @@
</span><span class="cx">                          2AEF6FD826E7ECBC00326D02 /* CSSMathProduct.h in Headers */,
</span><span class="cx">                          2AEF6FD926E7ECC000326D02 /* CSSMathSum.h in Headers */,
</span><span class="cx">                          2AEF6FDA26E7ECC300326D02 /* CSSMathValue.h in Headers */,
</span><ins>+                               2A538A2526F0103300965FC8 /* CSSMatrixComponent.h in Headers */,
+                               2A538A2626F0103600965FC8 /* CSSMatrixComponentOptions.h in Headers */,
</ins><span class="cx">                           A80E6D030A1989CA007FB8C5 /* CSSMediaRule.h in Headers */,
</span><span class="cx">                          314BE3A11B30F6B700141982 /* CSSNamedImageValue.h in Headers */,
</span><span class="cx">                          94E839511DFB2A0E007BC6A7 /* CSSNamespaceRule.h in Headers */,
</span><span class="lines">@@ -31918,6 +32005,7 @@
</span><span class="cx">                          946D37401D6CE3C20077084F /* CSSParserToken.h in Headers */,
</span><span class="cx">                          946D374E1D6D08AA0077084F /* CSSParserTokenRange.h in Headers */,
</span><span class="cx">                          9418278F1D8CAF9200492764 /* CSSPendingSubstitutionValue.h in Headers */,
</span><ins>+                               2A538A2726F0103900965FC8 /* CSSPerspective.h in Headers */,
</ins><span class="cx">                           977B3863122883E900B81FF8 /* CSSPreloadScanner.h in Headers */,
</span><span class="cx">                          A80E6CE60A1989CA007FB8C5 /* CSSPrimitiveValue.h in Headers */,
</span><span class="cx">                          E1ED8AC30CC49BE000BFC557 /* CSSPrimitiveValueMappings.h in Headers */,
</span><span class="lines">@@ -31932,13 +32020,18 @@
</span><span class="cx">                          BC5A12E00DC0414800C9AFAD /* CSSReflectValue.h in Headers */,
</span><span class="cx">                          4BDA40012151B6F500FD6604 /* CSSRegisteredCustomProperty.h in Headers */,
</span><span class="cx">                          BC7D8FF41BD1A47900FFE540 /* CSSRevertValue.h in Headers */,
</span><ins>+                               2A538A2826F0103C00965FC8 /* CSSRotate.h in Headers */,
</ins><span class="cx">                           A80E6D0D0A1989CA007FB8C5 /* CSSRule.h in Headers */,
</span><span class="cx">                          A80E6CF20A1989CA007FB8C5 /* CSSRuleList.h in Headers */,
</span><ins>+                               2A538A2926F0103F00965FC8 /* CSSScale.h in Headers */,
</ins><span class="cx">                           371F51A10D262FA000ECE0D5 /* CSSSegmentedFontFace.h in Headers */,
</span><span class="cx">                          A80E73520A199C77007FB8C5 /* CSSSelector.h in Headers */,
</span><span class="cx">                          E4C1789B0EE6903800824D69 /* CSSSelectorList.h in Headers */,
</span><span class="cx">                          94DE5C8E1D80802700164F2A /* CSSSelectorParser.h in Headers */,
</span><span class="cx">                          A80E6CE80A1989CA007FB8C5 /* CSSShadowValue.h in Headers */,
</span><ins>+                               2A538A2A26F0104200965FC8 /* CSSSkew.h in Headers */,
+                               2A538A2B26F0104500965FC8 /* CSSSkewX.h in Headers */,
+                               2A538A2C26F0104800965FC8 /* CSSSkewY.h in Headers */,
</ins><span class="cx">                           A80E6E0F0A19911C007FB8C5 /* CSSStyleDeclaration.h in Headers */,
</span><span class="cx">                          4B438650219CD56100F8D3C5 /* CSSStyleImageValue.h in Headers */,
</span><span class="cx">                          A80E6D0C0A1989CA007FB8C5 /* CSSStyleRule.h in Headers */,
</span><span class="lines">@@ -31951,7 +32044,10 @@
</span><span class="cx">                          946D373C1D6CDFC00077084F /* CSSTokenizerInputStream.h in Headers */,
</span><span class="cx">                          9AB1F38018E2489A00534743 /* CSSToLengthConversionData.h in Headers */,
</span><span class="cx">                          A882DA231593848D000115ED /* CSSToStyleMap.h in Headers */,
</span><ins>+                               2A538A2D26F0104C00965FC8 /* CSSTransformComponent.h in Headers */,
+                               2A538A2E26F0104F00965FC8 /* CSSTransformValue.h in Headers */,
</ins><span class="cx">                           715AD7212050513F00D592DC /* CSSTransition.h in Headers */,
</span><ins>+                               2A538A2F26F0105200965FC8 /* CSSTranslate.h in Headers */,
</ins><span class="cx">                           371F53E90D2704F900ECE0D5 /* CSSUnicodeRangeValue.h in Headers */,
</span><span class="cx">                          0F6B707A237BC36D0052CA47 /* CSSUnits.h in Headers */,
</span><span class="cx">                          4BAFD0E1219242A000C0AB64 /* CSSUnitValue.h in Headers */,
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSCSSTransformComponentCustomcpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/bindings/js/JSCSSTransformComponentCustom.cpp (0 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSCSSTransformComponentCustom.cpp                               (rev 0)
+++ trunk/Source/WebCore/bindings/js/JSCSSTransformComponentCustom.cpp  2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -0,0 +1,75 @@
</span><ins>+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "JSCSSTransformComponent.h"
+
+#if ENABLE(CSS_TYPED_OM)
+
+#include "JSCSSMatrixComponent.h"
+#include "JSCSSPerspective.h"
+#include "JSCSSRotate.h"
+#include "JSCSSScale.h"
+#include "JSCSSSkew.h"
+#include "JSCSSSkewX.h"
+#include "JSCSSSkewY.h"
+#include "JSCSSTranslate.h"
+#include "JSDOMWrapperCache.h"
+
+namespace WebCore {
+using namespace JSC;
+
+JSValue toJSNewlyCreated(JSGlobalObject*, JSDOMGlobalObject* globalObject, Ref<CSSTransformComponent>&& value)
+{
+    switch (value->getType()) {
+    case CSSTransformType::Transform:
+        return createWrapper<CSSTransformComponent>(globalObject, WTFMove(value));
+    case CSSTransformType::MatrixComponent:
+        return createWrapper<CSSMatrixComponent>(globalObject, WTFMove(value));
+    case CSSTransformType::Perspective:
+        return createWrapper<CSSPerspective>(globalObject, WTFMove(value));
+    case CSSTransformType::Rotate:
+        return createWrapper<CSSRotate>(globalObject, WTFMove(value));
+    case CSSTransformType::Scale:
+        return createWrapper<CSSScale>(globalObject, WTFMove(value));
+    case CSSTransformType::Skew:
+        return createWrapper<CSSSkew>(globalObject, WTFMove(value));
+    case CSSTransformType::SkewX:
+        return createWrapper<CSSSkewX>(globalObject, WTFMove(value));
+    case CSSTransformType::SkewY:
+        return createWrapper<CSSSkewY>(globalObject, WTFMove(value));
+    case CSSTransformType::Translate:
+        return createWrapper<CSSTranslate>(globalObject, WTFMove(value));
+    }
+}
+
+JSValue toJS(JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, CSSTransformComponent& object)
+{
+    return wrap(lexicalGlobalObject, globalObject, object);
+}
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCorebindingsjsWebCoreBuiltinNamesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/WebCoreBuiltinNames.h (282701 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/WebCoreBuiltinNames.h   2021-09-17 22:58:36 UTC (rev 282701)
+++ trunk/Source/WebCore/bindings/js/WebCoreBuiltinNames.h      2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -87,11 +87,21 @@
</span><span class="cx">     macro(CSSMathProduct) \
</span><span class="cx">     macro(CSSMathSum) \
</span><span class="cx">     macro(CSSMathValue) \
</span><ins>+    macro(CSSMatrixComponent) \
</ins><span class="cx">     macro(CSSNumericArray) \
</span><span class="cx">     macro(CSSNumericValue) \
</span><span class="cx">     macro(CSSPaintSize) \
</span><ins>+    macro(CSSPerspective) \
+    macro(CSSRotate) \
+    macro(CSSScale) \
+    macro(CSSSkew) \
+    macro(CSSSkewX) \
+    macro(CSSSkewY) \
</ins><span class="cx">     macro(CSSStyleValue) \
</span><ins>+    macro(CSSTransformComponent) \
+    macro(CSSTransformValue) \
</ins><span class="cx">     macro(CSSTransition) \
</span><ins>+    macro(CSSTranslate) \
</ins><span class="cx">     macro(CSSUnitValue) \
</span><span class="cx">     macro(CSSUnparsedValue) \
</span><span class="cx">     macro(CSSVariableReferenceValue) \
</span></span></pre></div>
<a id="trunkSourceWebCorecssDOMMatrixidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/DOMMatrix.idl (282701 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/DOMMatrix.idl   2021-09-17 22:58:36 UTC (rev 282701)
+++ trunk/Source/WebCore/css/DOMMatrix.idl      2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -28,6 +28,7 @@
</span><span class="cx">     ExportMacro=WEBCORE_EXPORT,
</span><span class="cx">     Exposed=(Window,Worker),
</span><span class="cx">     LegacyWindowAlias=WebKitCSSMatrix,
</span><ins>+    JSGenerateToNativeObject,
</ins><span class="cx">     ImplementationLacksVTable
</span><span class="cx"> ] interface DOMMatrix : DOMMatrixReadOnly {
</span><span class="cx">     [CallWith=ScriptExecutionContext] constructor(optional (DOMString or sequence<unrestricted double>) init);
</span></span></pre></div>
<a id="trunkSourceWebCorecssDOMMatrixReadOnlycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/DOMMatrixReadOnly.cpp (282701 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/DOMMatrixReadOnly.cpp   2021-09-17 22:58:36 UTC (rev 282701)
+++ trunk/Source/WebCore/css/DOMMatrixReadOnly.cpp      2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -93,7 +93,7 @@
</span><span class="cx">     ASSERT(!m_is2D || m_matrix.isAffine());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-inline Ref<DOMMatrix> DOMMatrixReadOnly::cloneAsDOMMatrix() const
</del><ins>+Ref<DOMMatrix> DOMMatrixReadOnly::cloneAsDOMMatrix() const
</ins><span class="cx"> {
</span><span class="cx">     return DOMMatrix::create(m_matrix, m_is2D ? Is2D::Yes : Is2D::No);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorecssDOMMatrixReadOnlyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/DOMMatrixReadOnly.h (282701 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/DOMMatrixReadOnly.h     2021-09-17 22:58:36 UTC (rev 282701)
+++ trunk/Source/WebCore/css/DOMMatrixReadOnly.h        2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -118,6 +118,8 @@
</span><span class="cx">     ExceptionOr<String> toString() const;
</span><span class="cx"> 
</span><span class="cx">     const TransformationMatrix& transformationMatrix() const { return m_matrix; }
</span><ins>+    
+    Ref<DOMMatrix> cloneAsDOMMatrix() const;
</ins><span class="cx"> 
</span><span class="cx"> protected:
</span><span class="cx">     DOMMatrixReadOnly() = default;
</span><span class="lines">@@ -131,8 +133,6 @@
</span><span class="cx"> 
</span><span class="cx">     static ExceptionOr<AbstractMatrix> parseStringIntoAbstractMatrix(const String&);
</span><span class="cx"> 
</span><del>-    Ref<DOMMatrix> cloneAsDOMMatrix() const;
-
</del><span class="cx">     template <typename T>
</span><span class="cx">     static ExceptionOr<Ref<T>> fromMatrixHelper(DOMMatrixInit&&);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorecsstypedomtransformCSSMatrixComponentcpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/css/typedom/transform/CSSMatrixComponent.cpp (0 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/typedom/transform/CSSMatrixComponent.cpp                                (rev 0)
+++ trunk/Source/WebCore/css/typedom/transform/CSSMatrixComponent.cpp   2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -0,0 +1,79 @@
</span><ins>+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer.
+ * 2. Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials
+ *    provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+ * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "CSSMatrixComponent.h"
+
+#if ENABLE(CSS_TYPED_OM)
+
+#include "DOMMatrix.h"
+#include "DOMMatrixInit.h"
+#include "ExceptionOr.h"
+#include <wtf/IsoMallocInlines.h>
+
+namespace WebCore {
+
+WTF_MAKE_ISO_ALLOCATED_IMPL(CSSMatrixComponent);
+
+Ref<CSSTransformComponent> CSSMatrixComponent::create(Ref<DOMMatrixReadOnly>&& matrix, CSSMatrixComponentOptions&& options)
+{
+    return adoptRef(*new CSSMatrixComponent(WTFMove(matrix), WTFMove(options)));
+}
+
+CSSMatrixComponent::CSSMatrixComponent(Ref<DOMMatrixReadOnly>&& matrix, CSSMatrixComponentOptions&& options)
+    : m_matrix(matrix->cloneAsDOMMatrix())
+    , m_options(WTFMove(options))
+{
+}
+
+// FIXME: Fix all the following virtual functions
+
+String CSSMatrixComponent::toString() const
+{
+    return emptyString();
+}
+
+ExceptionOr<Ref<DOMMatrix>> CSSMatrixComponent::toMatrix()
+{
+    return DOMMatrix::fromMatrix(DOMMatrixInit { });
+}
+
+DOMMatrix& CSSMatrixComponent::matrix()
+{
+    return m_matrix.get();
+}
+
+void CSSMatrixComponent::setMatrix(Ref<DOMMatrix>&& matrix)
+{
+    m_matrix = WTFMove(matrix);
+}
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCorecsstypedomtransformCSSMatrixComponenth"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/css/typedom/transform/CSSMatrixComponent.h (0 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/typedom/transform/CSSMatrixComponent.h                          (rev 0)
+++ trunk/Source/WebCore/css/typedom/transform/CSSMatrixComponent.h     2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -0,0 +1,63 @@
</span><ins>+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(CSS_TYPED_OM)
+
+#include "CSSMatrixComponentOptions.h"
+#include "CSSTransformComponent.h"
+#include <wtf/IsoMalloc.h>
+
+namespace WebCore {
+
+class DOMMatrixReadOnly;
+template<typename> class ExceptionOr;
+
+class CSSMatrixComponent : public CSSTransformComponent {
+    WTF_MAKE_ISO_ALLOCATED(CSSMatrixComponent);
+public:
+    static Ref<CSSTransformComponent> create(Ref<DOMMatrixReadOnly>&& matrix, CSSMatrixComponentOptions&& options = CSSMatrixComponentOptions { });
+    
+    DOMMatrix& matrix();
+    void setMatrix(Ref<DOMMatrix>&&);
+    
+    String toString() const final;
+    ExceptionOr<Ref<DOMMatrix>> toMatrix() final;
+    
+    CSSTransformType getType() const final { return CSSTransformType::MatrixComponent; }
+private:
+    CSSMatrixComponent(Ref<DOMMatrixReadOnly>&&, CSSMatrixComponentOptions&&);
+    Ref<DOMMatrix> m_matrix;
+    CSSMatrixComponentOptions m_options;
+};
+
+} // namespace WebCore
+
+SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::CSSMatrixComponent)
+    static bool isType(const WebCore::CSSTransformComponent& transform) { return transform.getType() == WebCore::CSSTransformType::MatrixComponent; }
+SPECIALIZE_TYPE_TRAITS_END()
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCorecsstypedomtransformCSSMatrixComponentidl"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/css/typedom/transform/CSSMatrixComponent.idl (0 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/typedom/transform/CSSMatrixComponent.idl                                (rev 0)
+++ trunk/Source/WebCore/css/typedom/transform/CSSMatrixComponent.idl   2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -0,0 +1,34 @@
</span><ins>+/*
+* Copyright (C) 2021 Apple Inc.  All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+* 1. Redistributions of source code must retain the above copyright
+*    notice, this list of conditions and the following disclaimer.
+* 2. Redistributions in binary form must reproduce the above copyright
+*    notice, this list of conditions and the following disclaimer in the
+*    documentation and/or other materials provided with the distribution.
+*
+* THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+* PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+[
+    EnabledAtRuntime=CSSTypedOM,
+    Conditional=CSS_TYPED_OM,
+    Exposed=(Window,Worker,PaintWorklet),
+] interface CSSMatrixComponent : CSSTransformComponent {
+    constructor(DOMMatrixReadOnly matrix, optional CSSMatrixComponentOptions options);
+
+    attribute DOMMatrix matrix;
+};
</ins></span></pre></div>
<a id="trunkSourceWebCorecsstypedomtransformCSSMatrixComponentOptionsh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/css/typedom/transform/CSSMatrixComponentOptions.h (0 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/typedom/transform/CSSMatrixComponentOptions.h                           (rev 0)
+++ trunk/Source/WebCore/css/typedom/transform/CSSMatrixComponentOptions.h      2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -0,0 +1,38 @@
</span><ins>+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(CSS_TYPED_OM)
+
+namespace WebCore {
+
+struct CSSMatrixComponentOptions {
+    bool is2D { false };
+};
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCorecsstypedomtransformCSSMatrixComponentOptionsidl"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/css/typedom/transform/CSSMatrixComponentOptions.idl (0 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/typedom/transform/CSSMatrixComponentOptions.idl                         (rev 0)
+++ trunk/Source/WebCore/css/typedom/transform/CSSMatrixComponentOptions.idl    2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -0,0 +1,30 @@
</span><ins>+/*
+* Copyright (C) 2021 Apple Inc.  All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+* 1. Redistributions of source code must retain the above copyright
+*    notice, this list of conditions and the following disclaimer.
+* 2. Redistributions in binary form must reproduce the above copyright
+*    notice, this list of conditions and the following disclaimer in the
+*    documentation and/or other materials provided with the distribution.
+*
+* THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+* PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+[
+    Conditional=CSS_TYPED_OM,
+] dictionary CSSMatrixComponentOptions {
+    boolean is2D;
+};
</ins></span></pre></div>
<a id="trunkSourceWebCorecsstypedomtransformCSSPerspectivecpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/css/typedom/transform/CSSPerspective.cpp (0 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/typedom/transform/CSSPerspective.cpp                            (rev 0)
+++ trunk/Source/WebCore/css/typedom/transform/CSSPerspective.cpp       2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -0,0 +1,67 @@
</span><ins>+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer.
+ * 2. Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials
+ *    provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+ * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "CSSPerspective.h"
+
+#if ENABLE(CSS_TYPED_OM)
+
+#include "DOMMatrix.h"
+#include "ExceptionOr.h"
+#include <wtf/IsoMallocInlines.h>
+
+namespace WebCore {
+
+WTF_MAKE_ISO_ALLOCATED_IMPL(CSSPerspective);
+
+Ref<CSSPerspective> CSSPerspective::create(Ref<CSSNumericValue>&& length)
+{
+    return adoptRef(*new CSSPerspective(WTFMove(length)));
+}
+
+CSSPerspective::CSSPerspective(Ref<CSSNumericValue>&& length)
+    : m_length(WTFMove(length))
+{
+}
+
+// FIXME: Fix all the following virtual functions
+
+String CSSPerspective::toString() const
+{
+    return emptyString();
+}
+
+ExceptionOr<Ref<DOMMatrix>> CSSPerspective::toMatrix()
+{
+    return DOMMatrix::fromMatrix(DOMMatrixInit { });
+}
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCorecsstypedomtransformCSSPerspectiveh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/css/typedom/transform/CSSPerspective.h (0 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/typedom/transform/CSSPerspective.h                              (rev 0)
+++ trunk/Source/WebCore/css/typedom/transform/CSSPerspective.h 2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -0,0 +1,62 @@
</span><ins>+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(CSS_TYPED_OM)
+
+#include "CSSNumericValue.h"
+#include "CSSTransformComponent.h"
+
+namespace WebCore {
+
+template<typename> class ExceptionOr;
+
+class CSSPerspective : public CSSTransformComponent {
+    WTF_MAKE_ISO_ALLOCATED(CSSPerspective);
+public:
+    static Ref<CSSPerspective> create(Ref<CSSNumericValue>&& length);
+    
+    CSSNumericValue& length() { return m_length.get(); }
+    void setLength(Ref<CSSNumericValue>&& length) { m_length = WTFMove(length); }
+    
+    String toString() const final;
+    ExceptionOr<Ref<DOMMatrix>> toMatrix() final;
+    
+    CSSTransformType getType() const final { return CSSTransformType::Perspective; }
+
+private:
+    CSSPerspective(Ref<CSSNumericValue>&& length);
+    
+    Ref<CSSNumericValue> m_length;
+};
+    
+} // namespace WebCore
+
+SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::CSSPerspective)
+    static bool isType(const WebCore::CSSTransformComponent& transform) { return transform.getType() == WebCore::CSSTransformType::Perspective; }
+SPECIALIZE_TYPE_TRAITS_END()
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCorecsstypedomtransformCSSPerspectiveidl"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/css/typedom/transform/CSSPerspective.idl (0 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/typedom/transform/CSSPerspective.idl                            (rev 0)
+++ trunk/Source/WebCore/css/typedom/transform/CSSPerspective.idl       2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -0,0 +1,34 @@
</span><ins>+/*
+* Copyright (C) 2021 Apple Inc.  All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+* 1. Redistributions of source code must retain the above copyright
+*    notice, this list of conditions and the following disclaimer.
+* 2. Redistributions in binary form must reproduce the above copyright
+*    notice, this list of conditions and the following disclaimer in the
+*    documentation and/or other materials provided with the distribution.
+*
+* THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+* PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+[
+    EnabledAtRuntime=CSSTypedOM,
+    Conditional=CSS_TYPED_OM,
+    Exposed=(Window,Worker,PaintWorklet)
+] interface CSSPerspective : CSSTransformComponent {
+    constructor(CSSNumericValue length);
+    
+    attribute CSSNumericValue length;
+};
</ins></span></pre></div>
<a id="trunkSourceWebCorecsstypedomtransformCSSRotatecpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/css/typedom/transform/CSSRotate.cpp (0 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/typedom/transform/CSSRotate.cpp                         (rev 0)
+++ trunk/Source/WebCore/css/typedom/transform/CSSRotate.cpp    2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -0,0 +1,75 @@
</span><ins>+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer.
+ * 2. Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials
+ *    provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+ * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "CSSRotate.h"
+
+#if ENABLE(CSS_TYPED_OM)
+
+#include "DOMMatrix.h"
+#include "ExceptionOr.h"
+#include <wtf/IsoMallocInlines.h>
+
+namespace WebCore {
+
+WTF_MAKE_ISO_ALLOCATED_IMPL(CSSRotate);
+
+Ref<CSSRotate> CSSRotate::create(CSSNumberish&& x, CSSNumberish&& y, CSSNumberish&& z, Ref<CSSNumericValue>&& angle)
+{
+    return adoptRef(*new CSSRotate(WTFMove(x), WTFMove(y), WTFMove(z), WTFMove(angle)));
+}
+
+Ref<CSSRotate> CSSRotate::create(Ref<CSSNumericValue>&& angle)
+{
+    return adoptRef(*new CSSRotate(0.0, 0.0, 0.0, WTFMove(angle)));
+}
+
+CSSRotate::CSSRotate(CSSNumberish&& x, CSSNumberish&& y, CSSNumberish&& z, Ref<CSSNumericValue>&& angle)
+    : m_x(WTFMove(x))
+    , m_y(WTFMove(y))
+    , m_z(WTFMove(z))
+    , m_angle(WTFMove(angle))
+{
+}
+
+// FIXME: Fix all the following virtual functions
+
+String CSSRotate::toString() const
+{
+    return emptyString();
+}
+
+ExceptionOr<Ref<DOMMatrix>> CSSRotate::toMatrix()
+{
+    return DOMMatrix::fromMatrix(DOMMatrixInit { });
+}
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCorecsstypedomtransformCSSRotateh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/css/typedom/transform/CSSRotate.h (0 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/typedom/transform/CSSRotate.h                           (rev 0)
+++ trunk/Source/WebCore/css/typedom/transform/CSSRotate.h      2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -0,0 +1,73 @@
</span><ins>+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(CSS_TYPED_OM)
+
+#include "CSSNumericValue.h"
+#include "CSSTransformComponent.h"
+
+namespace WebCore {
+
+template<typename> class ExceptionOr;
+
+class CSSRotate : public CSSTransformComponent {
+    WTF_MAKE_ISO_ALLOCATED(CSSRotate);
+public:
+    static Ref<CSSRotate> create(CSSNumberish&&, CSSNumberish&&, CSSNumberish&&, Ref<CSSNumericValue>&&);
+    static Ref<CSSRotate> create(Ref<CSSNumericValue>&&);
+
+    const CSSNumberish& x() { return m_x; }
+    const CSSNumberish& y() { return m_x; }
+    const CSSNumberish& z() { return m_x; }
+    const CSSNumericValue& angle() { return m_angle.get(); }
+    
+    void setX(CSSNumberish&& x) { m_x = WTFMove(x); }
+    void setY(CSSNumberish&& y) { m_y = WTFMove(y); }
+    void setZ(CSSNumberish&& z) { m_z = WTFMove(z); }
+    void setAngle(Ref<CSSNumericValue>&& angle) { m_angle = WTFMove(angle); }
+    
+    String toString() const final;
+    ExceptionOr<Ref<DOMMatrix>> toMatrix() final;
+    
+    CSSTransformType getType() const final { return CSSTransformType::Rotate; }
+    
+private:
+    CSSRotate(CSSNumberish&&, CSSNumberish&&, CSSNumberish&&, Ref<CSSNumericValue>&&);
+    
+    CSSNumberish m_x;
+    CSSNumberish m_y;
+    CSSNumberish m_z;
+    Ref<CSSNumericValue> m_angle;
+};
+    
+} // namespace WebCore
+
+SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::CSSRotate)
+    static bool isType(const WebCore::CSSTransformComponent& transform) { return transform.getType() == WebCore::CSSTransformType::Rotate; }
+SPECIALIZE_TYPE_TRAITS_END()
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCorecsstypedomtransformCSSRotateidl"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/css/typedom/transform/CSSRotate.idl (0 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/typedom/transform/CSSRotate.idl                         (rev 0)
+++ trunk/Source/WebCore/css/typedom/transform/CSSRotate.idl    2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -0,0 +1,39 @@
</span><ins>+/*
+* Copyright (C) 2021 Apple Inc.  All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+* 1. Redistributions of source code must retain the above copyright
+*    notice, this list of conditions and the following disclaimer.
+* 2. Redistributions in binary form must reproduce the above copyright
+*    notice, this list of conditions and the following disclaimer in the
+*    documentation and/or other materials provided with the distribution.
+*
+* THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+* PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+typedef (double or CSSNumericValue) CSSNumberish;
+
+[
+    EnabledAtRuntime=CSSTypedOM,
+    Conditional=CSS_TYPED_OM,
+    Exposed=(Window,Worker,PaintWorklet)
+] interface CSSRotate : CSSTransformComponent {
+    constructor(CSSNumericValue angle);
+    constructor(CSSNumberish x, CSSNumberish y, CSSNumberish z, CSSNumericValue angle);
+    attribute CSSNumberish x;
+    attribute CSSNumberish y;
+    attribute CSSNumberish z;
+    attribute CSSNumericValue angle;
+};
</ins></span></pre></div>
<a id="trunkSourceWebCorecsstypedomtransformCSSScalecpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/css/typedom/transform/CSSScale.cpp (0 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/typedom/transform/CSSScale.cpp                          (rev 0)
+++ trunk/Source/WebCore/css/typedom/transform/CSSScale.cpp     2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -0,0 +1,69 @@
</span><ins>+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer.
+ * 2. Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials
+ *    provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+ * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "CSSScale.h"
+
+#if ENABLE(CSS_TYPED_OM)
+
+#include "DOMMatrix.h"
+#include "ExceptionOr.h"
+#include <wtf/IsoMallocInlines.h>
+
+namespace WebCore {
+
+WTF_MAKE_ISO_ALLOCATED_IMPL(CSSScale);
+
+Ref<CSSScale> CSSScale::create(CSSNumberish&& x, CSSNumberish&& y, std::optional<CSSNumberish>&& z)
+{
+    return adoptRef(*new CSSScale(WTFMove(x), WTFMove(y), WTFMove(z)));
+}
+
+CSSScale::CSSScale(CSSNumberish&& x, CSSNumberish&& y, std::optional<CSSNumberish>&& z)
+    : m_x(WTFMove(x))
+    , m_y(WTFMove(y))
+    , m_z(WTFMove(z))
+{
+}
+
+// FIXME: Fix all the following virtual functions
+
+String CSSScale::toString() const
+{
+    return emptyString();
+}
+
+ExceptionOr<Ref<DOMMatrix>> CSSScale::toMatrix()
+{
+    return DOMMatrix::fromMatrix(DOMMatrixInit { });
+}
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCorecsstypedomtransformCSSScaleh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/css/typedom/transform/CSSScale.h (0 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/typedom/transform/CSSScale.h                            (rev 0)
+++ trunk/Source/WebCore/css/typedom/transform/CSSScale.h       2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -0,0 +1,69 @@
</span><ins>+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(CSS_TYPED_OM)
+
+#include "CSSNumericValue.h"
+#include "CSSTransformComponent.h"
+
+namespace WebCore {
+
+template<typename> class ExceptionOr;
+
+class CSSScale : public CSSTransformComponent {
+    WTF_MAKE_ISO_ALLOCATED(CSSScale);
+public:
+    static Ref<CSSScale> create(CSSNumberish&& x, CSSNumberish&& y, std::optional<CSSNumberish>&& z);
+
+    String toString() const final;
+    ExceptionOr<Ref<DOMMatrix>> toMatrix() final;
+    
+    CSSNumberish x() { return m_x; }
+    CSSNumberish y() { return m_y; }
+    CSSNumberish z() { return m_z ? *m_z : 0.0; }
+
+    void setX(CSSNumberish&& x) { m_x = WTFMove(x); }
+    void setY(CSSNumberish&& y) { m_y = WTFMove(y); }
+    void setZ(CSSNumberish&& z) { m_z = WTFMove(z); }
+
+    CSSTransformType getType() const final { return CSSTransformType::Scale; }
+
+private:
+    CSSScale(CSSNumberish&& x, CSSNumberish&& y, std::optional<CSSNumberish>&& z);
+    
+    CSSNumberish m_x;
+    CSSNumberish m_y;
+    std::optional<CSSNumberish> m_z;
+};
+    
+} // namespace WebCore
+
+SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::CSSScale)
+    static bool isType(const WebCore::CSSTransformComponent& transform) { return transform.getType() == WebCore::CSSTransformType::Scale; }
+SPECIALIZE_TYPE_TRAITS_END()
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCorecsstypedomtransformCSSScaleidl"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/css/typedom/transform/CSSScale.idl (0 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/typedom/transform/CSSScale.idl                          (rev 0)
+++ trunk/Source/WebCore/css/typedom/transform/CSSScale.idl     2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -0,0 +1,37 @@
</span><ins>+/*
+* Copyright (C) 2021 Apple Inc.  All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+* 1. Redistributions of source code must retain the above copyright
+*    notice, this list of conditions and the following disclaimer.
+* 2. Redistributions in binary form must reproduce the above copyright
+*    notice, this list of conditions and the following disclaimer in the
+*    documentation and/or other materials provided with the distribution.
+*
+* THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+* PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+typedef (double or CSSNumericValue) CSSNumberish;
+
+[
+    EnabledAtRuntime=CSSTypedOM,
+    Conditional=CSS_TYPED_OM,
+    Exposed=(Window,Worker,PaintWorklet)
+] interface CSSScale : CSSTransformComponent {
+    constructor(CSSNumberish x, CSSNumberish y, optional CSSNumberish z);
+    attribute CSSNumberish x;
+    attribute CSSNumberish y;
+    attribute CSSNumberish z;
+};
</ins></span></pre></div>
<a id="trunkSourceWebCorecsstypedomtransformCSSSkewcpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/css/typedom/transform/CSSSkew.cpp (0 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/typedom/transform/CSSSkew.cpp                           (rev 0)
+++ trunk/Source/WebCore/css/typedom/transform/CSSSkew.cpp      2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -0,0 +1,68 @@
</span><ins>+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer.
+ * 2. Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials
+ *    provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+ * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "CSSSkew.h"
+
+#if ENABLE(CSS_TYPED_OM)
+
+#include "DOMMatrix.h"
+#include "ExceptionOr.h"
+#include <wtf/IsoMallocInlines.h>
+
+namespace WebCore {
+
+WTF_MAKE_ISO_ALLOCATED_IMPL(CSSSkew);
+
+Ref<CSSSkew> CSSSkew::create(Ref<CSSNumericValue>&& ax, Ref<CSSNumericValue>&& ay)
+{
+    return adoptRef(*new CSSSkew(WTFMove(ax), WTFMove(ay)));
+}
+
+CSSSkew::CSSSkew(Ref<CSSNumericValue>&& ax, Ref<CSSNumericValue>&& ay)
+    : m_ax(WTFMove(ax))
+    , m_ay(WTFMove(ay))
+{
+}
+
+// FIXME: Fix all the following virtual functions
+
+String CSSSkew::toString() const
+{
+    return emptyString();
+}
+
+ExceptionOr<Ref<DOMMatrix>> CSSSkew::toMatrix()
+{
+    return DOMMatrix::fromMatrix(DOMMatrixInit { });
+}
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCorecsstypedomtransformCSSSkewh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/css/typedom/transform/CSSSkew.h (0 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/typedom/transform/CSSSkew.h                             (rev 0)
+++ trunk/Source/WebCore/css/typedom/transform/CSSSkew.h        2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -0,0 +1,66 @@
</span><ins>+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(CSS_TYPED_OM)
+
+#include "CSSNumericValue.h"
+#include "CSSTransformComponent.h"
+
+namespace WebCore {
+
+template<typename> class ExceptionOr;
+
+class CSSSkew : public CSSTransformComponent {
+    WTF_MAKE_ISO_ALLOCATED(CSSSkew);
+public:
+    static Ref<CSSSkew> create(Ref<CSSNumericValue>&&, Ref<CSSNumericValue>&&);
+    
+    CSSNumericValue& ax() { return m_ax.get(); }
+    CSSNumericValue& ay() { return m_ay.get(); }
+    
+    void setAx(Ref<CSSNumericValue>&& ax) { m_ax = WTFMove(ax); }
+    void setAy(Ref<CSSNumericValue>&& ay) { m_ay = WTFMove(ay); }
+    
+    String toString() const final;
+    ExceptionOr<Ref<DOMMatrix>> toMatrix() final;
+    
+    CSSTransformType getType() const final { return CSSTransformType::Skew; }
+
+private:
+    CSSSkew(Ref<CSSNumericValue>&& ax, Ref<CSSNumericValue>&& ay);
+    
+    Ref<CSSNumericValue> m_ax;
+    Ref<CSSNumericValue> m_ay;
+};
+    
+} // namespace WebCore
+
+SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::CSSSkew)
+    static bool isType(const WebCore::CSSTransformComponent& transform) { return transform.getType() == WebCore::CSSTransformType::Skew; }
+SPECIALIZE_TYPE_TRAITS_END()
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCorecsstypedomtransformCSSSkewidl"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/css/typedom/transform/CSSSkew.idl (0 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/typedom/transform/CSSSkew.idl                           (rev 0)
+++ trunk/Source/WebCore/css/typedom/transform/CSSSkew.idl      2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+/*
+* Copyright (C) 2021 Apple Inc.  All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+* 1. Redistributions of source code must retain the above copyright
+*    notice, this list of conditions and the following disclaimer.
+* 2. Redistributions in binary form must reproduce the above copyright
+*    notice, this list of conditions and the following disclaimer in the
+*    documentation and/or other materials provided with the distribution.
+*
+* THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+* PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+[
+    EnabledAtRuntime=CSSTypedOM,
+    Conditional=CSS_TYPED_OM,
+    Exposed=(Window,Worker,PaintWorklet)
+] interface CSSSkew : CSSTransformComponent {
+    constructor(CSSNumericValue ax, CSSNumericValue ay);
+    
+    attribute CSSNumericValue ax;
+    attribute CSSNumericValue ay;
+};
</ins></span></pre></div>
<a id="trunkSourceWebCorecsstypedomtransformCSSSkewXcpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/css/typedom/transform/CSSSkewX.cpp (0 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/typedom/transform/CSSSkewX.cpp                          (rev 0)
+++ trunk/Source/WebCore/css/typedom/transform/CSSSkewX.cpp     2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -0,0 +1,67 @@
</span><ins>+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer.
+ * 2. Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials
+ *    provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+ * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "CSSSkewX.h"
+
+#if ENABLE(CSS_TYPED_OM)
+
+#include "DOMMatrix.h"
+#include "ExceptionOr.h"
+#include <wtf/IsoMallocInlines.h>
+
+namespace WebCore {
+
+WTF_MAKE_ISO_ALLOCATED_IMPL(CSSSkewX);
+
+Ref<CSSSkewX> CSSSkewX::create(Ref<CSSNumericValue>&& ax)
+{
+    return adoptRef(*new CSSSkewX(WTFMove(ax)));
+}
+
+CSSSkewX::CSSSkewX(Ref<CSSNumericValue>&& ax)
+    : m_ax(WTFMove(ax))
+{
+}
+
+// FIXME: Fix all the following virtual functions
+
+String CSSSkewX::toString() const
+{
+    return emptyString();
+}
+
+ExceptionOr<Ref<DOMMatrix>> CSSSkewX::toMatrix()
+{
+    return DOMMatrix::fromMatrix(DOMMatrixInit { });
+}
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCorecsstypedomtransformCSSSkewXh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/css/typedom/transform/CSSSkewX.h (0 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/typedom/transform/CSSSkewX.h                            (rev 0)
+++ trunk/Source/WebCore/css/typedom/transform/CSSSkewX.h       2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -0,0 +1,62 @@
</span><ins>+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(CSS_TYPED_OM)
+
+#include "CSSNumericValue.h"
+#include "CSSTransformComponent.h"
+
+namespace WebCore {
+
+template<typename> class ExceptionOr;
+
+class CSSSkewX : public CSSTransformComponent {
+    WTF_MAKE_ISO_ALLOCATED(CSSSkewX);
+public:
+    static Ref<CSSSkewX> create(Ref<CSSNumericValue>&& ax);
+    
+    CSSNumericValue& ax() { return m_ax.get(); }
+    void setAx(Ref<CSSNumericValue>&& ax) { m_ax = WTFMove(ax); }
+    
+    String toString() const final;
+    ExceptionOr<Ref<DOMMatrix>> toMatrix() final;
+    
+    CSSTransformType getType() const final { return CSSTransformType::SkewX; }
+
+private:
+    CSSSkewX(Ref<CSSNumericValue>&& ax);
+    
+    Ref<CSSNumericValue> m_ax;
+};
+    
+} // namespace WebCore
+
+SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::CSSSkewX)
+    static bool isType(const WebCore::CSSTransformComponent& transform) { return transform.getType() == WebCore::CSSTransformType::SkewX; }
+SPECIALIZE_TYPE_TRAITS_END()
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCorecsstypedomtransformCSSSkewXidl"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/css/typedom/transform/CSSSkewX.idl (0 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/typedom/transform/CSSSkewX.idl                          (rev 0)
+++ trunk/Source/WebCore/css/typedom/transform/CSSSkewX.idl     2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -0,0 +1,34 @@
</span><ins>+/*
+* Copyright (C) 2021 Apple Inc.  All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+* 1. Redistributions of source code must retain the above copyright
+*    notice, this list of conditions and the following disclaimer.
+* 2. Redistributions in binary form must reproduce the above copyright
+*    notice, this list of conditions and the following disclaimer in the
+*    documentation and/or other materials provided with the distribution.
+*
+* THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+* PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+[
+    EnabledAtRuntime=CSSTypedOM,
+    Conditional=CSS_TYPED_OM,
+    Exposed=(Window,Worker,PaintWorklet)
+] interface CSSSkewX : CSSTransformComponent {
+    constructor(CSSNumericValue ax);
+    attribute CSSNumericValue ax;
+};
+
</ins></span></pre></div>
<a id="trunkSourceWebCorecsstypedomtransformCSSSkewYcpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/css/typedom/transform/CSSSkewY.cpp (0 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/typedom/transform/CSSSkewY.cpp                          (rev 0)
+++ trunk/Source/WebCore/css/typedom/transform/CSSSkewY.cpp     2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -0,0 +1,67 @@
</span><ins>+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer.
+ * 2. Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials
+ *    provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+ * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "CSSSkewY.h"
+
+#if ENABLE(CSS_TYPED_OM)
+
+#include "DOMMatrix.h"
+#include "ExceptionOr.h"
+#include <wtf/IsoMallocInlines.h>
+
+namespace WebCore {
+
+WTF_MAKE_ISO_ALLOCATED_IMPL(CSSSkewY);
+
+Ref<CSSSkewY> CSSSkewY::create(Ref<CSSNumericValue>&& ay)
+{
+    return adoptRef(*new CSSSkewY(WTFMove(ay)));
+}
+
+CSSSkewY::CSSSkewY(Ref<CSSNumericValue>&& ay)
+    : m_ay(WTFMove(ay))
+{
+}
+
+// FIXME: Fix all the following virtual functions
+
+String CSSSkewY::toString() const
+{
+    return emptyString();
+}
+
+ExceptionOr<Ref<DOMMatrix>> CSSSkewY::toMatrix()
+{
+    return DOMMatrix::fromMatrix(DOMMatrixInit { });
+}
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCorecsstypedomtransformCSSSkewYh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/css/typedom/transform/CSSSkewY.h (0 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/typedom/transform/CSSSkewY.h                            (rev 0)
+++ trunk/Source/WebCore/css/typedom/transform/CSSSkewY.h       2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -0,0 +1,62 @@
</span><ins>+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(CSS_TYPED_OM)
+
+#include "CSSNumericValue.h"
+#include "CSSTransformComponent.h"
+
+namespace WebCore {
+
+template<typename> class ExceptionOr;
+
+class CSSSkewY : public CSSTransformComponent {
+    WTF_MAKE_ISO_ALLOCATED(CSSSkewY);
+public:
+    static Ref<CSSSkewY> create(Ref<CSSNumericValue>&&);
+    
+    CSSNumericValue& ay() { return m_ay.get(); }
+    void setAy(Ref<CSSNumericValue>&& ay) { m_ay = WTFMove(ay); }
+    
+    String toString() const final;
+    ExceptionOr<Ref<DOMMatrix>> toMatrix() final;
+    
+    CSSTransformType getType() const final { return CSSTransformType::SkewY; }
+
+private:
+    CSSSkewY(Ref<CSSNumericValue>&& ay);
+    
+    Ref<CSSNumericValue> m_ay;
+};
+    
+} // namespace WebCore
+
+SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::CSSSkewY)
+    static bool isType(const WebCore::CSSTransformComponent& transform) { return transform.getType() == WebCore::CSSTransformType::SkewY; }
+SPECIALIZE_TYPE_TRAITS_END()
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCorecsstypedomtransformCSSSkewYidl"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/css/typedom/transform/CSSSkewY.idl (0 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/typedom/transform/CSSSkewY.idl                          (rev 0)
+++ trunk/Source/WebCore/css/typedom/transform/CSSSkewY.idl     2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -0,0 +1,33 @@
</span><ins>+/*
+* Copyright (C) 2021 Apple Inc.  All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+* 1. Redistributions of source code must retain the above copyright
+*    notice, this list of conditions and the following disclaimer.
+* 2. Redistributions in binary form must reproduce the above copyright
+*    notice, this list of conditions and the following disclaimer in the
+*    documentation and/or other materials provided with the distribution.
+*
+* THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+* PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+[
+    EnabledAtRuntime=CSSTypedOM,
+    Conditional=CSS_TYPED_OM,
+    Exposed=(Window,Worker,PaintWorklet)
+] interface CSSSkewY : CSSTransformComponent {
+    constructor(CSSNumericValue ay);
+    attribute CSSNumericValue ay;
+};
</ins></span></pre></div>
<a id="trunkSourceWebCorecsstypedomtransformCSSTransformComponentcpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/css/typedom/transform/CSSTransformComponent.cpp (0 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/typedom/transform/CSSTransformComponent.cpp                             (rev 0)
+++ trunk/Source/WebCore/css/typedom/transform/CSSTransformComponent.cpp        2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -0,0 +1,57 @@
</span><ins>+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer.
+ * 2. Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials
+ *    provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+ * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "CSSTransformComponent.h"
+
+#if ENABLE(CSS_TYPED_OM)
+
+#include "DOMMatrix.h"
+#include "ExceptionOr.h"
+#include <wtf/IsoMallocInlines.h>
+
+namespace WebCore {
+
+WTF_MAKE_ISO_ALLOCATED_IMPL(CSSTransformComponent);
+
+// FIXME: Fix all the following virtual functions
+
+String CSSTransformComponent::toString() const
+{
+    return emptyString();
+}
+
+ExceptionOr<Ref<DOMMatrix>> CSSTransformComponent::toMatrix()
+{
+    return DOMMatrix::fromMatrix(DOMMatrixInit { });
+}
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCorecsstypedomtransformCSSTransformComponenth"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/css/typedom/transform/CSSTransformComponent.h (0 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/typedom/transform/CSSTransformComponent.h                               (rev 0)
+++ trunk/Source/WebCore/css/typedom/transform/CSSTransformComponent.h  2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -0,0 +1,67 @@
</span><ins>+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(CSS_TYPED_OM)
+
+#include "DOMMatrix.h"
+#include <wtf/IsoMalloc.h>
+#include <wtf/RefCounted.h>
+
+namespace WebCore {
+
+enum class CSSTransformType : uint8_t {
+    Transform,
+    MatrixComponent,
+    Perspective,
+    Rotate,
+    Scale,
+    Skew,
+    SkewX,
+    SkewY,
+    Translate
+};
+
+class DOMMatrix;
+template<typename> class ExceptionOr;
+
+class CSSTransformComponent : public RefCounted<CSSTransformComponent> {
+    WTF_MAKE_ISO_ALLOCATED(CSSTransformComponent);
+public:
+    virtual String toString() const;
+    bool is2D() const { return m_is2D; }
+    void setIs2D(bool is2D) { m_is2D = is2D; }
+    virtual ExceptionOr<Ref<DOMMatrix>> toMatrix();
+    virtual ~CSSTransformComponent() = default;
+    virtual CSSTransformType getType() const { return CSSTransformType::Transform; }
+
+private:
+    bool m_is2D { false };
+};
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCorecsstypedomtransformCSSTransformComponentidl"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/css/typedom/transform/CSSTransformComponent.idl (0 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/typedom/transform/CSSTransformComponent.idl                             (rev 0)
+++ trunk/Source/WebCore/css/typedom/transform/CSSTransformComponent.idl        2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+/*
+* Copyright (C) 2021 Apple Inc.  All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+* 1. Redistributions of source code must retain the above copyright
+*    notice, this list of conditions and the following disclaimer.
+* 2. Redistributions in binary form must reproduce the above copyright
+*    notice, this list of conditions and the following disclaimer in the
+*    documentation and/or other materials provided with the distribution.
+*
+* THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+* PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+[
+    EnabledAtRuntime=CSSTypedOM,
+    Conditional=CSS_TYPED_OM,
+    Exposed=(Window,Worker,PaintWorklet),
+    CustomToJSObject,
+] interface CSSTransformComponent {
+    stringifier;
+    attribute boolean is2D;
+    DOMMatrix toMatrix();
+};
</ins></span></pre></div>
<a id="trunkSourceWebCorecsstypedomtransformCSSTransformValuecpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/css/typedom/transform/CSSTransformValue.cpp (0 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/typedom/transform/CSSTransformValue.cpp                         (rev 0)
+++ trunk/Source/WebCore/css/typedom/transform/CSSTransformValue.cpp    2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -0,0 +1,92 @@
</span><ins>+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer.
+ * 2. Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials
+ *    provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+ * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "CSSTransformValue.h"
+
+#if ENABLE(CSS_TYPED_OM)
+
+#include "CSSTransformComponent.h"
+#include "DOMMatrix.h"
+#include "ExceptionOr.h"
+#include <wtf/IsoMallocInlines.h>
+#include <wtf/text/WTFString.h>
+
+namespace WebCore {
+
+WTF_MAKE_ISO_ALLOCATED_IMPL(CSSTransformValue);
+
+Ref<CSSTransformValue> CSSTransformValue::create(Vector<RefPtr<CSSTransformComponent>>&& transforms)
+{
+    return adoptRef(*new CSSTransformValue(WTFMove(transforms)));
+}
+
+ExceptionOr<RefPtr<CSSTransformComponent>> CSSTransformValue::item(size_t index)
+{
+    if (index >= m_components.size())
+        return Exception { RangeError, makeString("Index ", index, " exceeds the range of CSSTransformValue.") };
+
+    return RefPtr<CSSTransformComponent> { m_components[index] };
+}
+
+ExceptionOr<RefPtr<CSSTransformComponent>> CSSTransformValue::setItem(size_t index, Ref<CSSTransformComponent>&& value)
+{
+    if (index >= m_components.size())
+        return Exception { RangeError, makeString("Index ", index, " exceeds the range of CSSTransformValue.") };
+    
+    m_components[index] = WTFMove(value);
+
+    return RefPtr<CSSTransformComponent> { m_components[index] };
+}
+
+bool CSSTransformValue::is2D() const
+{
+    return m_is2D;
+}
+
+void CSSTransformValue::setIs2D(bool is2D)
+{
+    m_is2D = is2D;
+}
+
+ExceptionOr<Ref<DOMMatrix>> CSSTransformValue::toMatrix()
+{
+    // FIXME: add correct behavior here.
+    return DOMMatrix::fromMatrix(DOMMatrixInit { });
+}
+
+CSSTransformValue::CSSTransformValue(Vector<RefPtr<CSSTransformComponent>>&& transforms)
+    : m_components(WTFMove(transforms))
+{
+}
+
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCorecsstypedomtransformCSSTransformValueh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/css/typedom/transform/CSSTransformValue.h (0 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/typedom/transform/CSSTransformValue.h                           (rev 0)
+++ trunk/Source/WebCore/css/typedom/transform/CSSTransformValue.h      2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -0,0 +1,67 @@
</span><ins>+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(CSS_TYPED_OM)
+
+#include <wtf/RefCounted.h>
+#include <wtf/text/WTFString.h>
+
+namespace WebCore {
+
+class CSSTransformComponent;
+class DOMMatrix;
+template<typename> class ExceptionOr;
+
+class CSSTransformValue : public CSSStyleValue {
+    WTF_MAKE_ISO_ALLOCATED(CSSTransformValue);
+public:
+    static Ref<CSSTransformValue> create(Vector<RefPtr<CSSTransformComponent>>&& transforms);
+
+    size_t length() const { return m_components.size(); }
+    ExceptionOr<RefPtr<CSSTransformComponent>> item(size_t);
+    ExceptionOr<RefPtr<CSSTransformComponent>> setItem(size_t, Ref<CSSTransformComponent>&&);
+    
+    bool is2D() const;
+    void setIs2D(bool);
+    
+    ExceptionOr<Ref<DOMMatrix>> toMatrix();
+    
+    CSSStyleValueType getType() const override { return CSSStyleValueType::CSSTransformValue; }
+private:
+    CSSTransformValue(Vector<RefPtr<CSSTransformComponent>>&&);
+
+    bool m_is2D { false };
+    Vector<RefPtr<CSSTransformComponent>> m_components;
+};
+
+} // namespace WebCore
+
+SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::CSSTransformValue)
+    static bool isType(const WebCore::CSSStyleValue& styleValue) { return styleValue.getType() == WebCore::CSSStyleValueType::CSSTransformValue; }
+SPECIALIZE_TYPE_TRAITS_END()
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCorecsstypedomtransformCSSTransformValueidl"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/css/typedom/transform/CSSTransformValue.idl (0 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/typedom/transform/CSSTransformValue.idl                         (rev 0)
+++ trunk/Source/WebCore/css/typedom/transform/CSSTransformValue.idl    2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -0,0 +1,40 @@
</span><ins>+/*
+* Copyright (C) 2021 Apple Inc.  All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+* 1. Redistributions of source code must retain the above copyright
+*    notice, this list of conditions and the following disclaimer.
+* 2. Redistributions in binary form must reproduce the above copyright
+*    notice, this list of conditions and the following disclaimer in the
+*    documentation and/or other materials provided with the distribution.
+*
+* THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+* PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+[
+    EnabledAtRuntime=CSSTypedOM,
+    Conditional=CSS_TYPED_OM,
+    Exposed=(Window,Worker,PaintWorklet),
+] interface CSSTransformValue : CSSStyleValue {
+    constructor(sequence<CSSTransformComponent> transforms);
+    
+    iterable<CSSTransformComponent>;
+    readonly attribute unsigned long length;
+    getter CSSTransformComponent (unsigned long index);
+    setter CSSTransformComponent (unsigned long index, CSSTransformComponent val);
+
+    readonly attribute boolean is2D;
+    DOMMatrix toMatrix();
+};
</ins></span></pre></div>
<a id="trunkSourceWebCorecsstypedomtransformCSSTranslatecpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/css/typedom/transform/CSSTranslate.cpp (0 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/typedom/transform/CSSTranslate.cpp                              (rev 0)
+++ trunk/Source/WebCore/css/typedom/transform/CSSTranslate.cpp 2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -0,0 +1,71 @@
</span><ins>+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer.
+ * 2. Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials
+ *    provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+ * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "CSSTranslate.h"
+
+#if ENABLE(CSS_TYPED_OM)
+
+#include "CSSNumericValue.h"
+#include "DOMMatrix.h"
+#include "ExceptionOr.h"
+#include <wtf/IsoMallocInlines.h>
+
+namespace WebCore {
+
+WTF_MAKE_ISO_ALLOCATED_IMPL(CSSTranslate);
+
+Ref<CSSTranslate> CSSTranslate::create(Ref<CSSNumericValue>&& x, Ref<CSSNumericValue>&& y, RefPtr<CSSNumericValue>&& z)
+{
+    return adoptRef(*new CSSTranslate(WTFMove(x), WTFMove(y), WTFMove(z)));
+}
+
+CSSTranslate::CSSTranslate(Ref<CSSNumericValue>&& x, Ref<CSSNumericValue>&& y, RefPtr<CSSNumericValue>&& z)
+    : m_x(WTFMove(x))
+    , m_y(WTFMove(y))
+    , m_z(WTFMove(z))
+{
+}
+
+
+// FIXME: Fix all the following virtual functions
+
+String CSSTranslate::toString() const
+{
+    return emptyString();
+}
+
+ExceptionOr<Ref<DOMMatrix>> CSSTranslate::toMatrix()
+{
+    return DOMMatrix::fromMatrix(DOMMatrixInit { });
+}
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCorecsstypedomtransformCSSTranslateh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/css/typedom/transform/CSSTranslate.h (0 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/typedom/transform/CSSTranslate.h                                (rev 0)
+++ trunk/Source/WebCore/css/typedom/transform/CSSTranslate.h   2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -0,0 +1,67 @@
</span><ins>+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(CSS_TYPED_OM)
+
+#include "CSSNumericValue.h"
+#include "CSSTransformComponent.h"
+
+namespace WebCore {
+
+template<typename> class ExceptionOr;
+
+class CSSTranslate : public CSSTransformComponent {
+    WTF_MAKE_ISO_ALLOCATED(CSSTranslate);
+public:
+    static Ref<CSSTranslate> create(Ref<CSSNumericValue>&&, Ref<CSSNumericValue>&&, RefPtr<CSSNumericValue>&&);
+    
+    Ref<CSSNumericValue> x() { return m_x; }
+    Ref<CSSNumericValue> y() { return m_y; }
+    RefPtr<CSSNumericValue> z() { return m_z; }
+
+    void setX(Ref<CSSNumericValue>&& x) { m_x = WTFMove(x); }
+    void setY(Ref<CSSNumericValue>&& y) { m_y = WTFMove(y); }
+    void setZ(Ref<CSSNumericValue>&& z) { m_z = WTFMove(z); }
+    
+    String toString() const final;
+    ExceptionOr<Ref<DOMMatrix>> toMatrix() final;
+
+private:
+    CSSTranslate(Ref<CSSNumericValue>&&, Ref<CSSNumericValue>&&, RefPtr<CSSNumericValue>&&);
+    
+    Ref<CSSNumericValue> m_x;
+    Ref<CSSNumericValue> m_y;
+    RefPtr<CSSNumericValue> m_z;
+};
+    
+} // namespace WebCore
+
+SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::CSSTranslate)
+    static bool isType(const WebCore::CSSTransformComponent& transform) { return transform.getType() == WebCore::CSSTransformType::Translate; }
+SPECIALIZE_TYPE_TRAITS_END()
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCorecsstypedomtransformCSSTranslateidl"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/css/typedom/transform/CSSTranslate.idl (0 => 282702)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/typedom/transform/CSSTranslate.idl                              (rev 0)
+++ trunk/Source/WebCore/css/typedom/transform/CSSTranslate.idl 2021-09-17 23:02:17 UTC (rev 282702)
</span><span class="lines">@@ -0,0 +1,36 @@
</span><ins>+/*
+* Copyright (C) 2021 Apple Inc.  All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+* 1. Redistributions of source code must retain the above copyright
+*    notice, this list of conditions and the following disclaimer.
+* 2. Redistributions in binary form must reproduce the above copyright
+*    notice, this list of conditions and the following disclaimer in the
+*    documentation and/or other materials provided with the distribution.
+*
+* THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+* PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+[
+    EnabledAtRuntime=CSSTypedOM,
+    Conditional=CSS_TYPED_OM,
+    Exposed=(Window,Worker,PaintWorklet)
+] interface CSSTranslate : CSSTransformComponent {
+    constructor(CSSNumericValue x, CSSNumericValue y, optional CSSNumericValue z);
+    
+    attribute CSSNumericValue x;
+    attribute CSSNumericValue y;
+    attribute CSSNumericValue z;
+};
</ins></span></pre>
</div>
</div>

</body>
</html>