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

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

Issue 1739533004: Fix synchronization of SVGAnimatedAngle (<marker orient>) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Windows compilation fix Created 4 years, 9 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
« no previous file with comments | « third_party/WebKit/Source/core/svg/SVGAnimatedAngle.h ('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 /* 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 13 matching lines...) Expand all
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/SVGAnimatedAngle.h" 31 #include "core/svg/SVGAnimatedAngle.h"
32 32
33 #include "core/SVGNames.h" 33 #include "core/SVGNames.h"
34 #include "core/svg/SVGAngleTearOff.h"
35 #include "core/svg/SVGMarkerElement.h"
36 34
37 namespace blink { 35 namespace blink {
38 36
39 SVGAnimatedAngle::SVGAnimatedAngle(SVGMarkerElement* contextElement) 37 SVGAnimatedAngle::SVGAnimatedAngle(SVGElement* contextElement)
40 : SVGAnimatedProperty<SVGAngle>(contextElement, SVGNames::orientAttr, SVGAng le::create()) 38 : SVGAnimatedProperty<SVGAngle>(contextElement, SVGNames::orientAttr, SVGAng le::create())
41 , m_orientType(SVGAnimatedEnumeration<SVGMarkerOrientType>::create(contextEl ement, SVGNames::orientAttr, baseValue()->orientType())) 39 , m_orientType(SVGAnimatedEnumeration<SVGMarkerOrientType>::create(contextEl ement, SVGNames::orientAttr, baseValue()->orientType()))
42 { 40 {
43 } 41 }
44 42
45 SVGAnimatedAngle::~SVGAnimatedAngle() 43 SVGAnimatedAngle::~SVGAnimatedAngle()
46 { 44 {
47 } 45 }
48 46
49 DEFINE_TRACE(SVGAnimatedAngle) 47 DEFINE_TRACE(SVGAnimatedAngle)
50 { 48 {
51 visitor->trace(m_orientType); 49 visitor->trace(m_orientType);
52 SVGAnimatedProperty<SVGAngle>::trace(visitor); 50 SVGAnimatedProperty<SVGAngle>::trace(visitor);
53 } 51 }
54 52
53 bool SVGAnimatedAngle::needsSynchronizeAttribute()
54 {
55 return m_orientType->needsSynchronizeAttribute()
56 || SVGAnimatedProperty<SVGAngle>::needsSynchronizeAttribute();
57 }
58
55 void SVGAnimatedAngle::synchronizeAttribute() 59 void SVGAnimatedAngle::synchronizeAttribute()
56 { 60 {
57 DEFINE_STATIC_LOCAL(const AtomicString, autoValue, ("auto", AtomicString::Co nstructFromLiteral)); 61 // If the current value is not an <angle> we synchronize the value of the
58 AtomicString value; 62 // wrapped enumeration.
59 if (m_orientType->currentValue()->enumValue() == SVGMarkerOrientAuto) 63 if (m_orientType->currentValue()->enumValue() != SVGMarkerOrientAngle) {
60 value = autoValue; 64 m_orientType->synchronizeAttribute();
61 else 65 return;
62 value = AtomicString(currentValue()->valueAsString()); 66 }
63 67 SVGAnimatedProperty<SVGAngle>::synchronizeAttribute();
64 contextElement()->setSynchronizedLazyAttribute(attributeName(), value);
65 } 68 }
66 69
67 void SVGAnimatedAngle::setAnimatedValue(PassRefPtrWillBeRawPtr<SVGPropertyBase> value) 70 void SVGAnimatedAngle::setAnimatedValue(PassRefPtrWillBeRawPtr<SVGPropertyBase> value)
68 { 71 {
69 SVGAnimatedProperty<SVGAngle>::setAnimatedValue(value); 72 SVGAnimatedProperty<SVGAngle>::setAnimatedValue(value);
70 m_orientType->setAnimatedValue(currentValue()->orientType()); 73 m_orientType->setAnimatedValue(currentValue()->orientType());
71 } 74 }
72 75
73 void SVGAnimatedAngle::animationEnded() 76 void SVGAnimatedAngle::animationEnded()
74 { 77 {
75 SVGAnimatedProperty<SVGAngle>::animationEnded(); 78 SVGAnimatedProperty<SVGAngle>::animationEnded();
76 m_orientType->animationEnded(); 79 m_orientType->animationEnded();
77 } 80 }
78 81
79 } // namespace blink 82 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/svg/SVGAnimatedAngle.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698