1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 19:17:44 +00:00

LibWeb: Stub out the HTML TimeRanges IDL interface

This is used by media elements. Provide a stub for websites which depend
on the interface existing.
This commit is contained in:
Timothy Flynn 2023-04-18 16:19:37 -04:00 committed by Andreas Kling
parent 6f47c53ff9
commit 680a9f748e
6 changed files with 88 additions and 0 deletions

View file

@ -346,6 +346,7 @@ set(SOURCES
HTML/TagNames.cpp HTML/TagNames.cpp
HTML/TextMetrics.cpp HTML/TextMetrics.cpp
HTML/Timer.cpp HTML/Timer.cpp
HTML/TimeRanges.cpp
HTML/TrackEvent.cpp HTML/TrackEvent.cpp
HTML/VideoTrack.cpp HTML/VideoTrack.cpp
HTML/VideoTrackList.cpp HTML/VideoTrackList.cpp

View file

@ -381,6 +381,7 @@ class Storage;
class SubmitEvent; class SubmitEvent;
class TextMetrics; class TextMetrics;
class Timer; class Timer;
class TimeRanges;
class TrackEvent; class TrackEvent;
class VideoTrack; class VideoTrack;
class VideoTrackList; class VideoTrackList;

View file

@ -0,0 +1,50 @@
/*
* Copyright (c) 2023, Tim Flynn <trflynn89@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <LibJS/Runtime/Realm.h>
#include <LibWeb/Bindings/Intrinsics.h>
#include <LibWeb/Bindings/TimeRangesPrototype.h>
#include <LibWeb/HTML/TimeRanges.h>
namespace Web::HTML {
TimeRanges::TimeRanges(JS::Realm& realm)
: Base(realm)
{
}
JS::ThrowCompletionOr<void> TimeRanges::initialize(JS::Realm& realm)
{
MUST_OR_THROW_OOM(Base::initialize(realm));
set_prototype(&Bindings::ensure_web_prototype<Bindings::TimeRangesPrototype>(realm, "TimeRanges"));
return {};
}
// https://html.spec.whatwg.org/multipage/media.html#dom-timeranges-length
size_t TimeRanges::length() const
{
// FIXME: The length IDL attribute must return the number of ranges represented by the object.
return 0;
}
// https://html.spec.whatwg.org/multipage/media.html#dom-timeranges-start
double TimeRanges::start(u32) const
{
// FIXME: The start(index) method must return the position of the start of the indexth range represented by the object,
// in seconds measured from the start of the timeline that the object covers.
return 0.0;
}
// https://html.spec.whatwg.org/multipage/media.html#dom-timeranges-end
double TimeRanges::end(u32) const
{
// FIXME: The end(index) method must return the position of the end of the indexth range represented by the object,
// in seconds measured from the start of the timeline that the object covers.
return 0.0;
}
}

View file

@ -0,0 +1,28 @@
/*
* Copyright (c) 2023, Tim Flynn <trflynn89@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <LibJS/Forward.h>
#include <LibWeb/Bindings/PlatformObject.h>
namespace Web::HTML {
class TimeRanges final : public Bindings::PlatformObject {
WEB_PLATFORM_OBJECT(TimeRanges, Bindings::PlatformObject);
public:
size_t length() const;
double start(u32 index) const;
double end(u32 index) const;
private:
explicit TimeRanges(JS::Realm&);
virtual JS::ThrowCompletionOr<void> initialize(JS::Realm&) override;
};
}

View file

@ -0,0 +1,7 @@
// https://html.spec.whatwg.org/multipage/media.html#timeranges
[Exposed=Window]
interface TimeRanges {
readonly attribute unsigned long length;
double start(unsigned long index);
double end(unsigned long index);
};

View file

@ -165,6 +165,7 @@ libweb_js_bindings(HTML/PromiseRejectionEvent)
libweb_js_bindings(HTML/Storage) libweb_js_bindings(HTML/Storage)
libweb_js_bindings(HTML/SubmitEvent) libweb_js_bindings(HTML/SubmitEvent)
libweb_js_bindings(HTML/TextMetrics) libweb_js_bindings(HTML/TextMetrics)
libweb_js_bindings(HTML/TimeRanges)
libweb_js_bindings(HTML/TrackEvent) libweb_js_bindings(HTML/TrackEvent)
libweb_js_bindings(HTML/VideoTrack) libweb_js_bindings(HTML/VideoTrack)
libweb_js_bindings(HTML/VideoTrackList) libweb_js_bindings(HTML/VideoTrackList)