aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/script_thread.rs
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2019-11-20 12:31:29 -0500
committerGitHub <noreply@github.com>2019-11-20 12:31:29 -0500
commitf6348b8b54a1586b291bd4858df94050e05706c0 (patch)
tree4a1dd8e99f310609028b179b66f0eb74915b599e /components/script/script_thread.rs
parent7da8d75a7e2a1f07bd09b8fb03b404ce4392a2af (diff)
parent9f77ea11651f2d987d84e01e222f2382d525b868 (diff)
downloadservo-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.rs15
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() };