Procházet zdrojové kódy

LibWeb: Add HTML::NavigationParams

Andreas Kling před 3 roky
rodič
revize
0781bdb23e
1 změnil soubory, kde provedl 72 přidání a 0 odebrání
  1. 72 0
      Userland/Libraries/LibWeb/HTML/NavigationParams.h

+ 72 - 0
Userland/Libraries/LibWeb/HTML/NavigationParams.h

@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2022, Andreas Kling <kling@serenityos.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#pragma once
+
+#include <LibWeb/Fetch/Infrastructure/HTTP/Requests.h>
+#include <LibWeb/Fetch/Infrastructure/HTTP/Responses.h>
+#include <LibWeb/HTML/CrossOrigin/CrossOriginOpenerPolicy.h>
+#include <LibWeb/HTML/CrossOrigin/CrossOriginOpenerPolicyEnforcementResult.h>
+#include <LibWeb/HTML/Origin.h>
+#include <LibWeb/HTML/PolicyContainers.h>
+#include <LibWeb/HTML/SandboxingFlagSet.h>
+
+namespace Web::HTML {
+
+// https://html.spec.whatwg.org/multipage/browsing-the-web.html#history-handling-behavior
+enum class HistoryHandlingBehavior {
+    Default,
+    EntryUpdate,
+    Reload,
+    Replace,
+};
+
+// https://html.spec.whatwg.org/multipage/browsing-the-web.html#navigation-params
+struct NavigationParams {
+    // a navigation id
+    String id;
+
+    // null or a request that started the navigation
+    OwnPtr<Fetch::Infrastructure::Request> request;
+
+    // a response that ultimately was navigated to (potentially a network error)
+    NonnullOwnPtr<Fetch::Infrastructure::Response> response;
+
+    // an origin to use for the new Document
+    Origin origin;
+
+    // a policy container to use for the new Document
+    PolicyContainer policy_container;
+
+    // a sandboxing flag set to impose on the new Document
+    SandboxingFlagSet final_sandboxing_flag_set;
+
+    // a cross-origin opener policy to use for the new Document
+    CrossOriginOpenerPolicy cross_origin_opener_policy;
+
+    // a cross-origin opener policy enforcement result, used for reporting and potentially for causing a browsing context group switch
+    CrossOriginOpenerPolicyEnforcementResult coop_enforcement_result;
+
+    // null or an environment reserved for the new Document
+    Optional<Environment> reserved_environment;
+
+    // the browsing context to be navigated (or discarded, if a browsing context group switch occurs)
+    NonnullRefPtr<HTML::BrowsingContext> browsing_context;
+
+    // a history handling behavior
+    HistoryHandlingBehavior history_handling { HistoryHandlingBehavior::Default };
+
+    // a boolean
+    bool has_cross_origin_redirects { false };
+
+    // FIXME: an algorithm expecting a response
+    void* process_response_end_of_body { nullptr };
+
+    // FIXME: null or an algorithm accepting a Document, once it has been created
+    void* commit_early_hints { nullptr };
+};
+
+}