summaryrefslogtreecommitdiffstats
path: root/browser/components/sessionstore/test/browser_swapDocShells.js
blob: 839f060e73bca00823c0f3de9d34b2987ff6d90c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
"use strict";

add_task(function* () {
  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");
  yield promiseTabRestored(win.gBrowser.tabs[1]);

  let browser = win.gBrowser.browsers[1];
  is(browser.currentURI.spec, "about:mozilla", "tab was duplicated");

  yield BrowserTestUtils.closeWindow(win);
});

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));
}