mirror of
https://github.com/servo/servo.git
synced 2025-06-19 22:59:03 +01:00
Implement MicrotaskRunnable
for DefaultTeeReadRequestMicrotask
(#37404)
Implement `MicrotaskRunnable` for `DefaultTeeReadRequestMicrotask` to run the microtask, instead of using its own ad-hoc mechanism via `DefaultTeeReadRequestMicrotask::microtask_chunk_steps`. Testing: No need for this refactoring. Fixes: #37246 --------- Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
This commit is contained in:
parent
41bed9840a
commit
b28e796647
2 changed files with 13 additions and 6 deletions
|
@ -6,7 +6,7 @@ use std::cell::Cell;
|
||||||
use std::rc::Rc;
|
use std::rc::Rc;
|
||||||
|
|
||||||
use dom_struct::dom_struct;
|
use dom_struct::dom_struct;
|
||||||
use js::jsapi::Heap;
|
use js::jsapi::{Heap, JSAutoRealm};
|
||||||
use js::jsval::{JSVal, UndefinedValue};
|
use js::jsval::{JSVal, UndefinedValue};
|
||||||
use js::rust::HandleValue as SafeHandleValue;
|
use js::rust::HandleValue as SafeHandleValue;
|
||||||
|
|
||||||
|
@ -20,7 +20,8 @@ use crate::dom::defaultteeunderlyingsource::DefaultTeeUnderlyingSource;
|
||||||
use crate::dom::globalscope::GlobalScope;
|
use crate::dom::globalscope::GlobalScope;
|
||||||
use crate::dom::promise::Promise;
|
use crate::dom::promise::Promise;
|
||||||
use crate::dom::readablestream::ReadableStream;
|
use crate::dom::readablestream::ReadableStream;
|
||||||
use crate::microtask::Microtask;
|
use crate::microtask::{Microtask, MicrotaskRunnable};
|
||||||
|
use crate::realms::enter_realm;
|
||||||
use crate::script_runtime::{CanGc, JSContext as SafeJSContext};
|
use crate::script_runtime::{CanGc, JSContext as SafeJSContext};
|
||||||
|
|
||||||
#[derive(JSTraceable, MallocSizeOf)]
|
#[derive(JSTraceable, MallocSizeOf)]
|
||||||
|
@ -31,9 +32,14 @@ pub(crate) struct DefaultTeeReadRequestMicrotask {
|
||||||
tee_read_request: Dom<DefaultTeeReadRequest>,
|
tee_read_request: Dom<DefaultTeeReadRequest>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl DefaultTeeReadRequestMicrotask {
|
impl MicrotaskRunnable for DefaultTeeReadRequestMicrotask {
|
||||||
pub(crate) fn microtask_chunk_steps(&self, cx: SafeJSContext, can_gc: CanGc) {
|
fn handler(&self, can_gc: CanGc) {
|
||||||
self.tee_read_request.chunk_steps(cx, &self.chunk, can_gc)
|
let cx = GlobalScope::get_cx();
|
||||||
|
self.tee_read_request.chunk_steps(cx, &self.chunk, can_gc);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn enter_realm(&self) -> JSAutoRealm {
|
||||||
|
enter_realm(&*self.tee_read_request)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -147,7 +147,8 @@ impl MicrotaskQueue {
|
||||||
MutationObserver::notify_mutation_observers(can_gc);
|
MutationObserver::notify_mutation_observers(can_gc);
|
||||||
},
|
},
|
||||||
Microtask::ReadableStreamTeeReadRequest(ref task) => {
|
Microtask::ReadableStreamTeeReadRequest(ref task) => {
|
||||||
task.microtask_chunk_steps(cx, can_gc)
|
let _realm = task.enter_realm();
|
||||||
|
task.handler(can_gc);
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue