Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2004, 2005, 2006 Nikolas Zimmermann <zimmermann@kde.org> | 2 * Copyright (C) 2004, 2005, 2006 Nikolas Zimmermann <zimmermann@kde.org> |
| 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2010 Rob Buis <buis@kde.org> | 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2010 Rob Buis <buis@kde.org> |
| 4 * Copyright (C) 2007 Apple Inc. All rights reserved. | 4 * Copyright (C) 2007 Apple Inc. All rights reserved. |
| 5 * | 5 * |
| 6 * This library is free software; you can redistribute it and/or | 6 * This library is free software; you can redistribute it and/or |
| 7 * modify it under the terms of the GNU Library General Public | 7 * modify it under the terms of the GNU Library General Public |
| 8 * License as published by the Free Software Foundation; either | 8 * License as published by the Free Software Foundation; either |
| 9 * version 2 of the License, or (at your option) any later version. | 9 * version 2 of the License, or (at your option) any later version. |
| 10 * | 10 * |
| (...skipping 749 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 760 if (viewElement->hasAttribute(SVGNames::zoomAndPanAttr)) | 760 if (viewElement->hasAttribute(SVGNames::zoomAndPanAttr)) |
| 761 view->setZoomAndPan(viewElement->zoomAndPan()); | 761 view->setZoomAndPan(viewElement->zoomAndPan()); |
| 762 else | 762 else |
| 763 view->setZoomAndPan(zoomAndPan()); | 763 view->setZoomAndPan(zoomAndPan()); |
| 764 } | 764 } |
| 765 | 765 |
| 766 // getElementById on SVGSVGElement is restricted to only the child subtree defin ed by the <svg> element. | 766 // getElementById on SVGSVGElement is restricted to only the child subtree defin ed by the <svg> element. |
| 767 // See http://www.w3.org/TR/SVG11/struct.html#InterfaceSVGSVGElement | 767 // See http://www.w3.org/TR/SVG11/struct.html#InterfaceSVGSVGElement |
| 768 Element* SVGSVGElement::getElementById(const AtomicString& id) const | 768 Element* SVGSVGElement::getElementById(const AtomicString& id) const |
| 769 { | 769 { |
| 770 Element* element = treeScope().getElementById(id); | 770 Vector<Element*> elements = treeScope().getAllElementsById(id); |
|
Inactive
2014/02/24 20:12:42
This may cause a performance regression in the non
| |
| 771 if (element && element->isDescendantOf(this)) | |
| 772 return element; | |
| 773 | 771 |
| 774 // Fall back to traversing our subtree. Duplicate ids are allowed, the first found will | 772 for (Vector<Element*>::iterator it = elements.begin(); it != elements.end(); ++it) { |
|
pdr.
2014/02/24 18:39:43
I'm not sure how much it matters here, but I typic
| |
| 775 // be returned. | 773 Element* element = *it; |
| 776 for (Node* node = firstChild(); node; node = NodeTraversal::next(*node, this )) { | 774 if (element->isDescendantOf(this)) |
| 777 if (!node->isElementNode()) | |
| 778 continue; | |
| 779 | |
| 780 Element* element = toElement(node); | |
| 781 if (element->getIdAttribute() == id) | |
| 782 return element; | 775 return element; |
| 783 } | 776 } |
| 777 | |
| 784 return 0; | 778 return 0; |
| 785 } | 779 } |
| 786 | 780 |
| 787 } | 781 } |
| OLD | NEW |