diff --git a/Userland/Libraries/LibWeb/HTML/Navigator.cpp b/Userland/Libraries/LibWeb/HTML/Navigator.cpp
index 9c0f2d15630..dba3531ef4b 100644
--- a/Userland/Libraries/LibWeb/HTML/Navigator.cpp
+++ b/Userland/Libraries/LibWeb/HTML/Navigator.cpp
@@ -1,6 +1,7 @@
/*
* Copyright (c) 2022, Andrew Kaster
* Copyright (c) 2022, Linus Groh
+ * Copyright (c) 2024, Jamie Mansfield
*
* SPDX-License-Identifier: BSD-2-Clause
*/
@@ -66,6 +67,7 @@ void Navigator::visit_edges(Cell::Visitor& visitor)
visitor.visit(m_clipboard);
visitor.visit(m_user_activation);
visitor.visit(m_service_worker_container);
+ visitor.visit(m_media_capabilities);
}
JS::NonnullGCPtr Navigator::mime_types()
@@ -122,4 +124,11 @@ JS::NonnullGCPtr Navigator::service_worker()
return *m_service_worker_container;
}
+JS::NonnullGCPtr Navigator::media_capabilities()
+{
+ if (!m_media_capabilities)
+ m_media_capabilities = heap().allocate(realm(), realm());
+ return *m_media_capabilities;
+}
+
}
diff --git a/Userland/Libraries/LibWeb/HTML/Navigator.h b/Userland/Libraries/LibWeb/HTML/Navigator.h
index de5703ba2cb..e48061e096f 100644
--- a/Userland/Libraries/LibWeb/HTML/Navigator.h
+++ b/Userland/Libraries/LibWeb/HTML/Navigator.h
@@ -15,6 +15,7 @@
#include
#include
#include
+#include
#include
namespace Web::HTML {
@@ -56,6 +57,8 @@ public:
JS::NonnullGCPtr service_worker();
+ JS::NonnullGCPtr media_capabilities();
+
static WebIDL::Long max_touch_points();
virtual ~Navigator() override;
@@ -82,6 +85,9 @@ private:
// https://w3c.github.io/ServiceWorker/#navigator-serviceworker
JS::GCPtr m_service_worker_container;
+
+ // https://w3c.github.io/media-capabilities/#dom-navigator-mediacapabilities
+ JS::GCPtr m_media_capabilities;
};
}
diff --git a/Userland/Libraries/LibWeb/HTML/Navigator.idl b/Userland/Libraries/LibWeb/HTML/Navigator.idl
index 92655d8189a..94f31502a87 100644
--- a/Userland/Libraries/LibWeb/HTML/Navigator.idl
+++ b/Userland/Libraries/LibWeb/HTML/Navigator.idl
@@ -8,6 +8,7 @@
#import
#import
#import
+#import
#import
// https://html.spec.whatwg.org/multipage/system-state.html#navigator
@@ -29,6 +30,9 @@ interface Navigator {
// https://w3c.github.io/ServiceWorker/#navigator-serviceworker
[SecureContext, SameObject] readonly attribute ServiceWorkerContainer serviceWorker;
+
+ // https://w3c.github.io/media-capabilities/#dom-navigator-mediacapabilities
+ [SameObject] readonly attribute MediaCapabilities mediaCapabilities;
};
// NOTE: As NavigatorContentUtils, NavigatorCookies, NavigatorPlugins, and NavigatorAutomationInformation