media element: support seekable attribute (#36541)

support seekable attribute in `htmlmediaelement`, modify `seek`
algorithm to use `seekable` attribute.

related
[specs](https://html.spec.whatwg.org/multipage/media.html#dom-media-seekable)
Testing: Run WPT Test
Fixes: https://github.com/servo/servo/issues/22297

Will wait for https://github.com/servo/media/pull/435 before turning
this to ready for review.
cc @jdm @xiaochengh

Signed-off-by: rayguo17 <rayguo17@gmail.com>
This commit is contained in:
TIN TUN AUNG 2025-04-16 13:52:19 +08:00 committed by GitHub
parent 15199ba2ef
commit f5e6eb289a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 59 additions and 39 deletions

24
Cargo.lock generated
View file

@ -6600,7 +6600,7 @@ dependencies = [
[[package]]
name = "servo-media"
version = "0.1.0"
source = "git+https://github.com/servo/media#c7eab1ae326b8b95b938741660553342f7cd94b7"
source = "git+https://github.com/servo/media#eb96030cdd153ebcbbe3836dc6471303187740e9"
dependencies = [
"once_cell",
"servo-media-audio",
@ -6613,7 +6613,7 @@ dependencies = [
[[package]]
name = "servo-media-audio"
version = "0.2.0"
source = "git+https://github.com/servo/media#c7eab1ae326b8b95b938741660553342f7cd94b7"
source = "git+https://github.com/servo/media#eb96030cdd153ebcbbe3836dc6471303187740e9"
dependencies = [
"byte-slice-cast",
"euclid",
@ -6634,7 +6634,7 @@ dependencies = [
[[package]]
name = "servo-media-derive"
version = "0.1.0"
source = "git+https://github.com/servo/media#c7eab1ae326b8b95b938741660553342f7cd94b7"
source = "git+https://github.com/servo/media#eb96030cdd153ebcbbe3836dc6471303187740e9"
dependencies = [
"proc-macro2",
"quote",
@ -6644,7 +6644,7 @@ dependencies = [
[[package]]
name = "servo-media-dummy"
version = "0.1.0"
source = "git+https://github.com/servo/media#c7eab1ae326b8b95b938741660553342f7cd94b7"
source = "git+https://github.com/servo/media#eb96030cdd153ebcbbe3836dc6471303187740e9"
dependencies = [
"ipc-channel",
"servo-media",
@ -6658,7 +6658,7 @@ dependencies = [
[[package]]
name = "servo-media-gstreamer"
version = "0.1.0"
source = "git+https://github.com/servo/media#c7eab1ae326b8b95b938741660553342f7cd94b7"
source = "git+https://github.com/servo/media#eb96030cdd153ebcbbe3836dc6471303187740e9"
dependencies = [
"byte-slice-cast",
"glib",
@ -6691,7 +6691,7 @@ dependencies = [
[[package]]
name = "servo-media-gstreamer-render"
version = "0.1.0"
source = "git+https://github.com/servo/media#c7eab1ae326b8b95b938741660553342f7cd94b7"
source = "git+https://github.com/servo/media#eb96030cdd153ebcbbe3836dc6471303187740e9"
dependencies = [
"gstreamer",
"gstreamer-video",
@ -6701,7 +6701,7 @@ dependencies = [
[[package]]
name = "servo-media-gstreamer-render-android"
version = "0.1.0"
source = "git+https://github.com/servo/media#c7eab1ae326b8b95b938741660553342f7cd94b7"
source = "git+https://github.com/servo/media#eb96030cdd153ebcbbe3836dc6471303187740e9"
dependencies = [
"glib",
"gstreamer",
@ -6715,7 +6715,7 @@ dependencies = [
[[package]]
name = "servo-media-gstreamer-render-unix"
version = "0.1.0"
source = "git+https://github.com/servo/media#c7eab1ae326b8b95b938741660553342f7cd94b7"
source = "git+https://github.com/servo/media#eb96030cdd153ebcbbe3836dc6471303187740e9"
dependencies = [
"glib",
"gstreamer",
@ -6730,7 +6730,7 @@ dependencies = [
[[package]]
name = "servo-media-player"
version = "0.1.0"
source = "git+https://github.com/servo/media#c7eab1ae326b8b95b938741660553342f7cd94b7"
source = "git+https://github.com/servo/media#eb96030cdd153ebcbbe3836dc6471303187740e9"
dependencies = [
"ipc-channel",
"serde",
@ -6742,7 +6742,7 @@ dependencies = [
[[package]]
name = "servo-media-streams"
version = "0.1.0"
source = "git+https://github.com/servo/media#c7eab1ae326b8b95b938741660553342f7cd94b7"
source = "git+https://github.com/servo/media#eb96030cdd153ebcbbe3836dc6471303187740e9"
dependencies = [
"uuid",
]
@ -6750,12 +6750,12 @@ dependencies = [
[[package]]
name = "servo-media-traits"
version = "0.1.0"
source = "git+https://github.com/servo/media#c7eab1ae326b8b95b938741660553342f7cd94b7"
source = "git+https://github.com/servo/media#eb96030cdd153ebcbbe3836dc6471303187740e9"
[[package]]
name = "servo-media-webrtc"
version = "0.1.0"
source = "git+https://github.com/servo/media#c7eab1ae326b8b95b938741660553342f7cd94b7"
source = "git+https://github.com/servo/media#eb96030cdd153ebcbbe3836dc6471303187740e9"
dependencies = [
"log",
"servo-media-streams",