OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
4 * (C) 2001 Dirk Mueller (mueller@kde.org) | 4 * (C) 2001 Dirk Mueller (mueller@kde.org) |
5 * Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved. | 5 * Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved. |
6 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) | 6 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) |
7 * | 7 * |
8 * This library is free software; you can redistribute it and/or | 8 * This library is free software; you can redistribute it and/or |
9 * modify it under the terms of the GNU Library General Public | 9 * modify it under the terms of the GNU Library General Public |
10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
11 * version 2 of the License, or (at your option) any later version. | 11 * version 2 of the License, or (at your option) any later version. |
12 * | 12 * |
13 * This library is distributed in the hope that it will be useful, | 13 * This library is distributed in the hope that it will be useful, |
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
16 * Library General Public License for more details. | 16 * Library General Public License for more details. |
17 * | 17 * |
18 * You should have received a copy of the GNU Library General Public License | 18 * You should have received a copy of the GNU Library General Public License |
19 * along with this library; see the file COPYING.LIB. If not, write to | 19 * along with this library; see the file COPYING.LIB. If not, write to |
20 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | 20 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
21 * Boston, MA 02110-1301, USA. | 21 * Boston, MA 02110-1301, USA. |
22 */ | 22 */ |
23 | 23 |
24 #include "config.h" | 24 #include "config.h" |
25 #include "TagNodeList.h" | 25 #include "TagNodeList.h" |
26 | 26 |
27 #include "Element.h" | 27 #include "Element.h" |
| 28 #include "NodeRareData.h" |
28 #include <wtf/Assertions.h> | 29 #include <wtf/Assertions.h> |
29 | 30 |
30 namespace WebCore { | 31 namespace WebCore { |
31 | 32 |
32 TagNodeList::TagNodeList(PassRefPtr<Node> rootNode, const AtomicString& namespac
eURI, const AtomicString& localName) | 33 TagNodeList::TagNodeList(PassRefPtr<Node> rootNode, const AtomicString& namespac
eURI, const AtomicString& localName) |
33 : DynamicSubtreeNodeList(rootNode) | 34 : DynamicSubtreeNodeList(rootNode, RootedAtNode, DoNotInvalidateOnAttributeC
hange) |
34 , m_namespaceURI(namespaceURI) | 35 , m_namespaceURI(namespaceURI) |
35 , m_localName(localName) | 36 , m_localName(localName) |
36 { | 37 { |
37 ASSERT(m_namespaceURI.isNull() || !m_namespaceURI.isEmpty()); | 38 ASSERT(m_namespaceURI.isNull() || !m_namespaceURI.isEmpty()); |
38 } | 39 } |
39 | 40 |
40 TagNodeList::~TagNodeList() | 41 TagNodeList::~TagNodeList() |
41 { | 42 { |
42 if (m_namespaceURI == starAtom) | 43 if (m_namespaceURI == starAtom) |
43 node()->removeCachedTagNodeList(this, m_localName); | 44 m_node->nodeLists()->removeCacheWithAtomicName(this, DynamicNodeList::Ta
gNodeListType, m_localName); |
44 else | 45 else |
45 node()->removeCachedTagNodeList(this, QualifiedName(nullAtom, m_localNam
e, m_namespaceURI)); | 46 m_node->nodeLists()->removeCacheWithQualifiedName(this, m_namespaceURI,
m_localName); |
46 } | 47 } |
47 | 48 |
48 bool TagNodeList::nodeMatches(Element* testNode) const | 49 bool TagNodeList::nodeMatches(Element* testNode) const |
49 { | 50 { |
50 // Implements http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#conce
pt-getelementsbytagnamens | 51 // Implements http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#conce
pt-getelementsbytagnamens |
51 if (m_localName != starAtom && m_localName != testNode->localName()) | 52 if (m_localName != starAtom && m_localName != testNode->localName()) |
52 return false; | 53 return false; |
53 | 54 |
54 return m_namespaceURI == starAtom || m_namespaceURI == testNode->namespaceUR
I(); | 55 return m_namespaceURI == starAtom || m_namespaceURI == testNode->namespaceUR
I(); |
55 } | 56 } |
56 | 57 |
57 HTMLTagNodeList::HTMLTagNodeList(PassRefPtr<Node> rootNode, const AtomicString&
namespaceURI, const AtomicString& localName) | 58 HTMLTagNodeList::HTMLTagNodeList(PassRefPtr<Node> rootNode, const AtomicString&
localName) |
58 : TagNodeList(rootNode, namespaceURI, localName) | 59 : TagNodeList(rootNode, starAtom, localName) |
59 , m_loweredLocalName(localName.lower()) | 60 , m_loweredLocalName(localName.lower()) |
60 { | 61 { |
61 } | 62 } |
62 | 63 |
63 bool HTMLTagNodeList::nodeMatches(Element* testNode) const | 64 bool HTMLTagNodeList::nodeMatches(Element* testNode) const |
64 { | 65 { |
65 // Implements http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#conce
pt-getelementsbytagname | 66 // Implements http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#conce
pt-getelementsbytagname |
66 if (m_localName != starAtom) { | 67 if (m_localName != starAtom) { |
67 const AtomicString& localName = testNode->isHTMLElement() ? m_loweredLoc
alName : m_localName; | 68 const AtomicString& localName = testNode->isHTMLElement() ? m_loweredLoc
alName : m_localName; |
68 if (localName != testNode->localName()) | 69 if (localName != testNode->localName()) |
69 return false; | 70 return false; |
70 } | 71 } |
71 | 72 |
72 return m_namespaceURI == starAtom || m_namespaceURI == testNode->namespaceUR
I(); | 73 ASSERT(m_namespaceURI == starAtom); |
| 74 return true; |
73 } | 75 } |
74 | 76 |
75 } // namespace WebCore | 77 } // namespace WebCore |
OLD | NEW |