void FormController::restoreControlStateIn(HTMLFormElement& form) { for (auto& element : form.associatedElements()) { if (!element->isFormControlElementWithState()) continue; HTMLFormControlElementWithState* control = static_cast<HTMLFormControlElementWithState*>(element); if (!control->shouldSaveAndRestoreFormControlState()) continue; if (ownerFormForState(*control) != &form) continue; FormControlState state = takeStateForFormElement(*control); if (state.valueSize() > 0) control->restoreFormControlState(state); } }
void FormController::restoreControlStateIn(HTMLFormElement& form) { const Vector<FormAssociatedElement*>& elements = form.associatedElements(); for (size_t i = 0; i < elements.size(); ++i) { if (!elements[i]->isFormControlElementWithState()) continue; HTMLFormControlElementWithState* control = static_cast<HTMLFormControlElementWithState*>(elements[i]); if (!control->shouldSaveAndRestoreFormControlState()) continue; if (ownerFormForState(*control) != &form) continue; FormControlState state = takeStateForFormElement(*control); if (state.valueSize() > 0) control->restoreFormControlState(state); } }
static inline void recordFormStructure(const HTMLFormElement& form, StringBuilder& builder) { // 2 is enough to distinguish forms in webkit.org/b/91209#c0 const size_t namedControlsToBeRecorded = 2; const Vector<FormAssociatedElement*>& controls = form.associatedElements(); builder.appendLiteral(" ["); for (size_t i = 0, namedControls = 0; i < controls.size() && namedControls < namedControlsToBeRecorded; ++i) { if (!controls[i]->isFormControlElementWithState()) continue; HTMLFormControlElementWithState* control = static_cast<HTMLFormControlElementWithState*>(controls[i]); if (!ownerFormForState(*control)) continue; AtomicString name = control->name(); if (name.isEmpty()) continue; namedControls++; builder.append(name); builder.append(' '); } builder.append(']'); }