Changeset 216881 in webkit
- Timestamp:
- May 15, 2017 3:07:54 PM (7 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r216876 r216881 1 2017-05-15 Chris Dumez <cdumez@apple.com> 2 3 Align WebKitCSSMatrix stringifier with spec for DOMMatrix 4 https://bugs.webkit.org/show_bug.cgi?id=172114 5 6 Reviewed by Simon Fraser. 7 8 * fast/css/matrix-stringifier-expected.txt: Added. 9 * fast/css/matrix-stringifier.html: Added. 10 Add layout test coverage. 11 12 * fast/dom/Window/custom-constructors-expected.txt: 13 * fast/dom/Window/custom-constructors.html: 14 Rebaseline existing test to reflect behavior change. 15 1 16 2017-05-15 Mark Lam <mark.lam@apple.com> 2 17 -
trunk/LayoutTests/fast/dom/Window/custom-constructors-expected.txt
r203333 r216881 7 7 PASS Option.prototype.toString.call(new Option) is '[object HTMLOptionElement]' 8 8 PASS WebKitPoint.prototype.toString.call(new WebKitPoint) is '[object WebKitPoint]' 9 PASS WebKitCSSMatrix.prototype.toString.call(new WebKitCSSMatrix) is 'matrix(1 .000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000)'10 PASS WebKitCSSMatrix.prototype.toString.call(new WebKitCSSMatrix()) is 'matrix(1 .000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000)'11 PASS WebKitCSSMatrix.prototype.toString.call(new WebKitCSSMatrix(undefined)) is 'matrix(1 .000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000)'9 PASS WebKitCSSMatrix.prototype.toString.call(new WebKitCSSMatrix) is 'matrix(1, 0, 0, 1, 0, 0)' 10 PASS WebKitCSSMatrix.prototype.toString.call(new WebKitCSSMatrix()) is 'matrix(1, 0, 0, 1, 0, 0)' 11 PASS WebKitCSSMatrix.prototype.toString.call(new WebKitCSSMatrix(undefined)) is 'matrix(1, 0, 0, 1, 0, 0)' 12 12 PASS new WebKitCSSMatrix(null) threw exception SyntaxError (DOM Exception 12): The string did not match the expected pattern.. 13 13 PASS XMLHttpRequest.prototype.toString.call(new XMLHttpRequest) is '[object XMLHttpRequest]' -
trunk/LayoutTests/fast/dom/Window/custom-constructors.html
r189507 r216881 16 16 shouldBe("Option.prototype.toString.call(new Option)", "'[object HTMLOptionElement]'"); 17 17 shouldBe("WebKitPoint.prototype.toString.call(new WebKitPoint)", "'[object WebKitPoint]'"); 18 shouldBe("WebKitCSSMatrix.prototype.toString.call(new WebKitCSSMatrix)", "'matrix(1 .000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000)'");19 shouldBe("WebKitCSSMatrix.prototype.toString.call(new WebKitCSSMatrix())", "'matrix(1 .000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000)'");20 shouldBe("WebKitCSSMatrix.prototype.toString.call(new WebKitCSSMatrix(undefined))", "'matrix(1 .000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000)'");18 shouldBe("WebKitCSSMatrix.prototype.toString.call(new WebKitCSSMatrix)", "'matrix(1, 0, 0, 1, 0, 0)'"); 19 shouldBe("WebKitCSSMatrix.prototype.toString.call(new WebKitCSSMatrix())", "'matrix(1, 0, 0, 1, 0, 0)'"); 20 shouldBe("WebKitCSSMatrix.prototype.toString.call(new WebKitCSSMatrix(undefined))", "'matrix(1, 0, 0, 1, 0, 0)'"); 21 21 shouldThrow("new WebKitCSSMatrix(null)"); 22 22 shouldBe("XMLHttpRequest.prototype.toString.call(new XMLHttpRequest)", "'[object XMLHttpRequest]'"); -
trunk/Source/WebCore/ChangeLog
r216876 r216881 1 2017-05-15 Chris Dumez <cdumez@apple.com> 2 3 Align WebKitCSSMatrix stringifier with spec for DOMMatrix 4 https://bugs.webkit.org/show_bug.cgi?id=172114 5 6 Reviewed by Simon Fraser. 7 8 Align WebKitCSSMatrix stringifier with spec for DOMMatrix after: 9 - https://github.com/w3c/fxtf-drafts/pull/148 10 11 The following changes were made: 12 - Use EcmaScript's ToString() to convert floating point values to string 13 - Throw an invalid state error if the matrix contains non-finite values 14 - Made WebKitCSSMatrix.toString enumerable as per [1]. 15 16 [1] https://heycam.github.io/webidl/#es-stringifier 17 18 Test: fast/css/matrix-stringifier.html 19 20 * css/WebKitCSSMatrix.cpp: 21 (WebCore::WebKitCSSMatrix::toString): 22 * css/WebKitCSSMatrix.h: 23 * css/WebKitCSSMatrix.idl: 24 * platform/graphics/transforms/TransformationMatrix.cpp: 25 (WebCore::TransformationMatrix::containsOnlyFiniteValues): 26 * platform/graphics/transforms/TransformationMatrix.h: 27 1 28 2017-05-15 Mark Lam <mark.lam@apple.com> 2 29 -
trunk/Source/WebCore/css/WebKitCSSMatrix.cpp
r209826 r216881 36 36 #include "TransformFunctions.h" 37 37 #include <wtf/MathExtras.h> 38 #include <wtf/text/StringBuilder.h> 38 39 39 40 namespace WebCore { … … 198 199 } 199 200 200 String WebKitCSSMatrix::toString() const 201 { 202 // FIXME - Need to ensure valid CSS floating point values (https://bugs.webkit.org/show_bug.cgi?id=20674) 203 if (m_matrix.isAffine()) 204 return String::format("matrix(%f, %f, %f, %f, %f, %f)", m_matrix.a(), m_matrix.b(), m_matrix.c(), m_matrix.d(), m_matrix.e(), m_matrix.f()); 205 return String::format("matrix3d(%f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f)", 206 m_matrix.m11(), m_matrix.m12(), m_matrix.m13(), m_matrix.m14(), 207 m_matrix.m21(), m_matrix.m22(), m_matrix.m23(), m_matrix.m24(), 208 m_matrix.m31(), m_matrix.m32(), m_matrix.m33(), m_matrix.m34(), 209 m_matrix.m41(), m_matrix.m42(), m_matrix.m43(), m_matrix.m44()); 201 ExceptionOr<String> WebKitCSSMatrix::toString() const 202 { 203 if (!m_matrix.containsOnlyFiniteValues()) 204 return Exception { INVALID_STATE_ERR, ASCIILiteral("Matrix contains non-finite values") }; 205 206 StringBuilder builder; 207 if (m_matrix.isAffine()) { 208 builder.appendLiteral("matrix("); 209 builder.append(String::numberToStringECMAScript(m_matrix.a())); 210 builder.appendLiteral(", "); 211 builder.append(String::numberToStringECMAScript(m_matrix.b())); 212 builder.appendLiteral(", "); 213 builder.append(String::numberToStringECMAScript(m_matrix.c())); 214 builder.appendLiteral(", "); 215 builder.append(String::numberToStringECMAScript(m_matrix.d())); 216 builder.appendLiteral(", "); 217 builder.append(String::numberToStringECMAScript(m_matrix.e())); 218 builder.appendLiteral(", "); 219 builder.append(String::numberToStringECMAScript(m_matrix.f())); 220 } else { 221 builder.appendLiteral("matrix3d("); 222 builder.append(String::numberToStringECMAScript(m_matrix.m11())); 223 builder.appendLiteral(", "); 224 builder.append(String::numberToStringECMAScript(m_matrix.m12())); 225 builder.appendLiteral(", "); 226 builder.append(String::numberToStringECMAScript(m_matrix.m13())); 227 builder.appendLiteral(", "); 228 builder.append(String::numberToStringECMAScript(m_matrix.m14())); 229 builder.appendLiteral(", "); 230 builder.append(String::numberToStringECMAScript(m_matrix.m21())); 231 builder.appendLiteral(", "); 232 builder.append(String::numberToStringECMAScript(m_matrix.m22())); 233 builder.appendLiteral(", "); 234 builder.append(String::numberToStringECMAScript(m_matrix.m23())); 235 builder.appendLiteral(", "); 236 builder.append(String::numberToStringECMAScript(m_matrix.m24())); 237 builder.appendLiteral(", "); 238 builder.append(String::numberToStringECMAScript(m_matrix.m31())); 239 builder.appendLiteral(", "); 240 builder.append(String::numberToStringECMAScript(m_matrix.m32())); 241 builder.appendLiteral(", "); 242 builder.append(String::numberToStringECMAScript(m_matrix.m33())); 243 builder.appendLiteral(", "); 244 builder.append(String::numberToStringECMAScript(m_matrix.m34())); 245 builder.appendLiteral(", "); 246 builder.append(String::numberToStringECMAScript(m_matrix.m41())); 247 builder.appendLiteral(", "); 248 builder.append(String::numberToStringECMAScript(m_matrix.m42())); 249 builder.appendLiteral(", "); 250 builder.append(String::numberToStringECMAScript(m_matrix.m43())); 251 builder.appendLiteral(", "); 252 builder.append(String::numberToStringECMAScript(m_matrix.m44())); 253 } 254 builder.append(')'); 255 return builder.toString(); 210 256 } 211 257 -
trunk/Source/WebCore/css/WebKitCSSMatrix.h
r207396 r216881 138 138 const TransformationMatrix& transform() const { return m_matrix; } 139 139 140 StringtoString() const;140 ExceptionOr<String> toString() const; 141 141 142 142 private: -
trunk/Source/WebCore/css/WebKitCSSMatrix.idl
r215403 r216881 92 92 WebKitCSSMatrix skewY(optional unrestricted double angle = NaN); 93 93 94 [ NotEnumerable] DOMString toString();94 [MayThrowException] DOMString toString(); // FIXME: Should be stringifier; once we support it. 95 95 }; -
trunk/Source/WebCore/platform/graphics/transforms/TransformationMatrix.cpp
r208985 r216881 34 34 #include "LayoutRect.h" 35 35 #include "TextStream.h" 36 #include <cmath> 36 37 #include <wtf/Assertions.h> 37 38 #include <wtf/MathExtras.h> … … 1694 1695 } 1695 1696 1697 bool TransformationMatrix::containsOnlyFiniteValues() const 1698 { 1699 return std::isfinite(m_matrix[0][0]) && std::isfinite(m_matrix[0][1]) && std::isfinite(m_matrix[0][2]) && std::isfinite(m_matrix[0][3]) 1700 && std::isfinite(m_matrix[1][0]) && std::isfinite(m_matrix[1][1]) && std::isfinite(m_matrix[1][2]) && std::isfinite(m_matrix[1][3]) 1701 && std::isfinite(m_matrix[2][0]) && std::isfinite(m_matrix[2][1]) && std::isfinite(m_matrix[2][2]) && std::isfinite(m_matrix[2][3]) 1702 && std::isfinite(m_matrix[3][0]) && std::isfinite(m_matrix[3][1]) && std::isfinite(m_matrix[3][2]) && std::isfinite(m_matrix[3][3]); 1703 } 1704 1696 1705 TransformationMatrix TransformationMatrix::to2dTransform() const 1697 1706 { -
trunk/Source/WebCore/platform/graphics/transforms/TransformationMatrix.h
r208985 r216881 381 381 bool isIntegerTranslation() const; 382 382 383 bool containsOnlyFiniteValues() const; 384 383 385 // Returns the matrix without 3D components. 384 386 TransformationMatrix to2dTransform() const;
Note: See TracChangeset
for help on using the changeset viewer.