mirror of
https://github.com/servo/servo.git
synced 2025-08-05 13:40:08 +01:00
Move the worker script evaluation into a method on WorkerGlobalScope.
This commit is contained in:
parent
11ea299105
commit
95763a87b0
2 changed files with 19 additions and 16 deletions
|
@ -10,7 +10,7 @@ use dom::bindings::codegen::Bindings::ErrorEventBinding::ErrorEventMethods;
|
|||
use dom::bindings::codegen::Bindings::EventHandlerBinding::EventHandlerNonNull;
|
||||
use dom::bindings::codegen::InheritTypes::DedicatedWorkerGlobalScopeDerived;
|
||||
use dom::bindings::codegen::InheritTypes::{EventTargetCast, WorkerGlobalScopeCast};
|
||||
use dom::bindings::error::{ErrorResult, report_pending_exception};
|
||||
use dom::bindings::error::ErrorResult;
|
||||
use dom::bindings::global::GlobalRef;
|
||||
use dom::bindings::js::{RootCollection, Root};
|
||||
use dom::bindings::refcounted::LiveDOMReferences;
|
||||
|
@ -176,7 +176,6 @@ impl DedicatedWorkerGlobalScope {
|
|||
};
|
||||
|
||||
let runtime = Rc::new(ScriptTask::new_rt_and_cx());
|
||||
let serialized_url = url.serialize();
|
||||
|
||||
let (devtools_mpsc_chan, devtools_mpsc_port) = channel();
|
||||
ROUTER.route_ipc_receiver_to_mpsc_sender(devtools_ipc_port, devtools_mpsc_chan);
|
||||
|
@ -190,18 +189,7 @@ impl DedicatedWorkerGlobalScope {
|
|||
|
||||
{
|
||||
let _ar = AutoWorkerReset::new(global.r(), worker);
|
||||
|
||||
match runtime.evaluate_script(
|
||||
global.r().reflector().get_jsobject(), source, serialized_url, 1) {
|
||||
Ok(_) => (),
|
||||
Err(_) => {
|
||||
// TODO: An error needs to be dispatched to the parent.
|
||||
// https://github.com/servo/servo/issues/6422
|
||||
println!("evaluate_script failed");
|
||||
let _ar = JSAutoRequest::new(runtime.cx());
|
||||
report_pending_exception(runtime.cx(), global.r().reflector().get_jsobject().get());
|
||||
}
|
||||
}
|
||||
scope.execute_script(source);
|
||||
}
|
||||
|
||||
// Register this task as a memory reporter.
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
use dom::bindings::codegen::Bindings::FunctionBinding::Function;
|
||||
use dom::bindings::codegen::Bindings::WorkerGlobalScopeBinding::WorkerGlobalScopeMethods;
|
||||
use dom::bindings::codegen::InheritTypes::DedicatedWorkerGlobalScopeCast;
|
||||
use dom::bindings::error::{ErrorResult, Fallible};
|
||||
use dom::bindings::error::{ErrorResult, Fallible, report_pending_exception};
|
||||
use dom::bindings::error::Error::{Syntax, Network, JSFailed};
|
||||
use dom::bindings::global::GlobalRef;
|
||||
use dom::bindings::js::{JS, Root, MutNullableHeap};
|
||||
|
@ -28,7 +28,7 @@ use net_traits::{load_whole_resource, ResourceTask};
|
|||
use util::str::DOMString;
|
||||
|
||||
use ipc_channel::ipc::IpcSender;
|
||||
use js::jsapi::{JSContext, HandleValue};
|
||||
use js::jsapi::{JSContext, HandleValue, JSAutoRequest};
|
||||
use js::rust::Runtime;
|
||||
use url::{Url, UrlParser};
|
||||
|
||||
|
@ -283,6 +283,7 @@ impl<'a> WorkerGlobalScopeMethods for &'a WorkerGlobalScope {
|
|||
}
|
||||
|
||||
pub trait WorkerGlobalScopeHelpers {
|
||||
fn execute_script(self, source: DOMString);
|
||||
fn handle_fire_timer(self, timer_id: TimerId);
|
||||
fn script_chan(self) -> Box<ScriptChan+Send>;
|
||||
fn pipeline(self) -> PipelineId;
|
||||
|
@ -293,6 +294,20 @@ pub trait WorkerGlobalScopeHelpers {
|
|||
}
|
||||
|
||||
impl<'a> WorkerGlobalScopeHelpers for &'a WorkerGlobalScope {
|
||||
fn execute_script(self, source: DOMString) {
|
||||
match self.runtime.evaluate_script(
|
||||
self.reflector().get_jsobject(), source, self.worker_url.serialize(), 1) {
|
||||
Ok(_) => (),
|
||||
Err(_) => {
|
||||
// TODO: An error needs to be dispatched to the parent.
|
||||
// https://github.com/servo/servo/issues/6422
|
||||
println!("evaluate_script failed");
|
||||
let _ar = JSAutoRequest::new(self.runtime.cx());
|
||||
report_pending_exception(self.runtime.cx(), self.reflector().get_jsobject().get());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn script_chan(self) -> Box<ScriptChan+Send> {
|
||||
let dedicated =
|
||||
DedicatedWorkerGlobalScopeCast::to_ref(self);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue