aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/htmlmediaelement.rs
diff options
context:
space:
mode:
authorJosh Matthews <josh@joshmatthews.net>2023-02-18 14:07:36 -0500
committerJosh Matthews <josh@joshmatthews.net>2023-05-20 14:30:22 -0400
commit864e072d5cd86c798349a69cbd9a352bd122aa73 (patch)
tree5d72a395d1af0375496b9242c5552835185752ed /components/script/dom/htmlmediaelement.rs
parent9ea1399c306af8f212e81c3dedd9601aa4fe821f (diff)
downloadservo-864e072d5cd86c798349a69cbd9a352bd122aa73.tar.gz
servo-864e072d5cd86c798349a69cbd9a352bd122aa73.zip
Enter realms more consistently during the script event loop.
Diffstat (limited to 'components/script/dom/htmlmediaelement.rs')
-rw-r--r--components/script/dom/htmlmediaelement.rs11
1 files changed, 10 insertions, 1 deletions
diff --git a/components/script/dom/htmlmediaelement.rs b/components/script/dom/htmlmediaelement.rs
index 515ead5c228..5eb9f709838 100644
--- a/components/script/dom/htmlmediaelement.rs
+++ b/components/script/dom/htmlmediaelement.rs
@@ -62,7 +62,7 @@ use crate::dom::virtualmethods::VirtualMethods;
use crate::fetch::{create_a_potential_cors_request, FetchCanceller};
use crate::microtask::{Microtask, MicrotaskRunnable};
use crate::network_listener::{self, NetworkListener, PreInvoke, ResourceTimingListener};
-use crate::realms::InRealm;
+use crate::realms::{enter_realm, InRealm};
use crate::script_thread::ScriptThread;
use crate::task_source::TaskSource;
use dom_struct::dom_struct;
@@ -74,6 +74,7 @@ use html5ever::{LocalName, Prefix};
use http::header::{self, HeaderMap, HeaderValue};
use ipc_channel::ipc;
use ipc_channel::router::ROUTER;
+use js::jsapi::JSAutoRealm;
use media::{glplayer_channel, GLPlayerMsg, GLPlayerMsgForward, WindowGLContext};
use net_traits::image::base::Image;
use net_traits::request::Destination;
@@ -2506,6 +2507,14 @@ impl MicrotaskRunnable for MediaElementMicrotask {
},
}
}
+
+ fn enter_realm(&self) -> JSAutoRealm {
+ match self {
+ &MediaElementMicrotask::ResourceSelectionTask { ref elem, .. } |
+ &MediaElementMicrotask::PauseIfNotInDocumentTask { ref elem } |
+ &MediaElementMicrotask::SeekedTask { ref elem, .. } => enter_realm(&**elem),
+ }
+ }
}
enum Resource {