AtomicString FormKeyGenerator::formKey(const HTMLFormControlElementWithState& control) { HTMLFormElement* form = ownerFormForState(control); if (!form) { static NeverDestroyed<AtomicString> formKeyForNoOwner("No owner", AtomicString::ConstructFromLiteral); return formKeyForNoOwner; } FormToKeyMap::const_iterator it = m_formToKeyMap.find(form); if (it != m_formToKeyMap.end()) return it->value; String signature = formSignature(*form); ASSERT(!signature.isNull()); FormSignatureToNextIndexMap::AddResult result = m_formSignatureToNextIndexMap.add(signature, 0); unsigned nextIndex = result.iterator->value++; StringBuilder builder; builder.append(signature); builder.appendLiteral(" #"); builder.appendNumber(nextIndex); AtomicString formKey = builder.toAtomicString(); m_formToKeyMap.add(form, formKey); return formKey; }
AtomicString FormKeyGenerator::formKey(const HTMLFormControlElementWithState& control) { HTMLFormElement* form = ownerFormForState(control); if (!form) { DEFINE_STATIC_LOCAL(AtomicString, formKeyForNoOwner, ("No owner")); return formKeyForNoOwner; } FormToKeyMap::const_iterator it = m_formToKeyMap.find(form); if (it != m_formToKeyMap.end()) return it->second; String signature = formSignature(*form); ASSERT(!signature.isNull()); FormSignatureToNextIndexMap::AddResult result = m_formSignatureToNextIndexMap.add(signature, 0); unsigned nextIndex = result.iterator->second++; StringBuilder builder; builder.append(signature); builder.append(" #"); builder.append(String::number(nextIndex)); AtomicString formKey = builder.toAtomicString(); m_formToKeyMap.add(form, formKey); return formKey; }