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

Side by Side Diff: Source/core/svg/SVGCursorElement.cpp

Issue 643703006: SVGElement::parseAttribute resolves property via property map (Step 2.4) (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 2 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) 2004, 2005, 2006, 2008 Nikolas Zimmermann <zimmermann@kde.org> 2 * Copyright (C) 2004, 2005, 2006, 2008 Nikolas Zimmermann <zimmermann@kde.org>
3 * Copyright (C) 2004, 2005, 2006, 2007 Rob Buis <buis@kde.org> 3 * Copyright (C) 2004, 2005, 2006, 2007 Rob Buis <buis@kde.org>
4 * 4 *
5 * This library is free software; you can redistribute it and/or 5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public 6 * modify it under the terms of the GNU Library General Public
7 * License as published by the Free Software Foundation; either 7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version. 8 * version 2 of the License, or (at your option) any later version.
9 * 9 *
10 * This library is distributed in the hope that it will be useful, 10 * This library is distributed in the hope that it will be useful,
(...skipping 26 matching lines...) Expand all
37 addToPropertyMap(m_x); 37 addToPropertyMap(m_x);
38 addToPropertyMap(m_y); 38 addToPropertyMap(m_y);
39 } 39 }
40 40
41 DEFINE_NODE_FACTORY(SVGCursorElement) 41 DEFINE_NODE_FACTORY(SVGCursorElement)
42 42
43 SVGCursorElement::~SVGCursorElement() 43 SVGCursorElement::~SVGCursorElement()
44 { 44 {
45 // The below teardown is all handled by weak pointer processing in oilpan. 45 // The below teardown is all handled by weak pointer processing in oilpan.
46 #if !ENABLE(OILPAN) 46 #if !ENABLE(OILPAN)
47 HashSet<RawPtr<SVGElement> >::iterator end = m_clients.end(); 47 for (const auto& client : m_clients)
fs 2014/10/15 09:06:45 It looks a bit dodgy with 'const' here, but I gues
kouhei (in TOK) 2014/10/15 10:02:00 Changed to auto&.
48 for (HashSet<RawPtr<SVGElement> >::iterator it = m_clients.begin(); it != en d; ++it) 48 client->cursorElementRemoved();
49 (*it)->cursorElementRemoved();
50 #endif 49 #endif
51 } 50 }
52 51
53 bool SVGCursorElement::isSupportedAttribute(const QualifiedName& attrName) 52 bool SVGCursorElement::isSupportedAttribute(const QualifiedName& attrName)
54 { 53 {
55 DEFINE_STATIC_LOCAL(HashSet<QualifiedName>, supportedAttributes, ()); 54 DEFINE_STATIC_LOCAL(HashSet<QualifiedName>, supportedAttributes, ());
56 if (supportedAttributes.isEmpty()) { 55 if (supportedAttributes.isEmpty()) {
57 SVGTests::addSupportedAttributes(supportedAttributes); 56 SVGTests::addSupportedAttributes(supportedAttributes);
58 SVGURIReference::addSupportedAttributes(supportedAttributes); 57 SVGURIReference::addSupportedAttributes(supportedAttributes);
59 supportedAttributes.add(SVGNames::xAttr); 58 supportedAttributes.add(SVGNames::xAttr);
60 supportedAttributes.add(SVGNames::yAttr); 59 supportedAttributes.add(SVGNames::yAttr);
61 } 60 }
62 return supportedAttributes.contains<SVGAttributeHashTranslator>(attrName); 61 return supportedAttributes.contains<SVGAttributeHashTranslator>(attrName);
63 } 62 }
64 63
65 void SVGCursorElement::parseAttribute(const QualifiedName& name, const AtomicStr ing& value) 64 void SVGCursorElement::parseAttribute(const QualifiedName& name, const AtomicStr ing& value)
66 { 65 {
67 SVGParsingError parseError = NoError; 66 parseAttributeNew(name, value);
68
69 if (!isSupportedAttribute(name)) {
70 SVGElement::parseAttribute(name, value);
71 } else if (name == SVGNames::xAttr) {
72 m_x->setBaseValueAsString(value, parseError);
73 } else if (name == SVGNames::yAttr) {
74 m_y->setBaseValueAsString(value, parseError);
75 } else if (SVGURIReference::parseAttribute(name, value, parseError)) {
76 } else if (SVGTests::parseAttribute(name, value)) {
77 } else {
78 ASSERT_NOT_REACHED();
79 }
80
81 reportAttributeParsingError(parseError, name, value);
82 } 67 }
83 68
84 void SVGCursorElement::addClient(SVGElement* element) 69 void SVGCursorElement::addClient(SVGElement* element)
85 { 70 {
86 m_clients.add(element); 71 m_clients.add(element);
87 element->setCursorElement(this); 72 element->setCursorElement(this);
88 } 73 }
89 74
90 #if !ENABLE(OILPAN) 75 #if !ENABLE(OILPAN)
91 void SVGCursorElement::removeClient(SVGElement* element) 76 void SVGCursorElement::removeClient(SVGElement* element)
(...skipping 14 matching lines...) Expand all
106 void SVGCursorElement::svgAttributeChanged(const QualifiedName& attrName) 91 void SVGCursorElement::svgAttributeChanged(const QualifiedName& attrName)
107 { 92 {
108 if (!isSupportedAttribute(attrName)) { 93 if (!isSupportedAttribute(attrName)) {
109 SVGElement::svgAttributeChanged(attrName); 94 SVGElement::svgAttributeChanged(attrName);
110 return; 95 return;
111 } 96 }
112 97
113 SVGElement::InvalidationGuard invalidationGuard(this); 98 SVGElement::InvalidationGuard invalidationGuard(this);
114 99
115 // Any change of a cursor specific attribute triggers this recalc. 100 // Any change of a cursor specific attribute triggers this recalc.
116 WillBeHeapHashSet<RawPtrWillBeWeakMember<SVGElement> >::const_iterator it = m_clients.begin(); 101 for (const auto& client : m_clients)
117 WillBeHeapHashSet<RawPtrWillBeWeakMember<SVGElement> >::const_iterator end = m_clients.end(); 102 client->setNeedsStyleRecalc(SubtreeStyleChange, StyleChangeReasonForTrac ing::create(StyleChangeReason::SVGCursor));
118
119 for (; it != end; ++it)
120 (*it)->setNeedsStyleRecalc(SubtreeStyleChange, StyleChangeReasonForTraci ng::create(StyleChangeReason::SVGCursor));
121 } 103 }
122 104
123 void SVGCursorElement::trace(Visitor* visitor) 105 void SVGCursorElement::trace(Visitor* visitor)
124 { 106 {
125 #if ENABLE(OILPAN) 107 #if ENABLE(OILPAN)
126 visitor->trace(m_clients); 108 visitor->trace(m_clients);
127 #endif 109 #endif
128 SVGElement::trace(visitor); 110 SVGElement::trace(visitor);
129 } 111 }
130 112
131 } // namespace blink 113 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | Source/core/svg/SVGGlyphRefElement.cpp » ('j') | Source/core/svg/SVGMPathElement.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698