ensure unload run with old pipeline as currently-active, do not nullify proxy unless currently-active

This commit is contained in:
Gregory Terzian 2019-11-21 15:06:30 +08:00
parent d553158e95
commit a21c0bfd1a
3 changed files with 14 additions and 3 deletions

View file

@ -1389,7 +1389,18 @@ impl Window {
self.current_state.set(WindowState::Zombie);
*self.js_runtime.borrow_mut() = None;
self.window_proxy.set(None);
// If this is the currently active pipeline,
// nullify the window_proxy.
if let Some(proxy) = self.window_proxy.get() {
let pipeline_id = self.upcast::<GlobalScope>().pipeline_id();
if let Some(currently_active) = proxy.currently_active() {
if currently_active == pipeline_id {
self.window_proxy.set(None);
}
}
}
if let Some(performance) = self.performance.get() {
performance.clear_and_disable_performance_entry_buffer();
}

View file

@ -3118,7 +3118,8 @@ impl ScriptThread {
opener: Option<BrowsingContextId>,
) -> DomRoot<WindowProxy> {
if let Some(window_proxy) = self.window_proxies.borrow().get(&browsing_context_id) {
window_proxy.set_currently_active(&*window);
// Note: we do not set the window to be the currently-active one,
// this will be done instead when the script-thread handles the `SetDocumentActivity` msg.
return DomRoot::from_ref(window_proxy);
}
let iframe = parent_info.and_then(|parent_id| {

View file

@ -1,6 +1,5 @@
[083.html]
type: testharness
expected: ERROR
[ scheduler: event listener defined by script in a document in history]
expected: FAIL