script: add TaskSource argument to route_promise (#36831)

Added task_source argument to route_promise, enabling callers to pick
the correct TaskSource.

Testing: No testing required, straightforward refactor
Fixes: #36825

Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
This commit is contained in:
Gae24 2025-05-04 19:05:27 +02:00 committed by GitHub
parent 1e8896800a
commit 7e2d2ed0ce
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 46 additions and 15 deletions

View file

@ -43,7 +43,9 @@ impl ServoInternalsMethods<crate::DomTypeHolder> for ServoInternals {
fn ReportMemory(&self, comp: InRealm, can_gc: CanGc) -> Rc<Promise> {
let global = &self.global();
let promise = Promise::new_in_current_realm(comp, can_gc);
let sender = route_promise(&promise, self);
let task_source = global.task_manager().dom_manipulation_task_source();
let sender = route_promise(&promise, self, task_source);
let script_to_constellation_chan = global.script_to_constellation_chan();
if script_to_constellation_chan
.send(ScriptToConstellationMessage::ReportMemory(sender))

View file

@ -56,7 +56,9 @@ impl GPUMethods<crate::DomTypeHolder> for GPU {
) -> Rc<Promise> {
let global = &self.global();
let promise = Promise::new_in_current_realm(comp, can_gc);
let sender = route_promise(&promise, self);
let task_source = global.task_manager().dom_manipulation_task_source();
let sender = route_promise(&promise, self, task_source);
let power_preference = match options.powerPreference {
Some(GPUPowerPreference::Low_power) => PowerPreference::LowPower,
Some(GPUPowerPreference::High_performance) => PowerPreference::HighPerformance,

View file

@ -117,7 +117,11 @@ impl GPUAdapterMethods<crate::DomTypeHolder> for GPUAdapter {
) -> Rc<Promise> {
// Step 2
let promise = Promise::new_in_current_realm(comp, can_gc);
let sender = route_promise(&promise, self);
let sender = route_promise(
&promise,
self,
self.global().task_manager().dom_manipulation_task_source(),
);
let mut required_features = wgpu_types::Features::empty();
for &ext in descriptor.requiredFeatures.iter() {
if let Some(feature) = gpu_to_wgt_feature(ext) {

View file

@ -271,7 +271,11 @@ impl GPUBufferMethods<crate::DomTypeHolder> for GPUBuffer {
},
};
let sender = route_promise(&promise, self);
let sender = route_promise(
&promise,
self,
self.global().task_manager().dom_manipulation_task_source(),
);
if let Err(e) = self.channel.0.send(WebGPURequest::BufferMapAsync {
sender,
buffer_id: self.buffer.0,

View file

@ -470,7 +470,11 @@ impl GPUDeviceMethods<crate::DomTypeHolder> for GPUDevice {
can_gc: CanGc,
) -> Rc<Promise> {
let promise = Promise::new_in_current_realm(comp, can_gc);
let sender = route_promise(&promise, self);
let sender = route_promise(
&promise,
self,
self.global().task_manager().dom_manipulation_task_source(),
);
GPUComputePipeline::create(self, descriptor, Some(sender));
promise
}
@ -518,7 +522,11 @@ impl GPUDeviceMethods<crate::DomTypeHolder> for GPUDevice {
) -> Fallible<Rc<Promise>> {
let (implicit_ids, desc) = self.parse_render_pipeline(descriptor)?;
let promise = Promise::new_in_current_realm(comp, can_gc);
let sender = route_promise(&promise, self);
let sender = route_promise(
&promise,
self,
self.global().task_manager().dom_manipulation_task_source(),
);
GPURenderPipeline::create(self, implicit_ids, desc, Some(sender))?;
Ok(promise)
}
@ -549,7 +557,11 @@ impl GPUDeviceMethods<crate::DomTypeHolder> for GPUDevice {
/// <https://gpuweb.github.io/gpuweb/#dom-gpudevice-poperrorscope>
fn PopErrorScope(&self, comp: InRealm, can_gc: CanGc) -> Rc<Promise> {
let promise = Promise::new_in_current_realm(comp, can_gc);
let sender = route_promise(&promise, self);
let sender = route_promise(
&promise,
self,
self.global().task_manager().dom_manipulation_task_source(),
);
if self
.channel
.0

View file

@ -200,7 +200,9 @@ impl GPUQueueMethods<crate::DomTypeHolder> for GPUQueue {
fn OnSubmittedWorkDone(&self, can_gc: CanGc) -> Rc<Promise> {
let global = self.global();
let promise = Promise::new(&global, can_gc);
let sender = route_promise(&promise, self);
let task_source = global.task_manager().dom_manipulation_task_source();
let sender = route_promise(&promise, self, task_source);
if let Err(e) = self
.channel
.0

View file

@ -95,7 +95,14 @@ impl GPUShaderModule {
promise.clone(),
can_gc,
);
let sender = route_promise(&promise, &*shader_module);
let sender = route_promise(
&promise,
&*shader_module,
device
.global()
.task_manager()
.dom_manipulation_task_source(),
);
device
.channel()
.0