static void applyFrameState(HistoryItem& historyItem, const FrameState& frameState) { historyItem.setOriginalURLString(frameState.originalURLString); historyItem.setReferrer(frameState.referrer); historyItem.setTarget(frameState.target); historyItem.setDocumentState(frameState.documentState); if (frameState.stateObjectData) { Vector<uint8_t> stateObjectData = frameState.stateObjectData.value(); historyItem.setStateObject(SerializedScriptValue::adopt(stateObjectData)); } historyItem.setDocumentSequenceNumber(frameState.documentSequenceNumber); historyItem.setItemSequenceNumber(frameState.itemSequenceNumber); historyItem.setScrollPoint(frameState.scrollPoint); historyItem.setPageScaleFactor(frameState.pageScaleFactor); if (frameState.httpBody) { const auto& httpBody = frameState.httpBody.value(); historyItem.setFormContentType(httpBody.contentType); historyItem.setFormData(toFormData(httpBody)); } #if PLATFORM(IOS) historyItem.setExposedContentRect(frameState.exposedContentRect); historyItem.setUnobscuredContentRect(frameState.unobscuredContentRect); historyItem.setMinimumLayoutSizeInScrollViewCoordinates(frameState.minimumLayoutSizeInScrollViewCoordinates); historyItem.setContentSize(frameState.contentSize); historyItem.setScaleIsInitial(frameState.scaleIsInitial); #endif for (const auto& childFrameState : frameState.children) { Ref<HistoryItem> childHistoryItem = HistoryItem::create(childFrameState.urlString, String()); applyFrameState(childHistoryItem, childFrameState); historyItem.addChildItem(WTF::move(childHistoryItem)); } }