From 9acf3f6d4d8630e1b824a7cd652827ba1159e081 Mon Sep 17 00:00:00 2001 From: Gregory Terzian Date: Wed, 14 Aug 2019 20:38:47 +0200 Subject: [PATCH] windowproxy: prevent unnecessary calls to set_window --- components/script/dom/windowproxy.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/components/script/dom/windowproxy.rs b/components/script/dom/windowproxy.rs index 0c7a00978bc..d468e234590 100644 --- a/components/script/dom/windowproxy.rs +++ b/components/script/dom/windowproxy.rs @@ -602,12 +602,23 @@ impl WindowProxy { } pub fn set_currently_active(&self, window: &Window) { - let globalscope = window.upcast(); + let globalscope = window.upcast::(); + let dest_pipeline_id = globalscope.pipeline_id(); + if let Some(pipeline_id) = self.currently_active() { + if pipeline_id == dest_pipeline_id { + return debug!( + "Attempt to set the currently active window to the currently active window." + ); + } + } self.set_window(&*globalscope, &PROXY_HANDLER); self.currently_active.set(Some(globalscope.pipeline_id())); } pub fn unset_currently_active(&self) { + if self.currently_active().is_none() { + return debug!("Attempt to unset the currently active window on a windowproxy that does not have one."); + } let globalscope = self.global(); let window = DissimilarOriginWindow::new(&*globalscope, self); self.set_window(&*window.upcast(), &XORIGIN_PROXY_HANDLER);