New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement mediasession set positon state #24885
Changes from all commits
274d4d2
3e83b0b
8bdee36
e268193
4d215c9
41ff93e
File filter...
Jump to…
| @@ -9,10 +9,13 @@ use crate::dom::bindings::codegen::Bindings::HTMLMediaElementBinding::HTMLMediaE | ||||
| use crate::dom::bindings::codegen::Bindings::MediaMetadataBinding::MediaMetadataInit; | ||||
| use crate::dom::bindings::codegen::Bindings::MediaMetadataBinding::MediaMetadataMethods; | ||||
| use crate::dom::bindings::codegen::Bindings::MediaSessionBinding; | ||||
| use crate::dom::bindings::codegen::Bindings::MediaSessionBinding::MediaPositionState; | ||||
| use crate::dom::bindings::codegen::Bindings::MediaSessionBinding::MediaSessionAction; | ||||
| use crate::dom::bindings::codegen::Bindings::MediaSessionBinding::MediaSessionActionHandler; | ||||
| use crate::dom::bindings::codegen::Bindings::MediaSessionBinding::MediaSessionMethods; | ||||
| use crate::dom::bindings::codegen::Bindings::MediaSessionBinding::MediaSessionPlaybackState; | ||||
| use crate::dom::bindings::error::{Error, Fallible}; | ||||
| use crate::dom::bindings::num::Finite; | ||||
| use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; | ||||
| use crate::dom::bindings::root::{DomRoot, MutNullableDom}; | ||||
| use crate::dom::bindings::str::DOMString; | ||||
| @@ -194,6 +197,62 @@ impl MediaSessionMethods for MediaSession { | ||||
| None => self.action_handlers.borrow_mut().remove(&action.into()), | ||||
| }; | ||||
| } | ||||
|
|
||||
| /// https://w3c.github.io/mediasession/#dom-mediasession-setpositionstate | ||||
| fn SetPositionState(&self, state: &MediaPositionState) -> Fallible<()> { | ||||
| // If the state is an empty dictionary then clear the position state. | ||||
| if state.duration.is_none() && state.position.is_none() && state.playbackRate.is_none() { | ||||
|
This conversation was marked as resolved
by jdm
shnmorimoto
Author
Contributor
|
||||
| if let Err(e) = player.lock().unwrap().stop() { |
| @@ -255,4 +255,15 @@ public void onMediaSessionPlaybackStateChange(int state) { | ||
| return; | ||
| } | ||
| } | ||
|
|
||
| @Override | ||
| public void onMediaSessionSetPositionState(float duration, float position, float playbackRate) { | ||
| Log.d("onMediaSessionSetPositionState", duration + " " + position + " " + playbackRate); | ||
| if (mMediaSession == null) { | ||
| mMediaSession = new MediaSession(mServoView, this, getApplicationContext()); | ||
| } | ||
|
|
||
| mMediaSession.setPositionState(duration, position, playbackRate); | ||
|
This conversation was marked as resolved
by ferjm
shnmorimoto
Author
Contributor
|
||
| return; | ||
| } | ||
| } | ||
This file was deleted.
I believe these do not need to be
Options