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

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

Issue 18053005: Introduce SVGGraphicsElement IDL interface (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 5 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) 2004, 2005, 2008 Nikolas Zimmermann <zimmermann@kde.org> 2 * Copyright (C) 2004, 2005, 2008 Nikolas Zimmermann <zimmermann@kde.org>
3 * Copyright (C) 2004, 2005, 2007 Rob Buis <buis@kde.org> 3 * Copyright (C) 2004, 2005, 2007 Rob Buis <buis@kde.org>
4 * Copyright (C) 2007 Eric Seidel <eric@webkit.org> 4 * Copyright (C) 2007 Eric Seidel <eric@webkit.org>
5 * Copyright (C) 2010 Apple Inc. All rights reserved. 5 * Copyright (C) 2010 Apple Inc. All rights reserved.
6 * 6 *
7 * This library is free software; you can redistribute it and/or 7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Library General Public 8 * modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either 9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version. 10 * version 2 of the License, or (at your option) any later version.
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 namespace WebCore { 52 namespace WebCore {
53 53
54 using namespace HTMLNames; 54 using namespace HTMLNames;
55 55
56 // Animated property definitions 56 // Animated property definitions
57 DEFINE_ANIMATED_STRING(SVGAElement, SVGNames::targetAttr, SVGTarget, svgTarget) 57 DEFINE_ANIMATED_STRING(SVGAElement, SVGNames::targetAttr, SVGTarget, svgTarget)
58 DEFINE_ANIMATED_STRING(SVGAElement, XLinkNames::hrefAttr, Href, href) 58 DEFINE_ANIMATED_STRING(SVGAElement, XLinkNames::hrefAttr, Href, href)
59 DEFINE_ANIMATED_BOOLEAN(SVGAElement, SVGNames::externalResourcesRequiredAttr, Ex ternalResourcesRequired, externalResourcesRequired) 59 DEFINE_ANIMATED_BOOLEAN(SVGAElement, SVGNames::externalResourcesRequiredAttr, Ex ternalResourcesRequired, externalResourcesRequired)
60 60
61 BEGIN_REGISTER_ANIMATED_PROPERTIES(SVGAElement) 61 BEGIN_REGISTER_ANIMATED_PROPERTIES(SVGAElement)
62 REGISTER_LOCAL_ANIMATED_PROPERTY(svgTarget) 62 REGISTER_LOCAL_ANIMATED_PROPERTY(svgTarget)
63 REGISTER_LOCAL_ANIMATED_PROPERTY(href) 63 REGISTER_LOCAL_ANIMATED_PROPERTY(href)
64 REGISTER_LOCAL_ANIMATED_PROPERTY(externalResourcesRequired) 64 REGISTER_LOCAL_ANIMATED_PROPERTY(externalResourcesRequired)
65 REGISTER_PARENT_ANIMATED_PROPERTIES(SVGStyledTransformableElement) 65 REGISTER_PARENT_ANIMATED_PROPERTIES(SVGGraphicsElement)
66 REGISTER_PARENT_ANIMATED_PROPERTIES(SVGTests)
67 END_REGISTER_ANIMATED_PROPERTIES 66 END_REGISTER_ANIMATED_PROPERTIES
68 67
69 inline SVGAElement::SVGAElement(const QualifiedName& tagName, Document* document ) 68 inline SVGAElement::SVGAElement(const QualifiedName& tagName, Document* document )
70 : SVGStyledTransformableElement(tagName, document) 69 : SVGGraphicsElement(tagName, document)
71 { 70 {
72 ASSERT(hasTagName(SVGNames::aTag)); 71 ASSERT(hasTagName(SVGNames::aTag));
73 ScriptWrappable::init(this); 72 ScriptWrappable::init(this);
74 registerAnimatedPropertiesForSVGAElement(); 73 registerAnimatedPropertiesForSVGAElement();
75 } 74 }
76 75
77 PassRefPtr<SVGAElement> SVGAElement::create(const QualifiedName& tagName, Docume nt* document) 76 PassRefPtr<SVGAElement> SVGAElement::create(const QualifiedName& tagName, Docume nt* document)
78 { 77 {
79 return adoptRef(new SVGAElement(tagName, document)); 78 return adoptRef(new SVGAElement(tagName, document));
80 } 79 }
(...skipping 18 matching lines...) Expand all
99 SVGLangSpace::addSupportedAttributes(supportedAttributes); 98 SVGLangSpace::addSupportedAttributes(supportedAttributes);
100 SVGExternalResourcesRequired::addSupportedAttributes(supportedAttributes ); 99 SVGExternalResourcesRequired::addSupportedAttributes(supportedAttributes );
101 supportedAttributes.add(SVGNames::targetAttr); 100 supportedAttributes.add(SVGNames::targetAttr);
102 } 101 }
103 return supportedAttributes.contains<SVGAttributeHashTranslator>(attrName); 102 return supportedAttributes.contains<SVGAttributeHashTranslator>(attrName);
104 } 103 }
105 104
106 void SVGAElement::parseAttribute(const QualifiedName& name, const AtomicString& value) 105 void SVGAElement::parseAttribute(const QualifiedName& name, const AtomicString& value)
107 { 106 {
108 if (!isSupportedAttribute(name)) { 107 if (!isSupportedAttribute(name)) {
109 SVGStyledTransformableElement::parseAttribute(name, value); 108 SVGGraphicsElement::parseAttribute(name, value);
110 return; 109 return;
111 } 110 }
112 111
113 if (name == SVGNames::targetAttr) { 112 if (name == SVGNames::targetAttr) {
114 setSVGTargetBaseValue(value); 113 setSVGTargetBaseValue(value);
115 return; 114 return;
116 } 115 }
117 116
118 if (SVGURIReference::parseAttribute(name, value)) 117 if (SVGURIReference::parseAttribute(name, value))
119 return; 118 return;
120 if (SVGTests::parseAttribute(name, value)) 119 if (SVGTests::parseAttribute(name, value))
121 return; 120 return;
122 if (SVGLangSpace::parseAttribute(name, value)) 121 if (SVGLangSpace::parseAttribute(name, value))
123 return; 122 return;
124 if (SVGExternalResourcesRequired::parseAttribute(name, value)) 123 if (SVGExternalResourcesRequired::parseAttribute(name, value))
125 return; 124 return;
126 125
127 ASSERT_NOT_REACHED(); 126 ASSERT_NOT_REACHED();
128 } 127 }
129 128
130 void SVGAElement::svgAttributeChanged(const QualifiedName& attrName) 129 void SVGAElement::svgAttributeChanged(const QualifiedName& attrName)
131 { 130 {
132 if (!isSupportedAttribute(attrName)) { 131 if (!isSupportedAttribute(attrName)) {
133 SVGStyledTransformableElement::svgAttributeChanged(attrName); 132 SVGGraphicsElement::svgAttributeChanged(attrName);
134 return; 133 return;
135 } 134 }
136 135
137 SVGElementInstance::InvalidationGuard invalidationGuard(this); 136 SVGElementInstance::InvalidationGuard invalidationGuard(this);
138 137
139 // Unlike other SVG*Element classes, SVGAElement only listens to SVGURIRefer ence changes 138 // Unlike other SVG*Element classes, SVGAElement only listens to SVGURIRefer ence changes
140 // as none of the other properties changes the linking behaviour for our <a> element. 139 // as none of the other properties changes the linking behaviour for our <a> element.
141 if (SVGURIReference::isKnownAttribute(attrName)) { 140 if (SVGURIReference::isKnownAttribute(attrName)) {
142 bool wasLink = isLink(); 141 bool wasLink = isLink();
143 setIsLink(!href().isNull()); 142 setIsLink(!href().isNull());
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 event->setDefaultHandled(); 184 event->setDefaultHandled();
186 185
187 Frame* frame = document()->frame(); 186 Frame* frame = document()->frame();
188 if (!frame) 187 if (!frame)
189 return; 188 return;
190 frame->loader()->urlSelected(document()->completeURL(url), target, e vent, false, MaybeSendReferrer); 189 frame->loader()->urlSelected(document()->completeURL(url), target, e vent, false, MaybeSendReferrer);
191 return; 190 return;
192 } 191 }
193 } 192 }
194 193
195 SVGStyledTransformableElement::defaultEventHandler(event); 194 SVGGraphicsElement::defaultEventHandler(event);
196 } 195 }
197 196
198 bool SVGAElement::supportsFocus() const 197 bool SVGAElement::supportsFocus() const
199 { 198 {
200 if (rendererIsEditable()) 199 if (rendererIsEditable())
201 return SVGStyledTransformableElement::supportsFocus(); 200 return SVGGraphicsElement::supportsFocus();
202 return true; 201 return true;
203 } 202 }
204 203
205 bool SVGAElement::rendererIsFocusable() const 204 bool SVGAElement::rendererIsFocusable() const
206 { 205 {
207 if (renderer() && renderer()->absoluteClippedOverflowRect().isEmpty()) 206 if (renderer() && renderer()->absoluteClippedOverflowRect().isEmpty())
208 return false; 207 return false;
209 208
210 return SVGElement::rendererIsFocusable(); 209 return SVGElement::rendererIsFocusable();
211 } 210 }
212 211
213 bool SVGAElement::isURLAttribute(const Attribute& attribute) const 212 bool SVGAElement::isURLAttribute(const Attribute& attribute) const
214 { 213 {
215 return attribute.name().localName() == hrefAttr || SVGStyledTransformableEle ment::isURLAttribute(attribute); 214 return attribute.name().localName() == hrefAttr || SVGGraphicsElement::isURL Attribute(attribute);
216 } 215 }
217 216
218 bool SVGAElement::isMouseFocusable() const 217 bool SVGAElement::isMouseFocusable() const
219 { 218 {
220 return false; 219 return false;
221 } 220 }
222 221
223 bool SVGAElement::isKeyboardFocusable(KeyboardEvent*) const 222 bool SVGAElement::isKeyboardFocusable(KeyboardEvent*) const
224 { 223 {
225 if (!isFocusable()) 224 if (!isFocusable())
(...skipping 12 matching lines...) Expand all
238 // The 'a' element may contain any element that its parent may contain, exce pt itself. 237 // The 'a' element may contain any element that its parent may contain, exce pt itself.
239 if (childContext.node()->hasTagName(SVGNames::aTag)) 238 if (childContext.node()->hasTagName(SVGNames::aTag))
240 return false; 239 return false;
241 if (parentNode() && parentNode()->isSVGElement()) 240 if (parentNode() && parentNode()->isSVGElement())
242 return parentNode()->childShouldCreateRenderer(childContext); 241 return parentNode()->childShouldCreateRenderer(childContext);
243 242
244 return SVGElement::childShouldCreateRenderer(childContext); 243 return SVGElement::childShouldCreateRenderer(childContext);
245 } 244 }
246 245
247 } // namespace WebCore 246 } // namespace WebCore
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698