diff --git a/mozilla/browser/base/content/browser.js b/mozilla/browser/base/content/browser.js index 22919098156..67d223e79ef 100644 --- a/mozilla/browser/base/content/browser.js +++ b/mozilla/browser/base/content/browser.js @@ -2993,7 +2993,7 @@ function toJavaScriptConsole() function BrowserDownloadsUI() { Cc["@mozilla.org/download-manager-ui;1"]. - getService(Ci.nsIDownloadManagerUI).show(); + getService(Ci.nsIDownloadManagerUI).show(window); } function toOpenWindowByType(inType, uri, features) diff --git a/mozilla/toolkit/components/downloads/test/browser/Makefile.in b/mozilla/toolkit/components/downloads/test/browser/Makefile.in index a894b3a8006..4f92d921880 100644 --- a/mozilla/toolkit/components/downloads/test/browser/Makefile.in +++ b/mozilla/toolkit/components/downloads/test/browser/Makefile.in @@ -47,6 +47,7 @@ include $(topsrcdir)/config/rules.mk _BROWSER_FILES = \ browser_nsIDownloadManagerUI.js \ + browser_bug414214.js \ $(NULL) libs:: $(_BROWSER_FILES) diff --git a/mozilla/toolkit/components/downloads/test/browser/browser_bug414214.js b/mozilla/toolkit/components/downloads/test/browser/browser_bug414214.js index 168655d86f2..8752a6e5e2e 100644 --- a/mozilla/toolkit/components/downloads/test/browser/browser_bug414214.js +++ b/mozilla/toolkit/components/downloads/test/browser/browser_bug414214.js @@ -56,10 +56,23 @@ function test() Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch). setBoolPref(PREF_BDM_CLOSEWHENDONE, true); - // OK, let's pull up the UI - // Linux uses y, everything else is j - var key = navigator.platform.match("Linux") ? "y" : "j"; - EventUtils.synthesizeKey(key, {metaKey: true}, window.opener); + var ww = Cc["@mozilla.org/embedcomp/window-watcher;1"]. + getService(Ci.nsIWindowWatcher); + + // register a callback to add a load listener to know when the download + // manager opens + var obs = { + observe: function(aSubject, aTopic, aData) { + // unregister ourself + ww.unregisterNotification(this); + + var win = aSubject.QueryInterface(Ci.nsIDOMEventTarget); + win.addEventListener("DOMContentLoaded", finishUp, false); + } + }; + + // register our observer + ww.registerNotification(obs); // The window doesn't open once we call show, so we need to wait a little bit function finishUp() { @@ -74,6 +87,10 @@ function test() finish(); } + // OK, let's pull up the UI + // Linux uses y, everything else is j + var key = navigator.platform.match("Linux") ? "y" : "j"; + EventUtils.synthesizeKey(key, {metaKey: true}, window.opener); + waitForExplicitFinish(); - window.setTimeout(finishUp, 1000); } diff --git a/mozilla/toolkit/components/downloads/test/browser/browser_nsIDownloadManagerUI.js b/mozilla/toolkit/components/downloads/test/browser/browser_nsIDownloadManagerUI.js index 098269154f9..3bf4213cce8 100644 --- a/mozilla/toolkit/components/downloads/test/browser/browser_nsIDownloadManagerUI.js +++ b/mozilla/toolkit/components/downloads/test/browser/browser_nsIDownloadManagerUI.js @@ -107,6 +107,24 @@ function test() if (win) win.close(); + var ww = Cc["@mozilla.org/embedcomp/window-watcher;1"]. + getService(Ci.nsIWindowWatcher); + + // register a callback to add a load listener to know when the download + // manager opens + var obs = { + observe: function(aSubject, aTopic, aData) { + // unregister ourself + ww.unregisterNotification(this); + + var win = aSubject.QueryInterface(Ci.nsIDOMEventTarget); + win.addEventListener("DOMContentLoaded", finishUp, false); + } + }; + + // register our observer + ww.registerNotification(obs); + // OK, now that all the data is in, let's pull up the UI Cc["@mozilla.org/download-manager-ui;1"]. getService(Ci.nsIDownloadManagerUI).show(); @@ -123,5 +141,4 @@ function test() } waitForExplicitFinish(); - window.setTimeout(finishUp, 1000); }