diff --git a/Userland/Libraries/LibWeb/HTML/CrossOrigin/CrossOriginOpenerPolicy.h b/Userland/Libraries/LibWeb/HTML/CrossOrigin/CrossOriginOpenerPolicy.h
new file mode 100644
index 0000000000..d17f40f2a7
--- /dev/null
+++ b/Userland/Libraries/LibWeb/HTML/CrossOrigin/CrossOriginOpenerPolicy.h
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2022, Andreas Kling
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#pragma once
+
+namespace Web::HTML {
+
+// https://html.spec.whatwg.org/multipage/origin.html#cross-origin-opener-policy-value
+enum class CrossOriginOpenerPolicyValue {
+ UnsafeNone,
+ SameOriginAllowPopups,
+ SameOrigin,
+ SameOriginPlusCOEP,
+};
+
+// https://html.spec.whatwg.org/multipage/origin.html#cross-origin-opener-policy
+struct CrossOriginOpenerPolicy {
+ // A value, which is a cross-origin opener policy value, initially "unsafe-none".
+ CrossOriginOpenerPolicyValue value { CrossOriginOpenerPolicyValue::UnsafeNone };
+
+ // A reporting endpoint, which is string or null, initially null.
+ Optional reporting_endpoint;
+
+ // A report-only value, which is a cross-origin opener policy value, initially "unsafe-none".
+ CrossOriginOpenerPolicyValue report_only_value { CrossOriginOpenerPolicyValue::UnsafeNone };
+
+ // A report-only reporting endpoint, which is a string or null, initially null.
+ Optional report_only_reporting_endpoint;
+};
+
+}