diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2019-11-20 12:31:29 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-20 12:31:29 -0500 |
commit | f6348b8b54a1586b291bd4858df94050e05706c0 (patch) | |
tree | 4a1dd8e99f310609028b179b66f0eb74915b599e /components/script/script_thread.rs | |
parent | 7da8d75a7e2a1f07bd09b8fb03b404ce4392a2af (diff) | |
parent | 9f77ea11651f2d987d84e01e222f2382d525b868 (diff) | |
download | servo-f6348b8b54a1586b291bd4858df94050e05706c0.tar.gz servo-f6348b8b54a1586b291bd4858df94050e05706c0.zip |
Auto merge of #24499 - ferjm:media.session.api, r=Manishearth
Media Session API
- [X] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #24172
- [x] There are tests for these changes
This PR introduces all the pieces required to prove an end to end media session flow with Android as a test platform.
Diffstat (limited to 'components/script/script_thread.rs')
-rw-r--r-- | components/script/script_thread.rs | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/components/script/script_thread.rs b/components/script/script_thread.rs index dbc4f0fb444..c0155ea63a5 100644 --- a/components/script/script_thread.rs +++ b/components/script/script_thread.rs @@ -138,7 +138,7 @@ use script_traits::{ DiscardBrowsingContext, DocumentActivity, EventResult, HistoryEntryReplacement, }; use script_traits::{InitialScriptState, JsEvalResult, LayoutMsg, LoadData, LoadOrigin}; -use script_traits::{MouseButton, MouseEventType, NewLayoutInfo}; +use script_traits::{MediaSessionActionType, MouseButton, MouseEventType, NewLayoutInfo}; use script_traits::{Painter, ProgressiveWebMetricType, ScriptMsg, ScriptThreadFactory}; use script_traits::{ScriptToConstellationChan, TimerEvent, TimerSchedulerMsg}; use script_traits::{TimerSource, TouchEventType, TouchId, UntrustedNodeAddress, WheelDelta}; @@ -1713,6 +1713,7 @@ impl ScriptThread { WebVREvents(id, ..) => Some(id), PaintMetric(..) => None, ExitFullScreen(id, ..) => Some(id), + MediaSessionAction(..) => None, } }, MixedMessage::FromDevtools(_) => None, @@ -1942,6 +1943,9 @@ impl ScriptThread { ConstellationControlMsg::PaintMetric(pipeline_id, metric_type, metric_value) => { self.handle_paint_metric(pipeline_id, metric_type, metric_value) }, + ConstellationControlMsg::MediaSessionAction(pipeline_id, action) => { + self.handle_media_session_action(pipeline_id, action) + }, msg @ ConstellationControlMsg::AttachLayout(..) | msg @ ConstellationControlMsg::Viewport(..) | msg @ ConstellationControlMsg::SetScrollState(..) | @@ -3925,6 +3929,15 @@ impl ScriptThread { } } + fn handle_media_session_action(&self, pipeline_id: PipelineId, action: MediaSessionActionType) { + if let Some(window) = self.documents.borrow().find_window(pipeline_id) { + let media_session = window.Navigator().MediaSession(); + media_session.handle_action(action); + } else { + warn!("No MediaSession for this pipeline ID"); + }; + } + pub fn enqueue_microtask(job: Microtask) { SCRIPT_THREAD_ROOT.with(|root| { let script_thread = unsafe { &*root.get().unwrap() }; |