Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Kill browserhtml #19975

Merged
merged 5 commits into from Feb 13, 2018
Merged
Changes from 1 commit
Commits
File filter...
Filter file types
Jump to…
Jump to file
Failed to load files.

Always

Just for now

Prev

report panic to embedder

  • Loading branch information
paulrouget committed Feb 13, 2018
commit ee25413c0fe13378e0de4b716915f572e7bbc32a
@@ -146,6 +146,8 @@ pub enum EmbedderMsg {
LoadStart(TopLevelBrowsingContextId),
/// The load of a page has completed
LoadComplete(TopLevelBrowsingContextId),
/// A pipeline panicked. First string is the reason, second one is the backtrace.
Panic(TopLevelBrowsingContextId, String, Option<String>),

This comment has been minimized.

Copy link
@emilio

emilio Feb 12, 2018

Member

Please mention what the string args are, or use a named enum like:

Panic { id: TopLevelBCId, reason: String, backtrace: Option<String> }
}

/// Messages from the painting thread and the constellation thread to the compositor thread.
@@ -237,6 +239,7 @@ impl Debug for EmbedderMsg {
EmbedderMsg::SetFullscreenState(..) => write!(f, "SetFullscreenState"),
EmbedderMsg::LoadStart(..) => write!(f, "LoadStart"),
EmbedderMsg::LoadComplete(..) => write!(f, "LoadComplete"),
EmbedderMsg::Panic(..) => write!(f, "Panic"),
}
}
}
@@ -189,4 +189,7 @@ pub trait WindowMethods {
/// will want to avoid blocking on UI events, and just
/// run the event loop at the vsync interval.
fn set_animation_state(&self, _state: AnimationState) {}

/// Called when a pipeline panics.
fn handle_panic(&self, browser_id: TopLevelBrowsingContextId, reason: String, backtrace: Option<String>);
}
@@ -1482,7 +1482,7 @@ impl<Message, LTF, STF> Constellation<Message, LTF, STF>
fn handle_panic(&mut self,
top_level_browsing_context_id: TopLevelBrowsingContextId,
reason: String,
_backtrace: Option<String>)
backtrace: Option<String>)
{
if opts::get().hard_fail {
// It's quite difficult to make Servo exit cleanly if some threads have failed.
@@ -1495,7 +1495,7 @@ impl<Message, LTF, STF> Constellation<Message, LTF, STF>

let browsing_context_id = BrowsingContextId::from(top_level_browsing_context_id);

// FIXME: report to embedder: (top_level_browsing_context_id, reason, backtrace);
self.embedder_proxy.send(EmbedderMsg::Panic(top_level_browsing_context_id, reason, backtrace));

let (window_size, pipeline_id) = {
let browsing_context = self.browsing_contexts.get(&browsing_context_id);
@@ -457,6 +457,11 @@ impl<Window> Servo<Window> where Window: WindowMethods + 'static {
// TODO(pcwalton): Specify which frame's load completed.
self.compositor.window.load_end(top_level_browsing_context);
},
(EmbedderMsg::Panic(top_level_browsing_context, reason, backtrace),
ShutdownState::NotShuttingDown) => {
self.compositor.window.handle_panic(top_level_browsing_context, reason, backtrace);
},

}
}
}
@@ -1354,6 +1354,10 @@ impl WindowMethods for Window {
fn supports_clipboard(&self) -> bool {
true
}

fn handle_panic(&self, _: BrowserId, _reason: String, _backtrace: Option<String>) {
// Nothing to do here yet. The crash has already been reported on the console.
}
}

fn glutin_phase_to_touch_event_type(phase: TouchPhase) -> TouchEventType {
ProTip! Use n and p to navigate between commits in a pull request.
You can’t perform that action at this time.