Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(34)

Side by Side Diff: Source/core/css/CSSMatrix.cpp

Issue 128043003: Improve core/css exception messages. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Test. Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2008 Apple Inc. All Rights Reserved. 2 * Copyright (C) 2008 Apple Inc. All Rights Reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 // requires style (i.e., param uses 'ems' or 'exs') 63 // requires style (i.e., param uses 'ems' or 'exs')
64 RefPtr<CSSValue> value = styleDeclaration->getPropertyCSSValue(CSSProper tyWebkitTransform); 64 RefPtr<CSSValue> value = styleDeclaration->getPropertyCSSValue(CSSProper tyWebkitTransform);
65 65
66 // Check for a "none" or empty transform. In these cases we can use the default identity matrix. 66 // Check for a "none" or empty transform. In these cases we can use the default identity matrix.
67 if (!value || (value->isPrimitiveValue() && (toCSSPrimitiveValue(value.g et()))->getValueID() == CSSValueNone)) 67 if (!value || (value->isPrimitiveValue() && (toCSSPrimitiveValue(value.g et()))->getValueID() == CSSValueNone))
68 return; 68 return;
69 69
70 DEFINE_STATIC_REF(RenderStyle, defaultStyle, RenderStyle::createDefaultS tyle()); 70 DEFINE_STATIC_REF(RenderStyle, defaultStyle, RenderStyle::createDefaultS tyle());
71 TransformOperations operations; 71 TransformOperations operations;
72 if (!TransformBuilder::createTransformOperations(value.get(), CSSToLengt hConversionData(defaultStyle, defaultStyle, 0, 0, 1.0f), operations)) { 72 if (!TransformBuilder::createTransformOperations(value.get(), CSSToLengt hConversionData(defaultStyle, defaultStyle, 0, 0, 1.0f), operations)) {
73 exceptionState.throwUninformativeAndGenericDOMException(SyntaxError) ; 73 exceptionState.throwDOMException(SyntaxError, "Failed to interpret ' " + string + "' as a transformation operation.");
74 return; 74 return;
75 } 75 }
76 76
77 // Convert transform operations to a TransformationMatrix. This can fail 77 // Convert transform operations to a TransformationMatrix. This can fail
78 // if a param has a percentage ('%') 78 // if a param has a percentage ('%')
79 if (operations.dependsOnBoxSize()) 79 if (operations.dependsOnBoxSize())
80 exceptionState.throwUninformativeAndGenericDOMException(SyntaxError) ; 80 exceptionState.throwDOMException(SyntaxError, "The transformation de pends on the box size, which is not supported.");
81 TransformationMatrix t; 81 TransformationMatrix t;
82 operations.apply(FloatSize(0, 0), t); 82 operations.apply(FloatSize(0, 0), t);
83 83
84 // set the matrix 84 // set the matrix
85 m_matrix = t; 85 m_matrix = t;
86 } else { // There is something there but parsing failed. 86 } else { // There is something there but parsing failed.
87 exceptionState.throwUninformativeAndGenericDOMException(SyntaxError); 87 exceptionState.throwDOMException(SyntaxError, "Failed to parse '" + stri ng + "'.");
88 } 88 }
89 } 89 }
90 90
91 // Perform a concatenation of the matrices (this * secondMatrix) 91 // Perform a concatenation of the matrices (this * secondMatrix)
92 PassRefPtr<CSSMatrix> CSSMatrix::multiply(CSSMatrix* secondMatrix) const 92 PassRefPtr<CSSMatrix> CSSMatrix::multiply(CSSMatrix* secondMatrix) const
93 { 93 {
94 if (!secondMatrix) 94 if (!secondMatrix)
95 return 0; 95 return 0;
96 96
97 return CSSMatrix::create(TransformationMatrix(m_matrix).multiply(secondMatri x->m_matrix)); 97 return CSSMatrix::create(TransformationMatrix(m_matrix).multiply(secondMatri x->m_matrix));
98 } 98 }
99 99
100 PassRefPtr<CSSMatrix> CSSMatrix::inverse(ExceptionState& exceptionState) const 100 PassRefPtr<CSSMatrix> CSSMatrix::inverse(ExceptionState& exceptionState) const
101 { 101 {
102 if (!m_matrix.isInvertible()) { 102 if (!m_matrix.isInvertible()) {
103 exceptionState.throwUninformativeAndGenericDOMException(NotSupportedErro r); 103 exceptionState.throwDOMException(NotSupportedError, "The matrix is not i nvertable.");
104 return 0; 104 return 0;
105 } 105 }
106 106
107 return CSSMatrix::create(m_matrix.inverse()); 107 return CSSMatrix::create(m_matrix.inverse());
108 } 108 }
109 109
110 PassRefPtr<CSSMatrix> CSSMatrix::translate(double x, double y, double z) const 110 PassRefPtr<CSSMatrix> CSSMatrix::translate(double x, double y, double z) const
111 { 111 {
112 if (std::isnan(x)) 112 if (std::isnan(x))
113 x = 0; 113 x = 0;
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 if (m_matrix.isAffine()) 182 if (m_matrix.isAffine())
183 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()); 183 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());
184 return String::format("matrix3d(%f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f)", 184 return String::format("matrix3d(%f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f)",
185 m_matrix.m11(), m_matrix.m12(), m_matrix.m13(), m_matrix.m14(), 185 m_matrix.m11(), m_matrix.m12(), m_matrix.m13(), m_matrix.m14(),
186 m_matrix.m21(), m_matrix.m22(), m_matrix.m23(), m_matrix.m24(), 186 m_matrix.m21(), m_matrix.m22(), m_matrix.m23(), m_matrix.m24(),
187 m_matrix.m31(), m_matrix.m32(), m_matrix.m33(), m_matrix.m34(), 187 m_matrix.m31(), m_matrix.m32(), m_matrix.m33(), m_matrix.m34(),
188 m_matrix.m41(), m_matrix.m42(), m_matrix.m43(), m_matrix.m44()); 188 m_matrix.m41(), m_matrix.m42(), m_matrix.m43(), m_matrix.m44());
189 } 189 }
190 190
191 } // namespace WebCore 191 } // namespace WebCore
OLDNEW
« no previous file with comments | « LayoutTests/transforms/cssmatrix-3d-interface-expected.txt ('k') | Source/core/css/CSSPrimitiveValue.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698