|
1 /* Any copyright is dedicated to the Public Domain. |
|
2 * http://creativecommons.org/publicdomain/zero/1.0/ */ |
|
3 |
|
4 function test() { |
|
5 waitForExplicitFinish(); |
|
6 |
|
7 Task.spawn(function task() { |
|
8 let tab = gBrowser.selectedTab = gBrowser.addTab("about:mozilla"); |
|
9 yield promiseBrowserLoaded(gBrowser.selectedBrowser); |
|
10 |
|
11 let win = gBrowser.replaceTabWithWindow(tab); |
|
12 yield promiseDelayedStartupFinished(win); |
|
13 yield promiseBrowserHasURL(win.gBrowser.browsers[0], "about:mozilla"); |
|
14 |
|
15 win.duplicateTabIn(win.gBrowser.selectedTab, "tab"); |
|
16 let browser = win.gBrowser.browsers[1]; |
|
17 yield promiseBrowserLoaded(browser); |
|
18 is(browser.currentURI.spec, "about:mozilla", "tab was duplicated"); |
|
19 |
|
20 win.close(); |
|
21 }).then(finish); |
|
22 } |
|
23 |
|
24 function promiseDelayedStartupFinished(win) { |
|
25 let deferred = Promise.defer(); |
|
26 whenDelayedStartupFinished(win, deferred.resolve); |
|
27 return deferred.promise; |
|
28 } |
|
29 |
|
30 function promiseBrowserHasURL(browser, url) { |
|
31 let promise = Promise.resolve(); |
|
32 |
|
33 if (browser.contentDocument.readyState === "complete" && |
|
34 browser.currentURI.spec === url) { |
|
35 return promise; |
|
36 } |
|
37 |
|
38 return promise.then(() => promiseBrowserHasURL(browser, url)); |
|
39 } |