From 4c5a1763546a0ce71703fb89a7f89c968a7ac12f Mon Sep 17 00:00:00 2001 From: Jamie Mansfield Date: Wed, 4 Sep 2024 23:52:21 +0100 Subject: [PATCH] LibWeb: Stub MediaCapabilities IDL interface --- .../BindingsGenerator/IDLGenerators.cpp | 1 + .../Text/expected/all-window-properties.txt | 1 + Userland/Libraries/LibWeb/CMakeLists.txt | 1 + Userland/Libraries/LibWeb/Forward.h | 4 +++ .../MediaCapabilities.cpp | 32 +++++++++++++++++++ .../MediaCapabilitiesAPI/MediaCapabilities.h | 27 ++++++++++++++++ .../MediaCapabilities.idl | 6 ++++ Userland/Libraries/LibWeb/idl_files.cmake | 1 + 8 files changed, 73 insertions(+) create mode 100644 Userland/Libraries/LibWeb/MediaCapabilitiesAPI/MediaCapabilities.cpp create mode 100644 Userland/Libraries/LibWeb/MediaCapabilitiesAPI/MediaCapabilities.h create mode 100644 Userland/Libraries/LibWeb/MediaCapabilitiesAPI/MediaCapabilities.idl diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp index 69c0dedeb27..1c27d746544 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp @@ -4197,6 +4197,7 @@ static void generate_using_namespace_definitions(SourceGenerator& generator) using namespace Web::IndexedDB; using namespace Web::Internals; using namespace Web::IntersectionObserver; + using namespace Web::MediaCapabilitiesAPI; using namespace Web::NavigationTiming; using namespace Web::PerformanceTimeline; using namespace Web::RequestIdleCallback; diff --git a/Tests/LibWeb/Text/expected/all-window-properties.txt b/Tests/LibWeb/Text/expected/all-window-properties.txt index b46ac93d600..d19780bfb28 100644 --- a/Tests/LibWeb/Text/expected/all-window-properties.txt +++ b/Tests/LibWeb/Text/expected/all-window-properties.txt @@ -206,6 +206,7 @@ KeyframeEffect Location Map MathMLElement +MediaCapabilities MediaError MediaList MediaQueryList diff --git a/Userland/Libraries/LibWeb/CMakeLists.txt b/Userland/Libraries/LibWeb/CMakeLists.txt index e68bfefee2c..2bacaf65ea5 100644 --- a/Userland/Libraries/LibWeb/CMakeLists.txt +++ b/Userland/Libraries/LibWeb/CMakeLists.txt @@ -548,6 +548,7 @@ set(SOURCES Loader/ResourceLoader.cpp MathML/MathMLElement.cpp MathML/TagNames.cpp + MediaCapabilitiesAPI/MediaCapabilities.cpp MimeSniff/MimeType.cpp MimeSniff/Resource.cpp MixedContent/AbstractOperations.cpp diff --git a/Userland/Libraries/LibWeb/Forward.h b/Userland/Libraries/LibWeb/Forward.h index 3362b24a850..cbb554202e9 100644 --- a/Userland/Libraries/LibWeb/Forward.h +++ b/Userland/Libraries/LibWeb/Forward.h @@ -592,6 +592,10 @@ namespace Web::MathML { class MathMLElement; } +namespace Web::MediaCapabilitiesAPI { +class MediaCapabilities; +} + namespace Web::MimeSniff { class MimeType; } diff --git a/Userland/Libraries/LibWeb/MediaCapabilitiesAPI/MediaCapabilities.cpp b/Userland/Libraries/LibWeb/MediaCapabilitiesAPI/MediaCapabilities.cpp new file mode 100644 index 00000000000..1d262379b40 --- /dev/null +++ b/Userland/Libraries/LibWeb/MediaCapabilitiesAPI/MediaCapabilities.cpp @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2024, Jamie Mansfield + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include +#include +#include +#include + +namespace Web::MediaCapabilitiesAPI { + +JS_DEFINE_ALLOCATOR(MediaCapabilities); + +JS::NonnullGCPtr MediaCapabilities::create(JS::Realm& realm) +{ + return realm.heap().allocate(realm, realm); +} + +MediaCapabilities::MediaCapabilities(JS::Realm& realm) + : PlatformObject(realm) +{ +} + +void MediaCapabilities::initialize(JS::Realm& realm) +{ + Base::initialize(realm); + WEB_SET_PROTOTYPE_FOR_INTERFACE(MediaCapabilities); +} + +} diff --git a/Userland/Libraries/LibWeb/MediaCapabilitiesAPI/MediaCapabilities.h b/Userland/Libraries/LibWeb/MediaCapabilitiesAPI/MediaCapabilities.h new file mode 100644 index 00000000000..590b38e8f8e --- /dev/null +++ b/Userland/Libraries/LibWeb/MediaCapabilitiesAPI/MediaCapabilities.h @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2024, Jamie Mansfield + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include + +namespace Web::MediaCapabilitiesAPI { + +class MediaCapabilities final : public Bindings::PlatformObject { + WEB_PLATFORM_OBJECT(MediaCapabilities, Bindings::PlatformObject); + JS_DECLARE_ALLOCATOR(MediaCapabilities); + +public: + static JS::NonnullGCPtr create(JS::Realm&); + virtual ~MediaCapabilities() override = default; + +private: + MediaCapabilities(JS::Realm&); + + virtual void initialize(JS::Realm&) override; +}; + +} diff --git a/Userland/Libraries/LibWeb/MediaCapabilitiesAPI/MediaCapabilities.idl b/Userland/Libraries/LibWeb/MediaCapabilitiesAPI/MediaCapabilities.idl new file mode 100644 index 00000000000..e47203be647 --- /dev/null +++ b/Userland/Libraries/LibWeb/MediaCapabilitiesAPI/MediaCapabilities.idl @@ -0,0 +1,6 @@ +// https://w3c.github.io/media-capabilities/#mediacapabilities +[Exposed=(Window, Worker)] +interface MediaCapabilities { + [FIXME, NewObject] Promise decodingInfo(MediaDecodingConfiguration configuration); + [FIXME, NewObject] Promise encodingInfo(MediaEncodingConfiguration configuration); +}; diff --git a/Userland/Libraries/LibWeb/idl_files.cmake b/Userland/Libraries/LibWeb/idl_files.cmake index 795e5274efd..17d31fc1c83 100644 --- a/Userland/Libraries/LibWeb/idl_files.cmake +++ b/Userland/Libraries/LibWeb/idl_files.cmake @@ -242,6 +242,7 @@ libweb_js_bindings(Internals/Internals) libweb_js_bindings(IntersectionObserver/IntersectionObserver) libweb_js_bindings(IntersectionObserver/IntersectionObserverEntry) libweb_js_bindings(MathML/MathMLElement) +libweb_js_bindings(MediaCapabilitiesAPI/MediaCapabilities) libweb_js_bindings(NavigationTiming/PerformanceNavigation) libweb_js_bindings(NavigationTiming/PerformanceTiming) libweb_js_bindings(PerformanceTimeline/PerformanceEntry)