aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2016-07-21 11:20:37 -0500
committerGitHub <noreply@github.com>2016-07-21 11:20:37 -0500
commitdf1b00d43db615244e8e4bcf8296ed51b64249ea (patch)
tree41ef9ab638ea67979e19ee6914f4f3f206b3f184 /components/script/dom
parent07a0c2f1dc87fc21a4ed96d251390a4bff165bda (diff)
parentc889900cff2cde40d21fa27810b9c4b0b57c390a (diff)
downloadservo-df1b00d43db615244e8e4bcf8296ed51b64249ea.tar.gz
servo-df1b00d43db615244e8e4bcf8296ed51b64249ea.zip
Auto merge of #12468 - asajeffrey:constellation-remove-panic-channel, r=emilio
Removed panic channel, replaced by integrated logging and issue reporting <!-- Please describe your changes on the following line: --> Remove the previous ad hoc panic channel, replace it by an integrated logging and panicking mechanism, including crash reporting. All thread panics are now reported, not just content threads. --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: --> - [X] `./mach build -d` does not report any errors - [X] `./mach test-tidy` does not report any errors - [X] These changes fix #11838 - [X] These changes do not require tests because we don't test error reporting <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/12468) <!-- Reviewable:end -->
Diffstat (limited to 'components/script/dom')
-rw-r--r--components/script/dom/bindings/global.rs10
-rw-r--r--components/script/dom/dedicatedworkerglobalscope.rs12
-rw-r--r--components/script/dom/htmliframeelement.rs4
-rw-r--r--components/script/dom/window.rs11
-rw-r--r--components/script/dom/workerglobalscope.rs11
5 files changed, 12 insertions, 36 deletions
diff --git a/components/script/dom/bindings/global.rs b/components/script/dom/bindings/global.rs
index 5adcbb67818..fe81b8a14de 100644
--- a/components/script/dom/bindings/global.rs
+++ b/components/script/dom/bindings/global.rs
@@ -18,7 +18,7 @@ use ipc_channel::ipc::IpcSender;
use js::jsapi::{CurrentGlobalOrNull, GetGlobalForObjectCrossCompartment};
use js::jsapi::{JSContext, JSObject, JS_GetClass, MutableHandleValue};
use js::{JSCLASS_IS_DOMJSCLASS, JSCLASS_IS_GLOBAL};
-use msg::constellation_msg::{PipelineId, PanicMsg};
+use msg::constellation_msg::PipelineId;
use net_traits::filemanager_thread::FileManagerThreadMsg;
use net_traits::{ResourceThreads, CoreResourceThread, IpcSend};
use profile_traits::{mem, time};
@@ -283,14 +283,6 @@ impl<'a> GlobalRef<'a> {
}
}
- /// Returns an `IpcSender` to report panics on.
- pub fn panic_chan(&self) -> &IpcSender<PanicMsg> {
- match *self {
- GlobalRef::Window(ref window) => window.panic_chan(),
- GlobalRef::Worker(ref worker) => worker.panic_chan(),
- }
- }
-
/// Returns a wrapper for runnables to ensure they are cancelled if the global
/// is being destroyed.
pub fn get_runnable_wrapper(&self) -> RunnableWrapper {
diff --git a/components/script/dom/dedicatedworkerglobalscope.rs b/components/script/dom/dedicatedworkerglobalscope.rs
index cf5537676e0..b65fd72ab62 100644
--- a/components/script/dom/dedicatedworkerglobalscope.rs
+++ b/components/script/dom/dedicatedworkerglobalscope.rs
@@ -38,8 +38,8 @@ use std::sync::atomic::AtomicBool;
use std::sync::mpsc::{Receiver, RecvError, Select, Sender, channel};
use std::sync::{Arc, Mutex};
use url::Url;
-use util::thread::spawn_named_with_send_on_panic;
-use util::thread_state::{IN_WORKER, SCRIPT};
+use util::thread::spawn_named;
+use util::thread_state;
/// Set the `worker` field of a related DedicatedWorkerGlobalScope object to a particular
/// value for the duration of this object's lifetime. This ensures that the related Worker
@@ -161,8 +161,10 @@ impl DedicatedWorkerGlobalScope {
closing: Arc<AtomicBool>) {
let serialized_worker_url = worker_url.to_string();
let name = format!("WebWorker for {}", serialized_worker_url);
- let panic_chan = init.panic_chan.clone();
- spawn_named_with_send_on_panic(name, SCRIPT | IN_WORKER, move || {
+ spawn_named(name, move || {
+ thread_state::initialize(thread_state::SCRIPT | thread_state::IN_WORKER);
+ PipelineId::install(id);
+
let roots = RootCollection::new();
let _stack_roots_tls = StackRootTLS::new(&roots);
let (url, source) = match load_whole_resource(LoadContext::Script,
@@ -225,7 +227,7 @@ impl DedicatedWorkerGlobalScope {
global.handle_event(event);
}
}, reporter_name, parent_sender, CommonScriptMsg::CollectReports);
- }, Some(id.clone()), panic_chan);
+ });
}
pub fn script_chan(&self) -> Box<ScriptChan + Send> {
diff --git a/components/script/dom/htmliframeelement.rs b/components/script/dom/htmliframeelement.rs
index 1b2001c08df..efd33eecf54 100644
--- a/components/script/dom/htmliframeelement.rs
+++ b/components/script/dom/htmliframeelement.rs
@@ -353,8 +353,8 @@ unsafe fn build_mozbrowser_event_detail(event: MozBrowserEvent,
MozBrowserEvent::Error(error_type, description, report) => {
BrowserElementErrorEventDetail {
type_: Some(DOMString::from(error_type.name())),
- description: description.map(DOMString::from),
- report: report.map(DOMString::from),
+ description: Some(DOMString::from(description)),
+ report: Some(DOMString::from(report)),
version: Some(DOMString::from_string(servo_version().into())),
}.to_jsval(cx, rval);
},
diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs
index 07509a92e4a..b4984bb2a4a 100644
--- a/components/script/dom/window.rs
+++ b/components/script/dom/window.rs
@@ -45,7 +45,7 @@ use js::jsapi::{JS_GetRuntime, JS_GC, MutableHandleValue, SetWindowProxy};
use js::rust::CompileOptionsWrapper;
use js::rust::Runtime;
use libc;
-use msg::constellation_msg::{FrameType, LoadData, PanicMsg, PipelineId, SubpageId, WindowSizeType};
+use msg::constellation_msg::{FrameType, LoadData, PipelineId, SubpageId, WindowSizeType};
use net_traits::ResourceThreads;
use net_traits::bluetooth_thread::BluetoothMethodMsg;
use net_traits::image_cache_thread::{ImageCacheChan, ImageCacheThread};
@@ -266,9 +266,6 @@ pub struct Window {
/// A list of scroll offsets for each scrollable element.
scroll_offsets: DOMRefCell<HashMap<UntrustedNodeAddress, Point2D<f32>>>,
-
- #[ignore_heap_size_of = "Defined in ipc-channel"]
- panic_chan: IpcSender<PanicMsg>,
}
impl Window {
@@ -1424,10 +1421,6 @@ impl Window {
&self.scheduler_chan
}
- pub fn panic_chan(&self) -> &IpcSender<PanicMsg> {
- &self.panic_chan
- }
-
pub fn schedule_callback(&self, callback: OneshotTimerCallback, duration: MsDuration) -> OneshotTimerHandle {
self.timers.schedule_callback(callback,
duration,
@@ -1623,7 +1616,6 @@ impl Window {
constellation_chan: IpcSender<ConstellationMsg>,
control_chan: IpcSender<ConstellationControlMsg>,
scheduler_chan: IpcSender<TimerEventRequest>,
- panic_chan: IpcSender<PanicMsg>,
timer_event_chan: IpcSender<TimerEvent>,
layout_chan: Sender<Msg>,
id: PipelineId,
@@ -1693,7 +1685,6 @@ impl Window {
ignore_further_async_events: Arc::new(AtomicBool::new(false)),
error_reporter: error_reporter,
scroll_offsets: DOMRefCell::new(HashMap::new()),
- panic_chan: panic_chan,
};
WindowBinding::Wrap(runtime.cx(), win)
diff --git a/components/script/dom/workerglobalscope.rs b/components/script/dom/workerglobalscope.rs
index cd8476b49d6..154705fe145 100644
--- a/components/script/dom/workerglobalscope.rs
+++ b/components/script/dom/workerglobalscope.rs
@@ -23,7 +23,7 @@ use ipc_channel::ipc::IpcSender;
use js::jsapi::{HandleValue, JSContext, JSRuntime};
use js::jsval::UndefinedValue;
use js::rust::Runtime;
-use msg::constellation_msg::{PipelineId, ReferrerPolicy, PanicMsg};
+use msg::constellation_msg::{PipelineId, ReferrerPolicy};
use net_traits::{LoadContext, ResourceThreads, load_whole_resource};
use net_traits::{LoadOrigin, IpcSend};
use profile_traits::{mem, time};
@@ -58,7 +58,6 @@ pub fn prepare_workerscope_init(global: GlobalRef,
time_profiler_chan: global.time_profiler_chan().clone(),
from_devtools_sender: devtools_sender,
constellation_chan: global.constellation_chan().clone(),
- panic_chan: global.panic_chan().clone(),
scheduler_chan: global.scheduler_chan().clone(),
worker_id: worker_id
};
@@ -110,9 +109,6 @@ pub struct WorkerGlobalScope {
#[ignore_heap_size_of = "Defined in std"]
scheduler_chan: IpcSender<TimerEventRequest>,
-
- #[ignore_heap_size_of = "Defined in ipc-channel"]
- panic_chan: IpcSender<PanicMsg>,
}
impl WorkerGlobalScope {
@@ -144,7 +140,6 @@ impl WorkerGlobalScope {
devtools_wants_updates: Cell::new(false),
constellation_chan: init.constellation_chan,
scheduler_chan: init.scheduler_chan,
- panic_chan: init.panic_chan,
}
}
@@ -221,10 +216,6 @@ impl WorkerGlobalScope {
worker_id
}
- pub fn panic_chan(&self) -> &IpcSender<PanicMsg> {
- &self.panic_chan
- }
-
pub fn get_runnable_wrapper(&self) -> RunnableWrapper {
RunnableWrapper {
cancelled: self.closing.clone().unwrap(),