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

Side by Side Diff: third_party/WebKit/Source/core/html/HTMLFormControlsCollection.cpp

Issue 2546063002: Rename FormAssociatedElement to ListedElement (Closed)
Patch Set: Suggested changes made Created 4 years 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) 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 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2010, 2011, 2012 Apple Inc. All 4 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2010, 2011, 2012 Apple Inc. All
5 * rights reserved. 5 * rights reserved.
6 * Copyright (C) 2014 Samsung Electronics. All rights reserved. 6 * Copyright (C) 2014 Samsung Electronics. All rights reserved.
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
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 47
48 HTMLFormControlsCollection* HTMLFormControlsCollection::create( 48 HTMLFormControlsCollection* HTMLFormControlsCollection::create(
49 ContainerNode& ownerNode, 49 ContainerNode& ownerNode,
50 CollectionType type) { 50 CollectionType type) {
51 DCHECK_EQ(type, FormControls); 51 DCHECK_EQ(type, FormControls);
52 return new HTMLFormControlsCollection(ownerNode); 52 return new HTMLFormControlsCollection(ownerNode);
53 } 53 }
54 54
55 HTMLFormControlsCollection::~HTMLFormControlsCollection() {} 55 HTMLFormControlsCollection::~HTMLFormControlsCollection() {}
56 56
57 const FormAssociatedElement::List& 57 const ListedElement::List& HTMLFormControlsCollection::listedElements() const {
58 HTMLFormControlsCollection::formControlElements() const { 58 return toHTMLFormElement(ownerNode()).listedElements();
59 return toHTMLFormElement(ownerNode()).associatedElements();
60 } 59 }
61 60
62 const HeapVector<Member<HTMLImageElement>>& 61 const HeapVector<Member<HTMLImageElement>>&
63 HTMLFormControlsCollection::formImageElements() const { 62 HTMLFormControlsCollection::formImageElements() const {
64 return toHTMLFormElement(ownerNode()).imageElements(); 63 return toHTMLFormElement(ownerNode()).imageElements();
65 } 64 }
66 65
67 static unsigned findFormAssociatedElement( 66 static unsigned findListedElement(const ListedElement::List& listedElements,
68 const FormAssociatedElement::List& associatedElements, 67 Element* element) {
69 Element* element) {
70 unsigned i = 0; 68 unsigned i = 0;
71 for (; i < associatedElements.size(); ++i) { 69 for (; i < listedElements.size(); ++i) {
72 FormAssociatedElement* associatedElement = associatedElements[i]; 70 ListedElement* listedElement = listedElements[i];
73 if (associatedElement->isEnumeratable() && 71 if (listedElement->isEnumeratable() &&
74 toHTMLElement(associatedElement) == element) 72 toHTMLElement(listedElement) == element)
75 break; 73 break;
76 } 74 }
77 return i; 75 return i;
78 } 76 }
79 77
80 HTMLElement* HTMLFormControlsCollection::virtualItemAfter( 78 HTMLElement* HTMLFormControlsCollection::virtualItemAfter(
81 Element* previous) const { 79 Element* previous) const {
82 const FormAssociatedElement::List& associatedElements = formControlElements(); 80 const ListedElement::List& listedElements = this->listedElements();
83 unsigned offset; 81 unsigned offset;
84 if (!previous) 82 if (!previous)
85 offset = 0; 83 offset = 0;
86 else if (m_cachedElement == previous) 84 else if (m_cachedElement == previous)
87 offset = m_cachedElementOffsetInArray + 1; 85 offset = m_cachedElementOffsetInArray + 1;
88 else 86 else
89 offset = findFormAssociatedElement(associatedElements, previous) + 1; 87 offset = findListedElement(listedElements, previous) + 1;
90 88
91 for (unsigned i = offset; i < associatedElements.size(); ++i) { 89 for (unsigned i = offset; i < listedElements.size(); ++i) {
92 FormAssociatedElement* associatedElement = associatedElements[i]; 90 ListedElement* listedElement = listedElements[i];
93 if (associatedElement->isEnumeratable()) { 91 if (listedElement->isEnumeratable()) {
94 m_cachedElement = toHTMLElement(associatedElement); 92 m_cachedElement = toHTMLElement(listedElement);
95 m_cachedElementOffsetInArray = i; 93 m_cachedElementOffsetInArray = i;
96 return m_cachedElement; 94 return m_cachedElement;
97 } 95 }
98 } 96 }
99 return nullptr; 97 return nullptr;
100 } 98 }
101 99
102 void HTMLFormControlsCollection::invalidateCache(Document* oldDocument) const { 100 void HTMLFormControlsCollection::invalidateCache(Document* oldDocument) const {
103 HTMLCollection::invalidateCache(oldDocument); 101 HTMLCollection::invalidateCache(oldDocument);
104 m_cachedElement = nullptr; 102 m_cachedElement = nullptr;
105 m_cachedElementOffsetInArray = 0; 103 m_cachedElementOffsetInArray = 0;
106 } 104 }
107 105
108 static HTMLElement* firstNamedItem( 106 static HTMLElement* firstNamedItem(const ListedElement::List& elementsArray,
109 const FormAssociatedElement::List& elementsArray, 107 const QualifiedName& attrName,
110 const QualifiedName& attrName, 108 const String& name) {
111 const String& name) {
112 DCHECK(attrName == idAttr || attrName == nameAttr); 109 DCHECK(attrName == idAttr || attrName == nameAttr);
113 110
114 for (unsigned i = 0; i < elementsArray.size(); ++i) { 111 for (unsigned i = 0; i < elementsArray.size(); ++i) {
115 HTMLElement* element = toHTMLElement(elementsArray[i]); 112 HTMLElement* element = toHTMLElement(elementsArray[i]);
116 if (elementsArray[i]->isEnumeratable() && 113 if (elementsArray[i]->isEnumeratable() &&
117 element->fastGetAttribute(attrName) == name) 114 element->fastGetAttribute(attrName) == name)
118 return element; 115 return element;
119 } 116 }
120 return nullptr; 117 return nullptr;
121 } 118 }
122 119
123 HTMLElement* HTMLFormControlsCollection::namedItem( 120 HTMLElement* HTMLFormControlsCollection::namedItem(
124 const AtomicString& name) const { 121 const AtomicString& name) const {
125 // http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/nameditem .asp 122 // http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/nameditem .asp
126 // This method first searches for an object with a matching id 123 // This method first searches for an object with a matching id
127 // attribute. If a match is not found, the method then searches for an 124 // attribute. If a match is not found, the method then searches for an
128 // object with a matching name attribute, but only on those elements 125 // object with a matching name attribute, but only on those elements
129 // that are allowed a name attribute. 126 // that are allowed a name attribute.
130 if (HTMLElement* item = firstNamedItem(formControlElements(), idAttr, name)) 127 if (HTMLElement* item = firstNamedItem(listedElements(), idAttr, name))
131 return item; 128 return item;
132 return firstNamedItem(formControlElements(), nameAttr, name); 129 return firstNamedItem(listedElements(), nameAttr, name);
133 } 130 }
134 131
135 void HTMLFormControlsCollection::updateIdNameCache() const { 132 void HTMLFormControlsCollection::updateIdNameCache() const {
136 if (hasValidIdNameCache()) 133 if (hasValidIdNameCache())
137 return; 134 return;
138 135
139 NamedItemCache* cache = NamedItemCache::create(); 136 NamedItemCache* cache = NamedItemCache::create();
140 HashSet<StringImpl*> foundInputElements; 137 HashSet<StringImpl*> foundInputElements;
141 138
142 const FormAssociatedElement::List& elementsArray = formControlElements(); 139 const ListedElement::List& elementsArray = listedElements();
143 140
144 for (unsigned i = 0; i < elementsArray.size(); ++i) { 141 for (unsigned i = 0; i < elementsArray.size(); ++i) {
145 FormAssociatedElement* associatedElement = elementsArray[i]; 142 ListedElement* listedElement = elementsArray[i];
146 if (associatedElement->isEnumeratable()) { 143 if (listedElement->isEnumeratable()) {
147 HTMLElement* element = toHTMLElement(associatedElement); 144 HTMLElement* element = toHTMLElement(listedElement);
148 const AtomicString& idAttrVal = element->getIdAttribute(); 145 const AtomicString& idAttrVal = element->getIdAttribute();
149 const AtomicString& nameAttrVal = element->getNameAttribute(); 146 const AtomicString& nameAttrVal = element->getNameAttribute();
150 if (!idAttrVal.isEmpty()) { 147 if (!idAttrVal.isEmpty()) {
151 cache->addElementWithId(idAttrVal, element); 148 cache->addElementWithId(idAttrVal, element);
152 foundInputElements.add(idAttrVal.impl()); 149 foundInputElements.add(idAttrVal.impl());
153 } 150 }
154 if (!nameAttrVal.isEmpty() && idAttrVal != nameAttrVal) { 151 if (!nameAttrVal.isEmpty() && idAttrVal != nameAttrVal) {
155 cache->addElementWithName(nameAttrVal, element); 152 cache->addElementWithName(nameAttrVal, element);
156 foundInputElements.add(nameAttrVal.impl()); 153 foundInputElements.add(nameAttrVal.impl());
157 } 154 }
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 } 224 }
228 } 225 }
229 } 226 }
230 227
231 DEFINE_TRACE(HTMLFormControlsCollection) { 228 DEFINE_TRACE(HTMLFormControlsCollection) {
232 visitor->trace(m_cachedElement); 229 visitor->trace(m_cachedElement);
233 HTMLCollection::trace(visitor); 230 HTMLCollection::trace(visitor);
234 } 231 }
235 232
236 } // namespace blink 233 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698