Browse Source

LibWeb: Add missing properties from latest spec in SessionHistoryEntry

Adds step and document_state properties. Both will be required for
further navigables spec implementation.

Co-authored-by: Andreas Kling <kling@serenityos.org>
Aliaksandr Kalenik 2 years ago
parent
commit
aa33a3381b

+ 3 - 2
Userland/Libraries/LibWeb/HTML/SessionHistoryEntry.cpp

@@ -4,7 +4,8 @@
  * SPDX-License-Identifier: BSD-2-Clause
  */
 
-#include <LibWeb/DOM/Document.h>
+#include <LibWeb/HTML/BrowsingContext.h>
+#include <LibWeb/HTML/DocumentState.h>
 #include <LibWeb/HTML/SessionHistoryEntry.h>
 
 namespace Web::HTML {
@@ -12,7 +13,7 @@ namespace Web::HTML {
 void SessionHistoryEntry::visit_edges(Cell::Visitor& visitor)
 {
     Base::visit_edges(visitor);
-    visitor.visit(document);
+    visitor.visit(document_state);
     visitor.visit(original_source_browsing_context);
 }
 

+ 12 - 4
Userland/Libraries/LibWeb/HTML/SessionHistoryEntry.h

@@ -36,22 +36,30 @@ struct SessionHistoryEntry final : public JS::Cell {
     AK::URL url;
 
     // document, a Document or null
+    // FIXME: this property is not present in the spec anymore and should be gone after introducing navigables
     JS::GCPtr<DOM::Document> document;
 
-    // serialized state, which is serialized state or null, initially null
-    Optional<DeprecatedString> serialized_state;
+    // https://html.spec.whatwg.org/multipage/browsing-the-web.html#she-document-state
+    JS::GCPtr<HTML::DocumentState> document_state;
 
-    // policy container, a policy container or null
-    Optional<PolicyContainer> policy_container;
+    // https://html.spec.whatwg.org/multipage/browsing-the-web.html#she-serialized-state
+    // serialized state, which is serialized state, initially StructuredSerializeForStorage(null).
+    Optional<DeprecatedString> serialized_state;
 
+    // https://html.spec.whatwg.org/multipage/browsing-the-web.html#she-scroll-restoration-mode
     // scroll restoration mode, a scroll restoration mode, initially "auto"
     ScrollRestorationMode scroll_restoration_mode { ScrollRestorationMode::Auto };
 
+    // policy container, a policy container or null
+    Optional<PolicyContainer> policy_container;
+
+    // https://html.spec.whatwg.org/multipage/browsing-the-web.html#she-scroll-position
     // FIXME: scroll position data, which is scroll position data for the document's restorable scrollable regions
 
     // browsing context name, a browsing context name or null, initially null
     Optional<DeprecatedString> browsing_context_name;
 
+    // https://html.spec.whatwg.org/multipage/browsing-the-web.html#she-other
     // FIXME: persisted user state, which is implementation-defined, initially null
     // NOTE: This is where we could remember the state of form controls, for example.