mirror of
https://github.com/servo/servo.git
synced 2025-08-11 16:35:33 +01:00
Add devtools_chan method to GlobalRef and make new globals notifications work with nested workers
fixup! Add devtools_chan method to GlobalRef and make new globals notifications work with nested workers fixup! Add devtools_chan method to GlobalRef and make new globals notifications work with nested workers
This commit is contained in:
parent
f22d920b4d
commit
ea5c702f4a
4 changed files with 73 additions and 23 deletions
|
@ -24,6 +24,10 @@ use dom::workerglobalscope::WorkerGlobalScopeTypeId;
|
|||
use script_task::{ScriptTask, ScriptChan, ScriptMsg, TimerSource};
|
||||
use script_task::StackRootTLS;
|
||||
|
||||
use msg::constellation_msg::PipelineId;
|
||||
|
||||
use devtools_traits::DevtoolsControlChan;
|
||||
|
||||
use net_traits::{load_whole_resource, ResourceTask};
|
||||
use util::task::spawn_named;
|
||||
use util::task_state;
|
||||
|
@ -90,6 +94,7 @@ impl<'a> Drop for AutoWorkerReset<'a> {
|
|||
#[dom_struct]
|
||||
pub struct DedicatedWorkerGlobalScope {
|
||||
workerglobalscope: WorkerGlobalScope,
|
||||
id: PipelineId,
|
||||
receiver: Receiver<(TrustedWorkerAddress, ScriptMsg)>,
|
||||
own_sender: Sender<(TrustedWorkerAddress, ScriptMsg)>,
|
||||
worker: DOMRefCell<Option<TrustedWorkerAddress>>,
|
||||
|
@ -99,6 +104,8 @@ pub struct DedicatedWorkerGlobalScope {
|
|||
|
||||
impl DedicatedWorkerGlobalScope {
|
||||
fn new_inherited(worker_url: Url,
|
||||
id: PipelineId,
|
||||
devtools_chan: Option<DevtoolsControlChan>,
|
||||
cx: Rc<Cx>,
|
||||
resource_task: ResourceTask,
|
||||
parent_sender: Box<ScriptChan+Send>,
|
||||
|
@ -107,7 +114,8 @@ impl DedicatedWorkerGlobalScope {
|
|||
-> DedicatedWorkerGlobalScope {
|
||||
DedicatedWorkerGlobalScope {
|
||||
workerglobalscope: WorkerGlobalScope::new_inherited(
|
||||
WorkerGlobalScopeTypeId::DedicatedGlobalScope, worker_url, cx, resource_task),
|
||||
WorkerGlobalScopeTypeId::DedicatedGlobalScope, worker_url, cx, resource_task, devtools_chan),
|
||||
id: id,
|
||||
receiver: receiver,
|
||||
own_sender: own_sender,
|
||||
parent_sender: parent_sender,
|
||||
|
@ -116,6 +124,8 @@ impl DedicatedWorkerGlobalScope {
|
|||
}
|
||||
|
||||
pub fn new(worker_url: Url,
|
||||
id: PipelineId,
|
||||
devtools_chan: Option<DevtoolsControlChan>,
|
||||
cx: Rc<Cx>,
|
||||
resource_task: ResourceTask,
|
||||
parent_sender: Box<ScriptChan+Send>,
|
||||
|
@ -123,7 +133,7 @@ impl DedicatedWorkerGlobalScope {
|
|||
receiver: Receiver<(TrustedWorkerAddress, ScriptMsg)>)
|
||||
-> Temporary<DedicatedWorkerGlobalScope> {
|
||||
let scope = box DedicatedWorkerGlobalScope::new_inherited(
|
||||
worker_url, cx.clone(), resource_task, parent_sender,
|
||||
worker_url, id, devtools_chan, cx.clone(), resource_task, parent_sender,
|
||||
own_sender, receiver);
|
||||
DedicatedWorkerGlobalScopeBinding::Wrap(cx.ptr, scope)
|
||||
}
|
||||
|
@ -131,6 +141,8 @@ impl DedicatedWorkerGlobalScope {
|
|||
|
||||
impl DedicatedWorkerGlobalScope {
|
||||
pub fn run_worker_scope(worker_url: Url,
|
||||
id: PipelineId,
|
||||
devtools_chan: Option<DevtoolsControlChan>,
|
||||
worker: TrustedWorkerAddress,
|
||||
resource_task: ResourceTask,
|
||||
parent_sender: Box<ScriptChan+Send>,
|
||||
|
@ -156,7 +168,7 @@ impl DedicatedWorkerGlobalScope {
|
|||
|
||||
let (_js_runtime, js_context) = ScriptTask::new_rt_and_cx();
|
||||
let global = DedicatedWorkerGlobalScope::new(
|
||||
worker_url, js_context.clone(), resource_task,
|
||||
worker_url, id, devtools_chan, js_context.clone(), resource_task,
|
||||
parent_sender, own_sender, receiver).root();
|
||||
|
||||
{
|
||||
|
@ -184,6 +196,7 @@ impl DedicatedWorkerGlobalScope {
|
|||
|
||||
pub trait DedicatedWorkerGlobalScopeHelpers {
|
||||
fn script_chan(self) -> Box<ScriptChan+Send>;
|
||||
fn pipeline(self) -> PipelineId;
|
||||
}
|
||||
|
||||
impl<'a> DedicatedWorkerGlobalScopeHelpers for JSRef<'a, DedicatedWorkerGlobalScope> {
|
||||
|
@ -195,6 +208,10 @@ impl<'a> DedicatedWorkerGlobalScopeHelpers for JSRef<'a, DedicatedWorkerGlobalSc
|
|||
worker: worker.as_ref().unwrap().clone(),
|
||||
}
|
||||
}
|
||||
|
||||
fn pipeline(self) -> PipelineId {
|
||||
self.id
|
||||
}
|
||||
}
|
||||
|
||||
trait PrivateDedicatedWorkerGlobalScopeHelpers {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue