From bb6c4d59d39aa2be8e6f52c6e8dfefc91aeb0864 Mon Sep 17 00:00:00 2001 From: Christian Pillsbury Date: Tue, 5 Dec 2023 11:33:37 -0800 Subject: [PATCH 1/5] feat(defaultduration): Add defaultduration to use before media is ready and loaded. --- src/js/controller.js | 10 +++++++++- src/js/media-controller.js | 5 ++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/js/controller.js b/src/js/controller.js index b6430aae2..44f699b9a 100644 --- a/src/js/controller.js +++ b/src/js/controller.js @@ -150,10 +150,18 @@ export const MediaUIStates = { MEDIA_DURATION: { get: function (controller) { const { media } = controller; + const defaultDuration = controller.hasAttribute('defaultduration') + ? +controller.getAttribute('defaultduration') + : NaN; // TODO: What if duration is infinity/live? (heff) if (!media || !Number.isFinite(media.duration)) { - return NaN; + return defaultDuration; + } + + // Apply defaultDuration if it's set and the media is not yet ready + if (!(media.readyState || Number.isNaN(defaultDuration))) { + return defaultDuration; } return media.duration; diff --git a/src/js/media-controller.js b/src/js/media-controller.js index 3767af267..8a8af2397 100644 --- a/src/js/media-controller.js +++ b/src/js/media-controller.js @@ -29,6 +29,7 @@ const DEFAULT_TIME = 0; export const Attributes = { DEFAULT_SUBTITLES: 'defaultsubtitles', DEFAULT_STREAM_TYPE: 'defaultstreamtype', + DEFAULT_DURATION: 'defaultduration', FULLSCREEN_ELEMENT: 'fullscreenelement', HOTKEYS: 'hotkeys', KEYS_USED: 'keysused', @@ -43,6 +44,7 @@ export const Attributes = { * * @attr {boolean} defaultsubtitles * @attr {string} defaultstreamtype + * @attr {string} defaultduration * @attr {string} fullscreenelement * @attr {boolean} nohotkeys * @attr {string} hotkeys @@ -56,7 +58,8 @@ class MediaController extends MediaContainer { Attributes.NO_HOTKEYS, Attributes.HOTKEYS, Attributes.DEFAULT_STREAM_TYPE, - Attributes.DEFAULT_SUBTITLES + Attributes.DEFAULT_SUBTITLES, + Attributes.DEFAULT_DURATION, ); } From 24ed9b5612e76562024c7249ff08548fd30a8dc8 Mon Sep 17 00:00:00 2001 From: Christian Pillsbury Date: Tue, 5 Dec 2023 11:34:27 -0800 Subject: [PATCH 2/5] chore(defaultduration): Update advanced usecase to use defaultduration. Can remove before merge if preferred. --- examples/vanilla/advanced.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/vanilla/advanced.html b/examples/vanilla/advanced.html index fd5766549..c7d710bc6 100644 --- a/examples/vanilla/advanced.html +++ b/examples/vanilla/advanced.html @@ -31,13 +31,14 @@

Media Chrome Advanced Video Usage Example

- +