forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			102 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* Any copyright is dedicated to the Public Domain.
 | 
						|
   http://creativecommons.org/publicdomain/zero/1.0/ */
 | 
						|
 | 
						|
const PREF_WARN_ON_CLOSE = "browser.tabs.warnOnCloseOtherTabs";
 | 
						|
 | 
						|
add_task(async function setPref() {
 | 
						|
  await SpecialPowers.pushPrefEnv({
 | 
						|
    set: [[PREF_WARN_ON_CLOSE, false]],
 | 
						|
  });
 | 
						|
});
 | 
						|
 | 
						|
add_task(async function withMultiSelectedTabs() {
 | 
						|
  let initialTab = gBrowser.selectedTab;
 | 
						|
  let tab1 = await addTab("https://example.com/1");
 | 
						|
  let tab2 = await addTab("https://example.com/2");
 | 
						|
  let tab3 = await addTab("https://example.com/3");
 | 
						|
  let tab4 = await addTab("https://example.com/4");
 | 
						|
 | 
						|
  is(gBrowser.multiSelectedTabsCount, 0, "Zero multiselected tabs");
 | 
						|
 | 
						|
  gBrowser.selectedTab = tab2;
 | 
						|
  await triggerClickOn(tab4, { shiftKey: true });
 | 
						|
 | 
						|
  ok(!initialTab.multiselected, "InitialTab is not multiselected");
 | 
						|
  ok(!tab1.multiselected, "Tab1 is not multiselected");
 | 
						|
  ok(tab2.multiselected, "Tab2 is multiselected");
 | 
						|
  ok(tab3.multiselected, "Tab3 is multiselected");
 | 
						|
  ok(tab4.multiselected, "Tab4 is multiselected");
 | 
						|
  is(gBrowser.multiSelectedTabsCount, 3, "Two multiselected tabs");
 | 
						|
 | 
						|
  gBrowser.removeMultiSelectedTabs();
 | 
						|
  await TestUtils.waitForCondition(
 | 
						|
    () => gBrowser.tabs.length == 2,
 | 
						|
    "wait for the multiselected tabs to close"
 | 
						|
  );
 | 
						|
  is(
 | 
						|
    SessionStore.getLastClosedTabCount(window),
 | 
						|
    3,
 | 
						|
    "SessionStore should know how many tabs were just closed"
 | 
						|
  );
 | 
						|
 | 
						|
  undoCloseTab();
 | 
						|
  await TestUtils.waitForCondition(
 | 
						|
    () => gBrowser.tabs.length == 5,
 | 
						|
    "wait for the tabs to reopen"
 | 
						|
  );
 | 
						|
  info("waiting for the browsers to finish loading");
 | 
						|
  // Check that the tabs are restored in the correct order
 | 
						|
  for (let tabId of [2, 3, 4]) {
 | 
						|
    let browser = gBrowser.tabs[tabId].linkedBrowser;
 | 
						|
    await ContentTask.spawn(browser, tabId, async aTabId => {
 | 
						|
      await ContentTaskUtils.waitForCondition(() => {
 | 
						|
        return (
 | 
						|
          content?.document?.readyState == "complete" &&
 | 
						|
          content?.document?.location.href == "https://example.com/" + aTabId
 | 
						|
        );
 | 
						|
      }, "waiting for tab " + aTabId + " to load");
 | 
						|
    });
 | 
						|
  }
 | 
						|
 | 
						|
  gBrowser.removeAllTabsBut(initialTab);
 | 
						|
});
 | 
						|
 | 
						|
add_task(async function withCloseTabsToTheRight() {
 | 
						|
  let initialTab = gBrowser.selectedTab;
 | 
						|
  let tab1 = await addTab("https://example.com/1");
 | 
						|
  await addTab("https://example.com/2");
 | 
						|
  await addTab("https://example.com/3");
 | 
						|
  await addTab("https://example.com/4");
 | 
						|
 | 
						|
  gBrowser.removeTabsToTheEndFrom(tab1);
 | 
						|
  await TestUtils.waitForCondition(
 | 
						|
    () => gBrowser.tabs.length == 2,
 | 
						|
    "wait for the multiselected tabs to close"
 | 
						|
  );
 | 
						|
  is(
 | 
						|
    SessionStore.getLastClosedTabCount(window),
 | 
						|
    3,
 | 
						|
    "SessionStore should know how many tabs were just closed"
 | 
						|
  );
 | 
						|
 | 
						|
  undoCloseTab();
 | 
						|
  await TestUtils.waitForCondition(
 | 
						|
    () => gBrowser.tabs.length == 5,
 | 
						|
    "wait for the tabs to reopen"
 | 
						|
  );
 | 
						|
  info("waiting for the browsers to finish loading");
 | 
						|
  // Check that the tabs are restored in the correct order
 | 
						|
  for (let tabId of [2, 3, 4]) {
 | 
						|
    let browser = gBrowser.tabs[tabId].linkedBrowser;
 | 
						|
    ContentTask.spawn(browser, tabId, async aTabId => {
 | 
						|
      await ContentTaskUtils.waitForCondition(() => {
 | 
						|
        return (
 | 
						|
          content?.document?.readyState == "complete" &&
 | 
						|
          content?.document?.location.href == "https://example.com/" + aTabId
 | 
						|
        );
 | 
						|
      }, "waiting for tab " + aTabId + " to load");
 | 
						|
    });
 | 
						|
  }
 | 
						|
 | 
						|
  gBrowser.removeAllTabsBut(initialTab);
 | 
						|
});
 |