Send MediaSessionEvent::PlaybackStateChange when needed

This commit is contained in:
Fernando Jiménez Moreno 2019-10-16 11:33:17 +02:00
parent 3f6569447d
commit 761f21fc8b

View file

@ -67,7 +67,7 @@ use crate::script_thread::ScriptThread;
use crate::task_source::TaskSource; use crate::task_source::TaskSource;
use dom_struct::dom_struct; use dom_struct::dom_struct;
use embedder_traits::resources::{self, Resource as EmbedderResource}; use embedder_traits::resources::{self, Resource as EmbedderResource};
use embedder_traits::{MediaMetadata, MediaSessionEvent}; use embedder_traits::{MediaMetadata, MediaSessionEvent, MediaSessionPlaybackState};
use euclid::default::Size2D; use euclid::default::Size2D;
use headers::{ContentLength, ContentRange, HeaderMapExt}; use headers::{ContentLength, ContentRange, HeaderMapExt};
use html5ever::{LocalName, Prefix}; use html5ever::{LocalName, Prefix};
@ -1792,13 +1792,27 @@ impl HTMLMediaElement {
}; };
ScriptThread::await_stable_state(Microtask::MediaElement(task)); ScriptThread::await_stable_state(Microtask::MediaElement(task));
}, },
PlayerEvent::StateChanged(ref state) => match *state { PlayerEvent::StateChanged(ref state) => {
PlaybackState::Paused => { let mut media_session_playback_state = MediaSessionPlaybackState::None_;
if self.ready_state.get() == ReadyState::HaveMetadata { match *state {
self.change_ready_state(ReadyState::HaveEnoughData); PlaybackState::Paused => {
} media_session_playback_state = MediaSessionPlaybackState::Paused;
}, if self.ready_state.get() == ReadyState::HaveMetadata {
_ => {}, self.change_ready_state(ReadyState::HaveEnoughData);
}
},
PlaybackState::Playing => {
media_session_playback_state = MediaSessionPlaybackState::Playing;
},
_ => {},
};
println!(
"Sending media session event playback state changed to {:?}",
media_session_playback_state
);
self.send_media_session_event(MediaSessionEvent::PlaybackStateChange(
media_session_playback_state,
));
}, },
} }
} }