forked from mirrors/gecko-dev
		
	# ignore-this-changeset Differential Revision: https://phabricator.services.mozilla.com/D36042 --HG-- extra : source : d3afcafdce650a6f36cebbc126ee93b17f13cf52
		
			
				
	
	
		
			117 lines
		
	
	
	
		
			3.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			117 lines
		
	
	
	
		
			3.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* This Source Code Form is subject to the terms of the Mozilla Public
 | 
						|
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 | 
						|
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 | 
						|
 | 
						|
const URIS_PINNED = ["about:license", "about:about"];
 | 
						|
const URIS_NORMAL_A = ["about:mozilla"];
 | 
						|
const URIS_NORMAL_B = ["about:buildconfig"];
 | 
						|
 | 
						|
function test() {
 | 
						|
  waitForExplicitFinish();
 | 
						|
 | 
						|
  isnot(
 | 
						|
    Services.prefs.getIntPref("browser.startup.page"),
 | 
						|
    3,
 | 
						|
    "pref to save session must not be set for this test"
 | 
						|
  );
 | 
						|
  ok(
 | 
						|
    !Services.prefs.getBoolPref("browser.sessionstore.resume_session_once"),
 | 
						|
    "pref to save session once must not be set for this test"
 | 
						|
  );
 | 
						|
 | 
						|
  document.documentElement.setAttribute(
 | 
						|
    "windowtype",
 | 
						|
    "navigator:browsertestdummy"
 | 
						|
  );
 | 
						|
 | 
						|
  openWinWithCb(closeFirstWin, URIS_PINNED.concat(URIS_NORMAL_A));
 | 
						|
}
 | 
						|
 | 
						|
function closeFirstWin(win) {
 | 
						|
  win.gBrowser.pinTab(win.gBrowser.tabs[0]);
 | 
						|
  win.gBrowser.pinTab(win.gBrowser.tabs[1]);
 | 
						|
 | 
						|
  let winClosed = BrowserTestUtils.windowClosed(win);
 | 
						|
  // We need to call BrowserTryToCloseWindow in order to trigger
 | 
						|
  // the machinery that chooses whether or not to save the session
 | 
						|
  // for the last window.
 | 
						|
  win.BrowserTryToCloseWindow();
 | 
						|
  ok(win.closed, "window closed");
 | 
						|
 | 
						|
  winClosed.then(() => {
 | 
						|
    openWinWithCb(
 | 
						|
      checkSecondWin,
 | 
						|
      URIS_NORMAL_B,
 | 
						|
      URIS_PINNED.concat(URIS_NORMAL_B)
 | 
						|
    );
 | 
						|
  });
 | 
						|
}
 | 
						|
 | 
						|
function checkSecondWin(win) {
 | 
						|
  is(
 | 
						|
    win.gBrowser.browsers[0].currentURI.spec,
 | 
						|
    URIS_PINNED[0],
 | 
						|
    "first pinned tab restored"
 | 
						|
  );
 | 
						|
  is(
 | 
						|
    win.gBrowser.browsers[1].currentURI.spec,
 | 
						|
    URIS_PINNED[1],
 | 
						|
    "second pinned tab restored"
 | 
						|
  );
 | 
						|
  ok(win.gBrowser.tabs[0].pinned, "first pinned tab is still pinned");
 | 
						|
  ok(win.gBrowser.tabs[1].pinned, "second pinned tab is still pinned");
 | 
						|
 | 
						|
  BrowserTestUtils.closeWindow(win).then(() => {
 | 
						|
    // cleanup
 | 
						|
    document.documentElement.setAttribute("windowtype", "navigator:browser");
 | 
						|
    finish();
 | 
						|
  });
 | 
						|
}
 | 
						|
 | 
						|
function openWinWithCb(cb, argURIs, expectedURIs) {
 | 
						|
  if (!expectedURIs) {
 | 
						|
    expectedURIs = argURIs;
 | 
						|
  }
 | 
						|
 | 
						|
  var win = openDialog(
 | 
						|
    AppConstants.BROWSER_CHROME_URL,
 | 
						|
    "_blank",
 | 
						|
    "chrome,all,dialog=no",
 | 
						|
    argURIs.join("|")
 | 
						|
  );
 | 
						|
 | 
						|
  win.addEventListener(
 | 
						|
    "load",
 | 
						|
    function() {
 | 
						|
      info("the window loaded");
 | 
						|
 | 
						|
      var expectedLoads = expectedURIs.length;
 | 
						|
 | 
						|
      win.gBrowser.addTabsProgressListener({
 | 
						|
        onStateChange(aBrowser, aWebProgress, aRequest, aStateFlags, aStatus) {
 | 
						|
          if (
 | 
						|
            aRequest &&
 | 
						|
            aStateFlags & Ci.nsIWebProgressListener.STATE_STOP &&
 | 
						|
            aStateFlags & Ci.nsIWebProgressListener.STATE_IS_NETWORK &&
 | 
						|
            expectedURIs.indexOf(
 | 
						|
              aRequest.QueryInterface(Ci.nsIChannel).originalURI.spec
 | 
						|
            ) > -1 &&
 | 
						|
            --expectedLoads <= 0
 | 
						|
          ) {
 | 
						|
            win.gBrowser.removeTabsProgressListener(this);
 | 
						|
            info("all tabs loaded");
 | 
						|
            is(
 | 
						|
              win.gBrowser.tabs.length,
 | 
						|
              expectedURIs.length,
 | 
						|
              "didn't load any unexpected tabs"
 | 
						|
            );
 | 
						|
            executeSoon(function() {
 | 
						|
              cb(win);
 | 
						|
            });
 | 
						|
          }
 | 
						|
        },
 | 
						|
      });
 | 
						|
    },
 | 
						|
    { once: true }
 | 
						|
  );
 | 
						|
}
 |