Send the panic reason and backtrace in mozbrowsererror.

This commit is contained in:
Alan Jeffrey 2016-04-29 13:22:48 -05:00
parent 990dd72da7
commit bd09f3148e

View file

@ -873,7 +873,7 @@ impl<LTF: LayoutThreadFactory, STF: ScriptThreadFactory> Constellation<LTF, STF>
let window_size = self.pipelines.get(&pipeline_id).and_then(|pipeline| pipeline.size); let window_size = self.pipelines.get(&pipeline_id).and_then(|pipeline| pipeline.size);
// Notify the browser chrome that the pipeline has failed // Notify the browser chrome that the pipeline has failed
self.trigger_mozbrowsererror(pipeline_id); self.trigger_mozbrowsererror(pipeline_id, reason, backtrace);
self.close_pipeline(pipeline_id, ExitPipelineMode::Force); self.close_pipeline(pipeline_id, ExitPipelineMode::Force);
@ -1966,8 +1966,7 @@ impl<LTF: LayoutThreadFactory, STF: ScriptThreadFactory> Constellation<LTF, STF>
// https://developer.mozilla.org/en-US/docs/Web/Events/mozbrowsererror // https://developer.mozilla.org/en-US/docs/Web/Events/mozbrowsererror
// Note that this does not require the pipeline to be an immediate child of the root // Note that this does not require the pipeline to be an immediate child of the root
// TODO: propagate more error information, e.g. a backtrace fn trigger_mozbrowsererror(&self, pipeline_id: PipelineId, reason: String, backtrace: String) {
fn trigger_mozbrowsererror(&self, pipeline_id: PipelineId) {
if !prefs::get_pref("dom.mozbrowser.enabled").as_boolean().unwrap_or(false) { return; } if !prefs::get_pref("dom.mozbrowser.enabled").as_boolean().unwrap_or(false) { return; }
if let Some(pipeline) = self.pipelines.get(&pipeline_id) { if let Some(pipeline) = self.pipelines.get(&pipeline_id) {
@ -1980,7 +1979,7 @@ impl<LTF: LayoutThreadFactory, STF: ScriptThreadFactory> Constellation<LTF, STF>
None => return warn!("Mozbrowsererror via closed pipeline {:?}.", ancestor_info.0), None => return warn!("Mozbrowsererror via closed pipeline {:?}.", ancestor_info.0),
}; };
} }
let event = MozBrowserEvent::Error(MozBrowserErrorType::Fatal, None, None); let event = MozBrowserEvent::Error(MozBrowserErrorType::Fatal, Some(reason), Some(backtrace));
ancestor.trigger_mozbrowser_event(ancestor_info.1, event); ancestor.trigger_mozbrowser_event(ancestor_info.1, event);
} }
} }