|
@@ -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 };
|
|
|
+};
|
|
|
+
|
|
|
+}
|