mirror of
https://github.com/servo/servo.git
synced 2025-07-22 23:03:42 +01:00
Use safe JSContext in MicrotaskQueue
This commit is contained in:
parent
b18fa8b8a7
commit
6d444afd9e
4 changed files with 27 additions and 39 deletions
|
@ -14,9 +14,9 @@ use crate::dom::globalscope::GlobalScope;
|
|||
use crate::dom::htmlimageelement::ImageElementMicrotask;
|
||||
use crate::dom::htmlmediaelement::MediaElementMicrotask;
|
||||
use crate::dom::mutationobserver::MutationObserver;
|
||||
use crate::script_runtime::notify_about_rejected_promises;
|
||||
use crate::script_runtime::{notify_about_rejected_promises, JSContext};
|
||||
use crate::script_thread::ScriptThread;
|
||||
use js::jsapi::{JSContext, JobQueueIsEmpty, JobQueueMayNotBeEmpty};
|
||||
use js::jsapi::{JobQueueIsEmpty, JobQueueMayNotBeEmpty};
|
||||
use msg::constellation_msg::PipelineId;
|
||||
use std::cell::Cell;
|
||||
use std::mem;
|
||||
|
@ -56,17 +56,17 @@ impl MicrotaskQueue {
|
|||
/// Add a new microtask to this queue. It will be invoked as part of the next
|
||||
/// microtask checkpoint.
|
||||
#[allow(unsafe_code)]
|
||||
pub unsafe fn enqueue(&self, job: Microtask, cx: *mut JSContext) {
|
||||
pub fn enqueue(&self, job: Microtask, cx: JSContext) {
|
||||
self.microtask_queue.borrow_mut().push(job);
|
||||
JobQueueMayNotBeEmpty(cx);
|
||||
unsafe { JobQueueMayNotBeEmpty(*cx) };
|
||||
}
|
||||
|
||||
/// <https://html.spec.whatwg.org/multipage/#perform-a-microtask-checkpoint>
|
||||
/// Perform a microtask checkpoint, executing all queued microtasks until the queue is empty.
|
||||
#[allow(unsafe_code)]
|
||||
pub unsafe fn checkpoint<F>(
|
||||
pub fn checkpoint<F>(
|
||||
&self,
|
||||
cx: *mut JSContext,
|
||||
cx: JSContext,
|
||||
target_provider: F,
|
||||
globalscopes: Vec<DomRoot<GlobalScope>>,
|
||||
) where
|
||||
|
@ -86,7 +86,7 @@ impl MicrotaskQueue {
|
|||
|
||||
for (idx, job) in pending_queue.iter().enumerate() {
|
||||
if idx == pending_queue.len() - 1 && self.microtask_queue.borrow().is_empty() {
|
||||
JobQueueIsEmpty(cx);
|
||||
unsafe { JobQueueIsEmpty(*cx) };
|
||||
}
|
||||
|
||||
match *job {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue