void RadioButtonGroup::remove(HTMLInputElement* button) {
  DCHECK_EQ(button->type(), InputTypeNames::radio);
  auto it = m_members.find(button);
  if (it == m_members.end())
    return;
  bool wasValid = isValid();
  DCHECK_EQ(it->value, button->isRequired());
  updateRequiredButton(*it, false);
  m_members.remove(it);
  if (m_checkedButton == button)
    m_checkedButton = nullptr;

  if (m_members.isEmpty()) {
    DCHECK(!m_requiredCount);
    DCHECK(!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();
  }

  // Send notification to update AX attributes for AXObjects which radiobutton
  // group has.
  if (!m_members.isEmpty()) {
    HTMLInputElement* input = m_members.begin()->key;
    if (AXObjectCache* cache = input->document().existingAXObjectCache())
      cache->radiobuttonRemovedFromGroup(input);
  }
}
void RadioButtonGroup::requiredAttributeChanged(HTMLInputElement* button) {
  DCHECK_EQ(button->type(), InputTypeNames::radio);
  auto it = m_members.find(button);
  DCHECK_NE(it, m_members.end());
  bool wasValid = isValid();
  // Synchronize the 'required' flag for the button, along with
  // updating the overall count.
  updateRequiredButton(*it, button->isRequired());
  if (wasValid != isValid())
    setNeedsValidityCheckForAllButtons();
}
Exemple #3
0
int main() {
#if 0
	SipProtocol protocol;
	protocol.buildRequestHeader("[email protected]", //user
								"192.168.80.111",	//from
								"192.168.80.125",	//to
								"192.168.80.125",	//via
								"1"	,				//cseq
								"qega444afa4g6aga4g"//call-id
								);
	waitForCall(&protocol);
	protocol.dumpProperties();
#endif
	DisableCompare<CppString> discom;
	Members val;

	val.insert(pair<CppString, int>("key1", 1));
	val.insert(pair<CppString, int>("key2", 2));

	Members::iterator iter;
	for(iter = val.begin(); iter != val.end(); iter++) {
		cout << iter->first << endl;
	}
}