From b583360e0126a1b6e3652de4786dfb548a3d3c1f Mon Sep 17 00:00:00 2001 From: Peter Van der Beken Date: Sat, 28 Nov 2009 15:11:58 +0100 Subject: [PATCH] Backing out 655f2ee419a7 to fix orange --- .../test/browser/browser_514751.js | 55 ++++++++++++++----- 1 file changed, 40 insertions(+), 15 deletions(-) diff --git a/browser/components/sessionstore/test/browser/browser_514751.js b/browser/components/sessionstore/test/browser/browser_514751.js index 97d933b131d4..1910d335a05b 100644 --- a/browser/components/sessionstore/test/browser/browser_514751.js +++ b/browser/components/sessionstore/test/browser/browser_514751.js @@ -52,6 +52,8 @@ function test() { let ss = Cc["@mozilla.org/browser/sessionstore;1"]. getService(Ci.nsISessionStore); + let ww = Cc["@mozilla.org/embedcomp/window-watcher;1"]. + getService(Ci.nsIWindowWatcher); waitForExplicitFinish(); @@ -66,21 +68,44 @@ function test() { }] }; - var theWin = openDialog(location, "", "chrome,all,dialog=no"); - theWin.addEventListener("load", function () { - executeSoon(function () { - var gotError = false; - try { - ss.setWindowState(theWin, JSON.stringify(state), true); - } catch (e) { - if (/NS_ERROR_MALFORMED_URI/.test(e)) - gotError = true; + let windowObserver = { + observe: function(aSubject, aTopic, aData) { + let theWin = aSubject.QueryInterface(Ci.nsIDOMWindow); + + switch(aTopic) { + case "domwindowopened": + theWin.addEventListener("load", function () { + theWin.removeEventListener("load", arguments.callee, false); + executeSoon(function() { + var gotError = false; + try { + ss.setWindowState(theWin, JSON.stringify(state), true); + } catch (e) { + if (/NS_ERROR_MALFORMED_URI/.test(e)) + gotError = true; + } + ok(!gotError, "Didn't get a malformed URI error."); + executeSoon(function() { + theWin.close(); + }); + }); + }, false); + break; + + case "domwindowclosed": + ww.unregisterNotification(this); + is(browserWindowsCount(), 1, "Only one browser window should be open eventually"); + finish(); + break; } - ok(!gotError, "Didn't get a malformed URI error."); - theWin.close(); - is(browserWindowsCount(), 1, "Only one browser window should be open eventually"); - finish(); - }); - }, false); + } + } + ww.registerNotification(windowObserver); + ww.openWindow(null, + location, + "_blank", + "chrome,all,dialog=no", + null); + }