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

Side by Side Diff: Source/core/dom/ContainerNode.cpp

Issue 334713006: Use stricter typing for NodeLists throughout the code base (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebase Created 6 years, 6 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
« no previous file with comments | « Source/core/dom/ContainerNode.h ('k') | Source/core/dom/Document.h » ('j') | 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) 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, 2008, 2009 Apple Inc. All rights reserv ed. 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv ed.
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 21 matching lines...) Expand all
32 #include "core/dom/ExceptionCode.h" 32 #include "core/dom/ExceptionCode.h"
33 #include "core/dom/FullscreenElementStack.h" 33 #include "core/dom/FullscreenElementStack.h"
34 #include "core/dom/NameNodeList.h" 34 #include "core/dom/NameNodeList.h"
35 #include "core/dom/NoEventDispatchAssertion.h" 35 #include "core/dom/NoEventDispatchAssertion.h"
36 #include "core/dom/NodeChildRemovalTracker.h" 36 #include "core/dom/NodeChildRemovalTracker.h"
37 #include "core/dom/NodeRareData.h" 37 #include "core/dom/NodeRareData.h"
38 #include "core/dom/NodeRenderStyle.h" 38 #include "core/dom/NodeRenderStyle.h"
39 #include "core/dom/NodeTraversal.h" 39 #include "core/dom/NodeTraversal.h"
40 #include "core/dom/ScriptForbiddenScope.h" 40 #include "core/dom/ScriptForbiddenScope.h"
41 #include "core/dom/SelectorQuery.h" 41 #include "core/dom/SelectorQuery.h"
42 #include "core/dom/StaticNodeList.h"
42 #include "core/dom/shadow/ElementShadow.h" 43 #include "core/dom/shadow/ElementShadow.h"
43 #include "core/dom/shadow/ShadowRoot.h" 44 #include "core/dom/shadow/ShadowRoot.h"
44 #include "core/events/MutationEvent.h" 45 #include "core/events/MutationEvent.h"
45 #include "core/html/HTMLCollection.h" 46 #include "core/html/HTMLCollection.h"
46 #include "core/html/HTMLFrameOwnerElement.h" 47 #include "core/html/HTMLFrameOwnerElement.h"
47 #include "core/html/RadioNodeList.h" 48 #include "core/html/RadioNodeList.h"
48 #include "core/inspector/InspectorInstrumentation.h" 49 #include "core/inspector/InspectorInstrumentation.h"
49 #include "core/rendering/InlineTextBox.h" 50 #include "core/rendering/InlineTextBox.h"
50 #include "core/rendering/RenderText.h" 51 #include "core/rendering/RenderText.h"
51 #include "core/rendering/RenderTheme.h" 52 #include "core/rendering/RenderTheme.h"
(...skipping 962 matching lines...) Expand 10 before | Expand all | Expand 10 after
1014 exceptionState.throwDOMException(SyntaxError, "The provided selector is empty."); 1015 exceptionState.throwDOMException(SyntaxError, "The provided selector is empty.");
1015 return nullptr; 1016 return nullptr;
1016 } 1017 }
1017 1018
1018 SelectorQuery* selectorQuery = document().selectorQueryCache().add(selectors , document(), exceptionState); 1019 SelectorQuery* selectorQuery = document().selectorQueryCache().add(selectors , document(), exceptionState);
1019 if (!selectorQuery) 1020 if (!selectorQuery)
1020 return nullptr; 1021 return nullptr;
1021 return selectorQuery->queryFirst(*this); 1022 return selectorQuery->queryFirst(*this);
1022 } 1023 }
1023 1024
1024 PassRefPtrWillBeRawPtr<NodeList> ContainerNode::querySelectorAll(const AtomicStr ing& selectors, ExceptionState& exceptionState) 1025 PassRefPtrWillBeRawPtr<StaticNodeList> ContainerNode::querySelectorAll(const Ato micString& selectors, ExceptionState& exceptionState)
1025 { 1026 {
1026 if (selectors.isEmpty()) { 1027 if (selectors.isEmpty()) {
1027 exceptionState.throwDOMException(SyntaxError, "The provided selector is empty."); 1028 exceptionState.throwDOMException(SyntaxError, "The provided selector is empty.");
1028 return nullptr; 1029 return nullptr;
1029 } 1030 }
1030 1031
1031 SelectorQuery* selectorQuery = document().selectorQueryCache().add(selectors , document(), exceptionState); 1032 SelectorQuery* selectorQuery = document().selectorQueryCache().add(selectors , document(), exceptionState);
1032 if (!selectorQuery) 1033 if (!selectorQuery)
1033 return nullptr; 1034 return nullptr;
1034 1035
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
1206 } 1207 }
1207 1208
1208 // The + selector. We need to invalidate the first element following the ins ertion point. It is the only possible element 1209 // The + selector. We need to invalidate the first element following the ins ertion point. It is the only possible element
1209 // that could be affected by this DOM change. 1210 // that could be affected by this DOM change.
1210 if (childrenAffectedByDirectAdjacentRules() && afterChange) { 1211 if (childrenAffectedByDirectAdjacentRules() && afterChange) {
1211 if (Node* firstElementAfterInsertion = afterChange->isElementNode() ? af terChange : ElementTraversal::nextSibling(*afterChange)) 1212 if (Node* firstElementAfterInsertion = afterChange->isElementNode() ? af terChange : ElementTraversal::nextSibling(*afterChange))
1212 firstElementAfterInsertion->setNeedsStyleRecalc(SubtreeStyleChange); 1213 firstElementAfterInsertion->setNeedsStyleRecalc(SubtreeStyleChange);
1213 } 1214 }
1214 } 1215 }
1215 1216
1216 PassRefPtrWillBeRawPtr<HTMLCollection> ContainerNode::getElementsByTagName(const AtomicString& localName) 1217 PassRefPtrWillBeRawPtr<TagCollection> ContainerNode::getElementsByTagName(const AtomicString& localName)
1217 { 1218 {
1218 if (localName.isNull()) 1219 if (localName.isNull())
1219 return nullptr; 1220 return nullptr;
1220 1221
1221 if (document().isHTMLDocument()) 1222 if (document().isHTMLDocument())
1222 return ensureRareData().ensureNodeLists().addCache<HTMLTagCollection>(*t his, HTMLTagCollectionType, localName); 1223 return ensureRareData().ensureNodeLists().addCache<HTMLTagCollection>(*t his, HTMLTagCollectionType, localName);
1223 return ensureRareData().ensureNodeLists().addCache<TagCollection>(*this, Tag CollectionType, localName); 1224 return ensureRareData().ensureNodeLists().addCache<TagCollection>(*this, Tag CollectionType, localName);
1224 } 1225 }
1225 1226
1226 PassRefPtrWillBeRawPtr<HTMLCollection> ContainerNode::getElementsByTagNameNS(con st AtomicString& namespaceURI, const AtomicString& localName) 1227 PassRefPtrWillBeRawPtr<TagCollection> ContainerNode::getElementsByTagNameNS(cons t AtomicString& namespaceURI, const AtomicString& localName)
1227 { 1228 {
1228 if (localName.isNull()) 1229 if (localName.isNull())
1229 return nullptr; 1230 return nullptr;
1230 1231
1231 if (namespaceURI == starAtom) 1232 if (namespaceURI == starAtom)
1232 return getElementsByTagName(localName); 1233 return getElementsByTagName(localName);
1233 1234
1234 return ensureRareData().ensureNodeLists().addCache(*this, namespaceURI.isEmp ty() ? nullAtom : namespaceURI, localName); 1235 return ensureRareData().ensureNodeLists().addCache(*this, namespaceURI.isEmp ty() ? nullAtom : namespaceURI, localName);
1235 } 1236 }
1236 1237
1237 // Takes an AtomicString in argument because it is common for elements to share the same name attribute. 1238 // Takes an AtomicString in argument because it is common for elements to share the same name attribute.
1238 // Therefore, the NameNodeList factory function expects an AtomicString type. 1239 // Therefore, the NameNodeList factory function expects an AtomicString type.
1239 PassRefPtrWillBeRawPtr<NodeList> ContainerNode::getElementsByName(const AtomicSt ring& elementName) 1240 PassRefPtrWillBeRawPtr<NameNodeList> ContainerNode::getElementsByName(const Atom icString& elementName)
1240 { 1241 {
1241 return ensureRareData().ensureNodeLists().addCache<NameNodeList>(*this, Name NodeListType, elementName); 1242 return ensureRareData().ensureNodeLists().addCache<NameNodeList>(*this, Name NodeListType, elementName);
1242 } 1243 }
1243 1244
1244 // Takes an AtomicString in argument because it is common for elements to share the same set of class names. 1245 // Takes an AtomicString in argument because it is common for elements to share the same set of class names.
1245 // Therefore, the ClassNodeList factory function expects an AtomicString type. 1246 // Therefore, the ClassNodeList factory function expects an AtomicString type.
1246 PassRefPtrWillBeRawPtr<HTMLCollection> ContainerNode::getElementsByClassName(con st AtomicString& classNames) 1247 PassRefPtrWillBeRawPtr<ClassCollection> ContainerNode::getElementsByClassName(co nst AtomicString& classNames)
1247 { 1248 {
1248 return ensureRareData().ensureNodeLists().addCache<ClassCollection>(*this, C lassCollectionType, classNames); 1249 return ensureRareData().ensureNodeLists().addCache<ClassCollection>(*this, C lassCollectionType, classNames);
1249 } 1250 }
1250 1251
1251 PassRefPtrWillBeRawPtr<RadioNodeList> ContainerNode::radioNodeList(const AtomicS tring& name, bool onlyMatchImgElements) 1252 PassRefPtrWillBeRawPtr<RadioNodeList> ContainerNode::radioNodeList(const AtomicS tring& name, bool onlyMatchImgElements)
1252 { 1253 {
1253 ASSERT(isHTMLFormElement(this) || isHTMLFieldSetElement(this)); 1254 ASSERT(isHTMLFormElement(this) || isHTMLFieldSetElement(this));
1254 CollectionType type = onlyMatchImgElements ? RadioImgNodeListType : RadioNod eListType; 1255 CollectionType type = onlyMatchImgElements ? RadioImgNodeListType : RadioNod eListType;
1255 return ensureRareData().ensureNodeLists().addCache<RadioNodeList>(*this, typ e, name); 1256 return ensureRareData().ensureNodeLists().addCache<RadioNodeList>(*this, typ e, name);
1256 } 1257 }
(...skipping 28 matching lines...) Expand all
1285 return true; 1286 return true;
1286 1287
1287 if (node->isElementNode() && toElement(node)->shadow()) 1288 if (node->isElementNode() && toElement(node)->shadow())
1288 return true; 1289 return true;
1289 1290
1290 return false; 1291 return false;
1291 } 1292 }
1292 #endif 1293 #endif
1293 1294
1294 } // namespace WebCore 1295 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/dom/ContainerNode.h ('k') | Source/core/dom/Document.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698