1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 23:47:45 +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

@ -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);
};