diff -r 000000000000 -r 6474c204b198 browser/components/sessionstore/test/browser_swapDocShells.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/browser/components/sessionstore/test/browser_swapDocShells.js Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,39 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +function test() { + waitForExplicitFinish(); + + Task.spawn(function task() { + let tab = gBrowser.selectedTab = gBrowser.addTab("about:mozilla"); + yield promiseBrowserLoaded(gBrowser.selectedBrowser); + + let win = gBrowser.replaceTabWithWindow(tab); + yield promiseDelayedStartupFinished(win); + yield promiseBrowserHasURL(win.gBrowser.browsers[0], "about:mozilla"); + + win.duplicateTabIn(win.gBrowser.selectedTab, "tab"); + let browser = win.gBrowser.browsers[1]; + yield promiseBrowserLoaded(browser); + is(browser.currentURI.spec, "about:mozilla", "tab was duplicated"); + + win.close(); + }).then(finish); +} + +function promiseDelayedStartupFinished(win) { + let deferred = Promise.defer(); + whenDelayedStartupFinished(win, deferred.resolve); + return deferred.promise; +} + +function promiseBrowserHasURL(browser, url) { + let promise = Promise.resolve(); + + if (browser.contentDocument.readyState === "complete" && + browser.currentURI.spec === url) { + return promise; + } + + return promise.then(() => promiseBrowserHasURL(browser, url)); +}