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