During a module transition, remove all enqueued JS jobs. Seems to fix the
timeouts in UISuite.
Patch by: amitmanjhi
Review by: rjrjr (desk review)
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@6536 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/shell/HtmlUnitSessionHandler.java b/dev/core/src/com/google/gwt/dev/shell/HtmlUnitSessionHandler.java
index 7eaca71..9c87d9f 100644
--- a/dev/core/src/com/google/gwt/dev/shell/HtmlUnitSessionHandler.java
+++ b/dev/core/src/com/google/gwt/dev/shell/HtmlUnitSessionHandler.java
@@ -24,6 +24,7 @@
import com.google.gwt.dev.util.log.PrintWriterTreeLogger;
import com.gargoylesoftware.htmlunit.ScriptResult;
+import com.gargoylesoftware.htmlunit.WebWindow;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine;
import com.gargoylesoftware.htmlunit.javascript.host.Window;
@@ -209,8 +210,11 @@
currentUrl = getUrlBeforeHash(currentUrl);
String newUrl = getUrlBeforeHash((String) args[0].getValue());
if (!newUrl.equals(currentUrl)) {
- // TODO: removeAllJobs for all windows?
- window.getWebWindow().getTopWindow().getJobManager().removeAllJobs();
+ WebWindow webWindow = window.getWebWindow();
+ do {
+ webWindow.getJobManager().removeAllJobs();
+ webWindow = webWindow.getParentWindow();
+ } while (webWindow != webWindow.getTopWindow());
}
}
result = jsEngine.callFunction(htmlPage, jsFunction, jsContext, window,