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

Side by Side Diff: Source/core/html/forms/RadioButtonGroupScope.cpp

Issue 656723005: Use C++11 features in core/html (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: use nullptr Created 6 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2007, 2008, 2009 Apple Inc. All rights reserved. 2 * Copyright (C) 2007, 2008, 2009 Apple Inc. All rights reserved.
3 * 3 *
4 * This library is free software; you can redistribute it and/or 4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public 5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either 6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version. 7 * version 2 of the License, or (at your option) any later version.
8 * 8 *
9 * This library is distributed in the hope that it will be useful, 9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
(...skipping 30 matching lines...) Expand all
41 bool contains(HTMLInputElement*) const; 41 bool contains(HTMLInputElement*) const;
42 42
43 void trace(Visitor*); 43 void trace(Visitor*);
44 44
45 private: 45 private:
46 RadioButtonGroup(); 46 RadioButtonGroup();
47 void setNeedsValidityCheckForAllButtons(); 47 void setNeedsValidityCheckForAllButtons();
48 bool isValid() const; 48 bool isValid() const;
49 void setCheckedButton(HTMLInputElement*); 49 void setCheckedButton(HTMLInputElement*);
50 50
51 WillBeHeapHashSet<RawPtrWillBeMember<HTMLInputElement> > m_members; 51 WillBeHeapHashSet<RawPtrWillBeMember<HTMLInputElement>> m_members;
52 RawPtrWillBeMember<HTMLInputElement> m_checkedButton; 52 RawPtrWillBeMember<HTMLInputElement> m_checkedButton;
53 size_t m_requiredCount; 53 size_t m_requiredCount;
54 }; 54 };
55 55
56 RadioButtonGroup::RadioButtonGroup() 56 RadioButtonGroup::RadioButtonGroup()
57 : m_checkedButton(nullptr) 57 : m_checkedButton(nullptr)
58 , m_requiredCount(0) 58 , m_requiredCount(0)
59 { 59 {
60 } 60 }
61 61
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 ASSERT(m_members.contains(button)); 106 ASSERT(m_members.contains(button));
107 bool wasValid = isValid(); 107 bool wasValid = isValid();
108 if (button->checked()) { 108 if (button->checked()) {
109 setCheckedButton(button); 109 setCheckedButton(button);
110 } else { 110 } else {
111 if (m_checkedButton == button) 111 if (m_checkedButton == button)
112 m_checkedButton = nullptr; 112 m_checkedButton = nullptr;
113 } 113 }
114 if (wasValid != isValid()) 114 if (wasValid != isValid())
115 setNeedsValidityCheckForAllButtons(); 115 setNeedsValidityCheckForAllButtons();
116 typedef WillBeHeapHashSet<RawPtrWillBeMember<HTMLInputElement> >::const_iter ator Iterator; 116 for (HTMLInputElement* const inputElement : m_members) {
117 Iterator end = m_members.end(); 117 inputElement->pseudoStateChanged(CSSSelector::PseudoIndeterminate);
118 for (Iterator it = m_members.begin(); it != end; ++it) {
119 (*it)->pseudoStateChanged(CSSSelector::PseudoIndeterminate);
120 } 118 }
121 } 119 }
122 120
123 void RadioButtonGroup::requiredAttributeChanged(HTMLInputElement* button) 121 void RadioButtonGroup::requiredAttributeChanged(HTMLInputElement* button)
124 { 122 {
125 ASSERT(button->type() == InputTypeNames::radio); 123 ASSERT(button->type() == InputTypeNames::radio);
126 ASSERT(m_members.contains(button)); 124 ASSERT(m_members.contains(button));
127 bool wasValid = isValid(); 125 bool wasValid = isValid();
128 if (button->isRequired()) { 126 if (button->isRequired()) {
129 ++m_requiredCount; 127 ++m_requiredCount;
130 } else { 128 } else {
131 ASSERT(m_requiredCount); 129 ASSERT(m_requiredCount);
132 --m_requiredCount; 130 --m_requiredCount;
133 } 131 }
134 if (wasValid != isValid()) 132 if (wasValid != isValid())
135 setNeedsValidityCheckForAllButtons(); 133 setNeedsValidityCheckForAllButtons();
136 } 134 }
137 135
138 void RadioButtonGroup::remove(HTMLInputElement* button) 136 void RadioButtonGroup::remove(HTMLInputElement* button)
139 { 137 {
140 ASSERT(button->type() == InputTypeNames::radio); 138 ASSERT(button->type() == InputTypeNames::radio);
141 WillBeHeapHashSet<RawPtrWillBeMember<HTMLInputElement> >::iterator it = m_me mbers.find(button); 139 WillBeHeapHashSet<RawPtrWillBeMember<HTMLInputElement>>::iterator it = m_mem bers.find(button);
142 if (it == m_members.end()) 140 if (it == m_members.end())
143 return; 141 return;
144 bool wasValid = isValid(); 142 bool wasValid = isValid();
145 m_members.remove(it); 143 m_members.remove(it);
146 if (button->isRequired()) { 144 if (button->isRequired()) {
147 ASSERT(m_requiredCount); 145 ASSERT(m_requiredCount);
148 --m_requiredCount; 146 --m_requiredCount;
149 } 147 }
150 if (m_checkedButton == button) 148 if (m_checkedButton == button)
151 m_checkedButton = nullptr; 149 m_checkedButton = nullptr;
152 150
153 if (m_members.isEmpty()) { 151 if (m_members.isEmpty()) {
154 ASSERT(!m_requiredCount); 152 ASSERT(!m_requiredCount);
155 ASSERT(!m_checkedButton); 153 ASSERT(!m_checkedButton);
156 } else if (wasValid != isValid()) { 154 } else if (wasValid != isValid()) {
157 setNeedsValidityCheckForAllButtons(); 155 setNeedsValidityCheckForAllButtons();
158 } 156 }
159 if (!wasValid) { 157 if (!wasValid) {
160 // A radio button not in a group is always valid. We need to make it 158 // A radio button not in a group is always valid. We need to make it
161 // valid only if the group was invalid. 159 // valid only if the group was invalid.
162 button->setNeedsValidityCheck(); 160 button->setNeedsValidityCheck();
163 } 161 }
164 } 162 }
165 163
166 void RadioButtonGroup::setNeedsValidityCheckForAllButtons() 164 void RadioButtonGroup::setNeedsValidityCheckForAllButtons()
167 { 165 {
168 typedef WillBeHeapHashSet<RawPtrWillBeMember<HTMLInputElement> >::const_iter ator Iterator; 166 for (HTMLInputElement* const button : m_members) {
169 Iterator end = m_members.end();
170 for (Iterator it = m_members.begin(); it != end; ++it) {
171 HTMLInputElement* button = *it;
172 ASSERT(button->type() == InputTypeNames::radio); 167 ASSERT(button->type() == InputTypeNames::radio);
173 button->setNeedsValidityCheck(); 168 button->setNeedsValidityCheck();
174 } 169 }
175 } 170 }
176 171
177 bool RadioButtonGroup::contains(HTMLInputElement* button) const 172 bool RadioButtonGroup::contains(HTMLInputElement* button) const
178 { 173 {
179 return m_members.contains(button); 174 return m_members.contains(button);
180 } 175 }
181 176
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
237 if (!m_nameToGroupMap) 232 if (!m_nameToGroupMap)
238 return; 233 return;
239 RadioButtonGroup* group = m_nameToGroupMap->get(element->name()); 234 RadioButtonGroup* group = m_nameToGroupMap->get(element->name());
240 ASSERT(group); 235 ASSERT(group);
241 group->requiredAttributeChanged(element); 236 group->requiredAttributeChanged(element);
242 } 237 }
243 238
244 HTMLInputElement* RadioButtonGroupScope::checkedButtonForGroup(const AtomicStrin g& name) const 239 HTMLInputElement* RadioButtonGroupScope::checkedButtonForGroup(const AtomicStrin g& name) const
245 { 240 {
246 if (!m_nameToGroupMap) 241 if (!m_nameToGroupMap)
247 return 0; 242 return nullptr;
248 RadioButtonGroup* group = m_nameToGroupMap->get(name); 243 RadioButtonGroup* group = m_nameToGroupMap->get(name);
249 return group ? group->checkedButton() : 0; 244 return group ? group->checkedButton() : nullptr;
250 } 245 }
251 246
252 bool RadioButtonGroupScope::isInRequiredGroup(HTMLInputElement* element) const 247 bool RadioButtonGroupScope::isInRequiredGroup(HTMLInputElement* element) const
253 { 248 {
254 ASSERT(element->type() == InputTypeNames::radio); 249 ASSERT(element->type() == InputTypeNames::radio);
255 if (element->name().isEmpty()) 250 if (element->name().isEmpty())
256 return false; 251 return false;
257 if (!m_nameToGroupMap) 252 if (!m_nameToGroupMap)
258 return false; 253 return false;
259 RadioButtonGroup* group = m_nameToGroupMap->get(element->name()); 254 RadioButtonGroup* group = m_nameToGroupMap->get(element->name());
(...skipping 21 matching lines...) Expand all
281 } 276 }
282 277
283 void RadioButtonGroupScope::trace(Visitor* visitor) 278 void RadioButtonGroupScope::trace(Visitor* visitor)
284 { 279 {
285 #if ENABLE(OILPAN) 280 #if ENABLE(OILPAN)
286 visitor->trace(m_nameToGroupMap); 281 visitor->trace(m_nameToGroupMap);
287 #endif 282 #endif
288 } 283 }
289 284
290 } // namespace 285 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698