LibWeb: Partially implement MediaSource.isTypeSupported()

This commit is contained in:
Jelle Raaijmakers 2024-11-26 13:46:29 +01:00 committed by Andreas Kling
commit 24069d55bf
Notes: github-actions[bot] 2024-11-26 22:51:58 +00:00
5 changed files with 200 additions and 1 deletions

View file

@ -8,6 +8,7 @@
#include <LibWeb/Bindings/MediaSourcePrototype.h>
#include <LibWeb/MediaSourceExtensions/EventNames.h>
#include <LibWeb/MediaSourceExtensions/MediaSource.h>
#include <LibWeb/MimeSniff/MimeType.h>
namespace Web::MediaSourceExtensions {
@ -67,4 +68,28 @@ GC::Ptr<WebIDL::CallbackType> MediaSource::onsourceclose()
return event_handler_attribute(EventNames::sourceclose);
}
// https://w3c.github.io/media-source/#dom-mediasource-istypesupported
bool MediaSource::is_type_supported(JS::VM&, String const& type)
{
// 1. If type is an empty string, then return false.
if (type.is_empty())
return false;
// 2. If type does not contain a valid MIME type string, then return false.
auto mime_type = MimeSniff::MimeType::parse(type);
if (!mime_type.has_value())
return false;
// FIXME: 3. If type contains a media type or media subtype that the MediaSource does not support, then
// return false.
// FIXME: 4. If type contains a codec that the MediaSource does not support, then return false.
// FIXME: 5. If the MediaSource does not support the specified combination of media type, media
// subtype, and codecs then return false.
// 6. Return true.
return true;
}
}

View file

@ -30,6 +30,8 @@ public:
void set_onsourceclose(GC::Ptr<WebIDL::CallbackType>);
GC::Ptr<WebIDL::CallbackType> onsourceclose();
static bool is_type_supported(JS::VM&, String const&);
protected:
MediaSource(JS::Realm&);

View file

@ -38,5 +38,5 @@ interface MediaSource : EventTarget {
[FIXME] undefined endOfStream(optional EndOfStreamError error);
[FIXME] undefined setLiveSeekableRange(double start, double end);
[FIXME] undefined clearLiveSeekableRange();
[FIXME] static boolean isTypeSupported(DOMString type);
static boolean isTypeSupported(DOMString type);
};