void RadioButtonGroup::remove(HTMLInputElement* button) { ASSERT(button->type() == InputTypeNames::radio); WillBeHeapHashSet<RawPtrWillBeMember<HTMLInputElement>>::iterator it = m_members.find(button); if (it == m_members.end()) return; bool wasValid = isValid(); m_members.remove(it); if (button->isRequired()) { ASSERT(m_requiredCount); --m_requiredCount; } if (m_checkedButton == button) m_checkedButton = nullptr; if (m_members.isEmpty()) { ASSERT(!m_requiredCount); ASSERT(!m_checkedButton); } else if (wasValid != isValid()) { setNeedsValidityCheckForAllButtons(); } if (!wasValid) { // A radio button not in a group is always valid. We need to make it // valid only if the group was invalid. button->setNeedsValidityCheck(); } }
void RadioButtonGroup::setNeedsValidityCheckForAllButtons() { typedef WillBeHeapHashSet<RawPtrWillBeMember<HTMLInputElement> >::const_iterator Iterator; Iterator end = m_members.end(); for (Iterator it = m_members.begin(); it != end; ++it) { HTMLInputElement* button = *it; ASSERT(button->isRadioButton()); button->setNeedsValidityCheck(); } }
static void removeFontFaceRules(WillBeHeapHashSet<RawPtrWillBeWeakMember<CSSStyleSheet> >& clients, const StyleRuleFontFace* fontFaceRule) { for (WillBeHeapHashSet<RawPtrWillBeWeakMember<CSSStyleSheet> >::iterator it = clients.begin(); it != clients.end(); ++it) { if (Node* ownerNode = (*it)->ownerNode()) ownerNode->document().styleEngine()->removeFontFaceRules(WillBeHeapVector<RawPtrWillBeMember<const StyleRuleFontFace> >(1, fontFaceRule)); } }
static void clearResolvers(WillBeHeapHashSet<RawPtrWillBeWeakMember<CSSStyleSheet> >& clients) { for (WillBeHeapHashSet<RawPtrWillBeWeakMember<CSSStyleSheet> >::iterator it = clients.begin(); it != clients.end(); ++it) { if (Document* document = (*it)->ownerDocument()) document->styleEngine()->clearResolver(); } }
void V8MutationObserver::visitDOMWrapper(v8::Isolate* isolate, ScriptWrappable* scriptWrappable, const v8::Persistent<v8::Object>& wrapper) { MutationObserver* observer = scriptWrappable->toImpl<MutationObserver>(); WillBeHeapHashSet<RawPtrWillBeMember<Node>> observedNodes = observer->getObservedNodes(); for (WillBeHeapHashSet<RawPtrWillBeMember<Node>>::iterator it = observedNodes.begin(); it != observedNodes.end(); ++it) { v8::UniqueId id(reinterpret_cast<intptr_t>(V8GCController::opaqueRootForGC(isolate, *it))); isolate->SetReferenceFromGroup(id, wrapper); } }