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

Side by Side Diff: third_party/WebKit/Source/core/dom/DOMMatrixReadOnly.cpp

Issue 2514453005: DOMMatrix: add missing propagation of exceptions. (Closed)
Patch Set: Created 4 years, 1 month 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
« no previous file with comments | « third_party/WebKit/Source/core/dom/DOMMatrix.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/dom/DOMMatrixReadOnly.h" 5 #include "core/dom/DOMMatrixReadOnly.h"
6 6
7 #include "bindings/core/v8/V8ObjectBuilder.h" 7 #include "bindings/core/v8/V8ObjectBuilder.h"
8 #include "core/dom/DOMMatrix.h" 8 #include "core/dom/DOMMatrix.h"
9 #include "core/dom/DOMMatrixInit.h" 9 #include "core/dom/DOMMatrixInit.h"
10 #include "core/dom/DOMPoint.h" 10 #include "core/dom/DOMPoint.h"
(...skipping 16 matching lines...) Expand all
27 other.setM22(other.hasD() ? other.d() : 1); 27 other.setM22(other.hasD() ? other.d() : 1);
28 28
29 if (!other.hasM41()) 29 if (!other.hasM41())
30 other.setM41(other.hasE() ? other.e() : 0); 30 other.setM41(other.hasE() ? other.e() : 0);
31 31
32 if (!other.hasM42()) 32 if (!other.hasM42())
33 other.setM42(other.hasF() ? other.f() : 0); 33 other.setM42(other.hasF() ? other.f() : 0);
34 } 34 }
35 35
36 String getErrorMessage(const char* a, const char* b) { 36 String getErrorMessage(const char* a, const char* b) {
37 return String::format("The '%s' property should eqaul the '%s' property.", a, 37 return String::format("The '%s' property should equal the '%s' property.", a,
38 b); 38 b);
39 } 39 }
40 40
41 } // namespace 41 } // namespace
42 42
43 bool DOMMatrixReadOnly::validateAndFixup(DOMMatrixInit& other, 43 bool DOMMatrixReadOnly::validateAndFixup(DOMMatrixInit& other,
44 ExceptionState& exceptionState) { 44 ExceptionState& exceptionState) {
45 if (other.hasA() && other.hasM11() && other.a() != other.m11()) { 45 if (other.hasA() && other.hasM11() && other.a() != other.m11()) {
46 exceptionState.throwTypeError(getErrorMessage("a", "m11")); 46 exceptionState.throwTypeError(getErrorMessage("a", "m11"));
47 return false; 47 return false;
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 "The sequence must contain 6 elements for a 2D matrix or 16 elements " 120 "The sequence must contain 6 elements for a 2D matrix or 16 elements "
121 "for a 3D matrix."); 121 "for a 3D matrix.");
122 return nullptr; 122 return nullptr;
123 } 123 }
124 return new DOMMatrixReadOnly(float64Array->data(), float64Array->length()); 124 return new DOMMatrixReadOnly(float64Array->data(), float64Array->length());
125 } 125 }
126 126
127 DOMMatrixReadOnly* DOMMatrixReadOnly::fromMatrix( 127 DOMMatrixReadOnly* DOMMatrixReadOnly::fromMatrix(
128 DOMMatrixInit& other, 128 DOMMatrixInit& other,
129 ExceptionState& exceptionState) { 129 ExceptionState& exceptionState) {
130 if (!validateAndFixup(other, exceptionState)) 130 if (!validateAndFixup(other, exceptionState)) {
131 DCHECK(exceptionState.hadException());
131 return nullptr; 132 return nullptr;
133 }
132 134
133 if (other.is2D()) { 135 if (other.is2D()) {
134 double args[] = {other.m11(), other.m12(), other.m21(), 136 double args[] = {other.m11(), other.m12(), other.m21(),
135 other.m22(), other.m41(), other.m42()}; 137 other.m22(), other.m41(), other.m42()};
136 return new DOMMatrixReadOnly(args, 6); 138 return new DOMMatrixReadOnly(args, 6);
137 } 139 }
138 140
139 double args[] = {other.m11(), other.m12(), other.m13(), other.m14(), 141 double args[] = {other.m11(), other.m12(), other.m13(), other.m14(),
140 other.m21(), other.m22(), other.m23(), other.m24(), 142 other.m21(), other.m22(), other.m23(), other.m24(),
141 other.m31(), other.m32(), other.m33(), other.m34(), 143 other.m31(), other.m32(), other.m33(), other.m34(),
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 result.addNumber("m41", m41()); 326 result.addNumber("m41", m41());
325 result.addNumber("m42", m42()); 327 result.addNumber("m42", m42());
326 result.addNumber("m43", m43()); 328 result.addNumber("m43", m43());
327 result.addNumber("m44", m44()); 329 result.addNumber("m44", m44());
328 result.addBoolean("is2D", is2D()); 330 result.addBoolean("is2D", is2D());
329 result.addBoolean("isIdentity", isIdentity()); 331 result.addBoolean("isIdentity", isIdentity());
330 return result.scriptValue(); 332 return result.scriptValue();
331 } 333 }
332 334
333 } // namespace blink 335 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/dom/DOMMatrix.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698