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

Side by Side Diff: third_party/WebKit/Source/core/svg/SVGInteger.cpp

Issue 1544673003: Refactor propagation of parsing errors for SVG attributes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 12 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2014 Google Inc. All rights reserved. 2 * Copyright (C) 2014 Google 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 are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 11 matching lines...) Expand all
22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */ 29 */
30 30
31 #include "core/svg/SVGInteger.h" 31 #include "core/svg/SVGInteger.h"
32
32 #include "core/html/parser/HTMLParserIdioms.h" 33 #include "core/html/parser/HTMLParserIdioms.h"
33
34 #include "core/svg/SVGAnimationElement.h" 34 #include "core/svg/SVGAnimationElement.h"
35 35
36 namespace blink { 36 namespace blink {
37 37
38 SVGInteger::SVGInteger(int value) 38 SVGInteger::SVGInteger(int value)
39 : m_value(value) 39 : m_value(value)
40 { 40 {
41 } 41 }
42 42
43 PassRefPtrWillBeRawPtr<SVGInteger> SVGInteger::clone() const 43 PassRefPtrWillBeRawPtr<SVGInteger> SVGInteger::clone() const
44 { 44 {
45 return create(m_value); 45 return create(m_value);
46 } 46 }
47 47
48 String SVGInteger::valueAsString() const 48 String SVGInteger::valueAsString() const
49 { 49 {
50 return String::number(m_value); 50 return String::number(m_value);
51 } 51 }
52 52
53 void SVGInteger::setValueAsString(const String& string, ExceptionState& exceptio nState) 53 SVGParsingError SVGInteger::setValueAsString(const String& string)
54 { 54 {
55 if (string.isEmpty()) { 55 if (string.isEmpty()) {
56 m_value = 0; 56 m_value = 0;
57 return; 57 return NoError;
58 } 58 }
59 59
60 bool valid = true; 60 bool valid = true;
61 m_value = stripLeadingAndTrailingHTMLSpaces(string).toIntStrict(&valid); 61 m_value = stripLeadingAndTrailingHTMLSpaces(string).toIntStrict(&valid);
62 62
63 if (!valid) { 63 if (!valid) {
64 exceptionState.throwDOMException(SyntaxError, "The value provided ('" + string + "') is invalid.");
65 m_value = 0; 64 m_value = 0;
65 return ParsingAttributeFailedError;
66 } 66 }
67 return NoError;
67 } 68 }
68 69
69 void SVGInteger::add(PassRefPtrWillBeRawPtr<SVGPropertyBase> other, SVGElement*) 70 void SVGInteger::add(PassRefPtrWillBeRawPtr<SVGPropertyBase> other, SVGElement*)
70 { 71 {
71 setValue(m_value + toSVGInteger(other)->value()); 72 setValue(m_value + toSVGInteger(other)->value());
72 } 73 }
73 74
74 void SVGInteger::calculateAnimatedValue(SVGAnimationElement* animationElement, f loat percentage, unsigned repeatCount, PassRefPtrWillBeRawPtr<SVGPropertyBase> f rom, PassRefPtrWillBeRawPtr<SVGPropertyBase> to, PassRefPtrWillBeRawPtr<SVGPrope rtyBase> toAtEndOfDuration, SVGElement*) 75 void SVGInteger::calculateAnimatedValue(SVGAnimationElement* animationElement, f loat percentage, unsigned repeatCount, PassRefPtrWillBeRawPtr<SVGPropertyBase> f rom, PassRefPtrWillBeRawPtr<SVGPropertyBase> to, PassRefPtrWillBeRawPtr<SVGPrope rtyBase> toAtEndOfDuration, SVGElement*)
75 { 76 {
76 ASSERT(animationElement); 77 ASSERT(animationElement);
77 78
78 RefPtrWillBeRawPtr<SVGInteger> fromInteger = toSVGInteger(from); 79 RefPtrWillBeRawPtr<SVGInteger> fromInteger = toSVGInteger(from);
79 RefPtrWillBeRawPtr<SVGInteger> toInteger = toSVGInteger(to); 80 RefPtrWillBeRawPtr<SVGInteger> toInteger = toSVGInteger(to);
80 RefPtrWillBeRawPtr<SVGInteger> toAtEndOfDurationInteger = toSVGInteger(toAtE ndOfDuration); 81 RefPtrWillBeRawPtr<SVGInteger> toAtEndOfDurationInteger = toSVGInteger(toAtE ndOfDuration);
81 82
82 float animatedFloat = m_value; 83 float animatedFloat = m_value;
83 animationElement->animateAdditiveNumber(percentage, repeatCount, fromInteger ->value(), toInteger->value(), toAtEndOfDurationInteger->value(), animatedFloat) ; 84 animationElement->animateAdditiveNumber(percentage, repeatCount, fromInteger ->value(), toInteger->value(), toAtEndOfDurationInteger->value(), animatedFloat) ;
84 m_value = static_cast<int>(roundf(animatedFloat)); 85 m_value = static_cast<int>(roundf(animatedFloat));
85 } 86 }
86 87
87 float SVGInteger::calculateDistance(PassRefPtrWillBeRawPtr<SVGPropertyBase> othe r, SVGElement*) 88 float SVGInteger::calculateDistance(PassRefPtrWillBeRawPtr<SVGPropertyBase> othe r, SVGElement*)
88 { 89 {
89 return abs(m_value - toSVGInteger(other)->value()); 90 return abs(m_value - toSVGInteger(other)->value());
90 } 91 }
91 92
92 } 93 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698