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

Side by Side Diff: Source/core/html/HTMLFieldSetElement.cpp

Issue 68173014: Have ElementTraversal::firstWithin() take a reference (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 7 years, 1 month 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
« no previous file with comments | « Source/core/html/HTMLFieldSetElement.h ('k') | Source/core/html/HTMLNameCollection.cpp » ('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, 2010 Apple Inc. All rights reserved. 5 * Copyright (C) 2004, 2005, 2006, 2010 Apple Inc. All rights reserved.
6 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) 6 * (C) 2006 Alexey Proskuryakov (ap@nypop.com)
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 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 , m_documentVersion(0) 42 , m_documentVersion(0)
43 { 43 {
44 ScriptWrappable::init(this); 44 ScriptWrappable::init(this);
45 } 45 }
46 46
47 PassRefPtr<HTMLFieldSetElement> HTMLFieldSetElement::create(Document& document, HTMLFormElement* form) 47 PassRefPtr<HTMLFieldSetElement> HTMLFieldSetElement::create(Document& document, HTMLFormElement* form)
48 { 48 {
49 return adoptRef(new HTMLFieldSetElement(document, form)); 49 return adoptRef(new HTMLFieldSetElement(document, form));
50 } 50 }
51 51
52 void HTMLFieldSetElement::invalidateDisabledStateUnder(Element* base) 52 void HTMLFieldSetElement::invalidateDisabledStateUnder(Element& base)
53 { 53 {
54 for (Element* element = ElementTraversal::firstWithin(base); element; elemen t = ElementTraversal::next(*element, base)) { 54 for (Element* element = ElementTraversal::firstWithin(base); element; elemen t = ElementTraversal::next(*element, &base)) {
55 if (element->isFormControlElement()) 55 if (element->isFormControlElement())
56 toHTMLFormControlElement(element)->ancestorDisabledStateWasChanged() ; 56 toHTMLFormControlElement(element)->ancestorDisabledStateWasChanged() ;
57 } 57 }
58 } 58 }
59 59
60 void HTMLFieldSetElement::disabledAttributeChanged() 60 void HTMLFieldSetElement::disabledAttributeChanged()
61 { 61 {
62 // This element must be updated before the style of nodes in its subtree get s recalculated. 62 // This element must be updated before the style of nodes in its subtree get s recalculated.
63 HTMLFormControlElement::disabledAttributeChanged(); 63 HTMLFormControlElement::disabledAttributeChanged();
64 invalidateDisabledStateUnder(this); 64 invalidateDisabledStateUnder(*this);
65 } 65 }
66 66
67 void HTMLFieldSetElement::childrenChanged(bool changedByParser, Node* beforeChan ge, Node* afterChange, int childCountDelta) 67 void HTMLFieldSetElement::childrenChanged(bool changedByParser, Node* beforeChan ge, Node* afterChange, int childCountDelta)
68 { 68 {
69 HTMLFormControlElement::childrenChanged(changedByParser, beforeChange, after Change, childCountDelta); 69 HTMLFormControlElement::childrenChanged(changedByParser, beforeChange, after Change, childCountDelta);
70 for (Element* element = ElementTraversal::firstWithin(this); element; elemen t = ElementTraversal::nextSkippingChildren(*element, this)) { 70 for (Element* element = ElementTraversal::firstWithin(*this); element; eleme nt = ElementTraversal::nextSkippingChildren(*element, this)) {
71 if (element->hasTagName(legendTag)) 71 if (element->hasTagName(legendTag))
72 invalidateDisabledStateUnder(element); 72 invalidateDisabledStateUnder(*element);
73 } 73 }
74 } 74 }
75 75
76 bool HTMLFieldSetElement::supportsFocus() const 76 bool HTMLFieldSetElement::supportsFocus() const
77 { 77 {
78 return HTMLElement::supportsFocus(); 78 return HTMLElement::supportsFocus();
79 } 79 }
80 80
81 const AtomicString& HTMLFieldSetElement::formControlType() const 81 const AtomicString& HTMLFieldSetElement::formControlType() const
82 { 82 {
83 DEFINE_STATIC_LOCAL(const AtomicString, fieldset, ("fieldset", AtomicString: :ConstructFromLiteral)); 83 DEFINE_STATIC_LOCAL(const AtomicString, fieldset, ("fieldset", AtomicString: :ConstructFromLiteral));
84 return fieldset; 84 return fieldset;
85 } 85 }
86 86
87 RenderObject* HTMLFieldSetElement::createRenderer(RenderStyle*) 87 RenderObject* HTMLFieldSetElement::createRenderer(RenderStyle*)
88 { 88 {
89 return new RenderFieldset(this); 89 return new RenderFieldset(this);
90 } 90 }
91 91
92 HTMLLegendElement* HTMLFieldSetElement::legend() const 92 HTMLLegendElement* HTMLFieldSetElement::legend() const
93 { 93 {
94 for (Element* child = ElementTraversal::firstWithin(this); child; child = El ementTraversal::nextSkippingChildren(*child, this)) { 94 for (Element* child = ElementTraversal::firstWithin(*this); child; child = E lementTraversal::nextSkippingChildren(*child, this)) {
95 if (child->hasTagName(legendTag)) 95 if (child->hasTagName(legendTag))
96 return toHTMLLegendElement(child); 96 return toHTMLLegendElement(child);
97 } 97 }
98 return 0; 98 return 0;
99 } 99 }
100 100
101 PassRefPtr<HTMLCollection> HTMLFieldSetElement::elements() 101 PassRefPtr<HTMLCollection> HTMLFieldSetElement::elements()
102 { 102 {
103 return ensureCachedHTMLCollection(FormControls); 103 return ensureCachedHTMLCollection(FormControls);
104 } 104 }
105 105
106 void HTMLFieldSetElement::refreshElementsIfNeeded() const 106 void HTMLFieldSetElement::refreshElementsIfNeeded() const
107 { 107 {
108 uint64_t docVersion = document().domTreeVersion(); 108 uint64_t docVersion = document().domTreeVersion();
109 if (m_documentVersion == docVersion) 109 if (m_documentVersion == docVersion)
110 return; 110 return;
111 111
112 m_documentVersion = docVersion; 112 m_documentVersion = docVersion;
113 113
114 m_associatedElements.clear(); 114 m_associatedElements.clear();
115 115
116 for (Element* element = ElementTraversal::firstWithin(this); element; elemen t = ElementTraversal::next(*element, this)) { 116 for (Element* element = ElementTraversal::firstWithin(*this); element; eleme nt = ElementTraversal::next(*element, this)) {
117 if (element->hasTagName(objectTag)) { 117 if (element->hasTagName(objectTag)) {
118 m_associatedElements.append(toHTMLObjectElement(element)); 118 m_associatedElements.append(toHTMLObjectElement(element));
119 continue; 119 continue;
120 } 120 }
121 121
122 if (!element->isFormControlElement()) 122 if (!element->isFormControlElement())
123 continue; 123 continue;
124 124
125 m_associatedElements.append(toHTMLFormControlElement(element)); 125 m_associatedElements.append(toHTMLFormControlElement(element));
126 } 126 }
127 } 127 }
128 128
129 const Vector<FormAssociatedElement*>& HTMLFieldSetElement::associatedElements() const 129 const Vector<FormAssociatedElement*>& HTMLFieldSetElement::associatedElements() const
130 { 130 {
131 refreshElementsIfNeeded(); 131 refreshElementsIfNeeded();
132 return m_associatedElements; 132 return m_associatedElements;
133 } 133 }
134 134
135 unsigned HTMLFieldSetElement::length() const 135 unsigned HTMLFieldSetElement::length() const
136 { 136 {
137 refreshElementsIfNeeded(); 137 refreshElementsIfNeeded();
138 unsigned len = 0; 138 unsigned len = 0;
139 for (unsigned i = 0; i < m_associatedElements.size(); ++i) 139 for (unsigned i = 0; i < m_associatedElements.size(); ++i)
140 if (m_associatedElements[i]->isEnumeratable()) 140 if (m_associatedElements[i]->isEnumeratable())
141 ++len; 141 ++len;
142 return len; 142 return len;
143 } 143 }
144 144
145 } // namespace 145 } // namespace
OLDNEW
« no previous file with comments | « Source/core/html/HTMLFieldSetElement.h ('k') | Source/core/html/HTMLNameCollection.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698