FormControlState DateTimeFieldsState::saveFormControlState() const { FormControlState state; state.append(hasYear() ? String::number(m_year) : emptyString()); state.append(hasMonth() ? String::number(m_month) : emptyString()); state.append(hasDayOfMonth() ? String::number(m_dayOfMonth) : emptyString()); state.append(hasHour() ? String::number(m_hour) : emptyString()); state.append(hasMinute() ? String::number(m_minute) : emptyString()); state.append(hasSecond() ? String::number(m_second) : emptyString()); state.append(hasMillisecond() ? String::number(m_millisecond) : emptyString()); state.append(hasWeekOfYear() ? String::number(m_weekOfYear) : emptyString()); if (hasAMPM()) state.append(m_ampm == AMPMValueAM ? "A" : "P"); else state.append(emptyString()); return state; }
FormControlState FileInputType::saveFormControlState() const { if (m_fileList->isEmpty()) return FormControlState(); FormControlState state; unsigned numFiles = m_fileList->length(); for (unsigned i = 0; i < numFiles; ++i) { state.append(m_fileList->item(i)->path()); state.append(m_fileList->item(i)->name()); } return state; }
FormControlState FileInputType::saveFormControlState() const { if (m_fileList->isEmpty()) return FormControlState(); FormControlState state; unsigned numFiles = m_fileList->length(); for (unsigned i = 0; i < numFiles; ++i) { if (m_fileList->item(i)->hasBackingFile()) { state.append(m_fileList->item(i)->path()); state.append(m_fileList->item(i)->name()); } // FIXME: handle Blob-backed File instances, see http://crbug.com/394948 } return state; }
FormControlState FormControlState::deserialize(const Vector<String>& stateVector, size_t& index) { if (index >= stateVector.size()) return FormControlState(TypeFailure); size_t valueSize = stateVector[index++].toUInt(); if (!valueSize) return FormControlState(); if (index + valueSize > stateVector.size()) return FormControlState(TypeFailure); FormControlState state; state.m_values.reserveCapacity(valueSize); for (size_t i = 0; i < valueSize; ++i) state.append(stateVector[index++]); return state; }