forked from mirrors/gecko-dev
		
	MozReview-Commit-ID: IglKedBqrWQ --HG-- extra : rebase_source : a388f02b8d5e00f7e670f41d049518be1de370dc extra : histedit_source : 8f79f40d24f5456e22787a169cc9f6ae21c03c1e
		
			
				
	
	
		
			129 lines
		
	
	
	
		
			5.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			129 lines
		
	
	
	
		
			5.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* Any copyright is dedicated to the Public Domain.
 | 
						|
 * http://creativecommons.org/publicdomain/zero/1.0/ */
 | 
						|
 | 
						|
"use strict";
 | 
						|
 | 
						|
/**
 | 
						|
 * Tests in this file check that user customizations to the tabstrip show
 | 
						|
 * the correct type of new tab button while the tabstrip isn't overflowing.
 | 
						|
 */
 | 
						|
 | 
						|
const kGlobalNewTabButton = document.getElementById("new-tab-button");
 | 
						|
const kInnerNewTabButton = document.getAnonymousElementByAttribute(gBrowser.tabContainer, "anonid", "tabs-newtab-button");
 | 
						|
 | 
						|
function assertNewTabButton(which) {
 | 
						|
  if (which == "global") {
 | 
						|
    isnot(kGlobalNewTabButton.getBoundingClientRect().width, 0,
 | 
						|
      "main new tab button should be visible");
 | 
						|
    is(kInnerNewTabButton.getBoundingClientRect().width, 0,
 | 
						|
      "inner new tab button should be hidden");
 | 
						|
  } else if (which == "inner") {
 | 
						|
    is(kGlobalNewTabButton.getBoundingClientRect().width, 0,
 | 
						|
      "main new tab button should be hidden");
 | 
						|
    isnot(kInnerNewTabButton.getBoundingClientRect().width, 0,
 | 
						|
      "inner new tab button should be visible");
 | 
						|
  } else {
 | 
						|
    ok(false, "Unexpected button: " + which);
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Add and remove items *after* the new tab button in customize mode.
 | 
						|
 */
 | 
						|
add_task(async function addremove_after_newtab_customizemode() {
 | 
						|
  await startCustomizing();
 | 
						|
  await waitForElementShown(kGlobalNewTabButton);
 | 
						|
  simulateItemDrag(document.getElementById("home-button"), kGlobalNewTabButton, "end");
 | 
						|
  ok(gBrowser.tabContainer.hasAttribute("hasadjacentnewtabbutton"),
 | 
						|
    "tabs should have the adjacent newtab attribute");
 | 
						|
  await endCustomizing();
 | 
						|
  assertNewTabButton("inner");
 | 
						|
 | 
						|
  await startCustomizing();
 | 
						|
  let dropTarget = document.getElementById("stop-reload-button");
 | 
						|
  await waitForElementShown(dropTarget);
 | 
						|
  simulateItemDrag(document.getElementById("home-button"), dropTarget, "end");
 | 
						|
  ok(gBrowser.tabContainer.hasAttribute("hasadjacentnewtabbutton"),
 | 
						|
    "tabs should still have the adjacent newtab attribute");
 | 
						|
  await endCustomizing();
 | 
						|
  assertNewTabButton("inner");
 | 
						|
  ok(CustomizableUI.inDefaultState, "Should be in default state");
 | 
						|
});
 | 
						|
 | 
						|
/**
 | 
						|
 * Add and remove items *before* the new tab button in customize mode.
 | 
						|
 */
 | 
						|
add_task(async function addremove_before_newtab_customizemode() {
 | 
						|
  await startCustomizing();
 | 
						|
  await waitForElementShown(kGlobalNewTabButton);
 | 
						|
  simulateItemDrag(document.getElementById("home-button"), kGlobalNewTabButton, "start");
 | 
						|
  ok(!gBrowser.tabContainer.hasAttribute("hasadjacentnewtabbutton"),
 | 
						|
    "tabs should no longer have the adjacent newtab attribute");
 | 
						|
  await endCustomizing();
 | 
						|
  assertNewTabButton("global");
 | 
						|
  await startCustomizing();
 | 
						|
  let dropTarget = document.getElementById("stop-reload-button");
 | 
						|
  await waitForElementShown(dropTarget);
 | 
						|
  simulateItemDrag(document.getElementById("home-button"), dropTarget, "end");
 | 
						|
  ok(gBrowser.tabContainer.hasAttribute("hasadjacentnewtabbutton"),
 | 
						|
    "tabs should have the adjacent newtab attribute again");
 | 
						|
  await endCustomizing();
 | 
						|
  assertNewTabButton("inner");
 | 
						|
  ok(CustomizableUI.inDefaultState, "Should be in default state");
 | 
						|
});
 | 
						|
 | 
						|
/**
 | 
						|
 * Add and remove items *after* the new tab button outside of customize mode.
 | 
						|
 */
 | 
						|
add_task(async function addremove_after_newtab_api() {
 | 
						|
  CustomizableUI.addWidgetToArea("home-button", "TabsToolbar");
 | 
						|
  ok(gBrowser.tabContainer.hasAttribute("hasadjacentnewtabbutton"),
 | 
						|
    "tabs should have the adjacent newtab attribute");
 | 
						|
  assertNewTabButton("inner");
 | 
						|
 | 
						|
  CustomizableUI.reset();
 | 
						|
  ok(gBrowser.tabContainer.hasAttribute("hasadjacentnewtabbutton"),
 | 
						|
    "tabs should still have the adjacent newtab attribute");
 | 
						|
  assertNewTabButton("inner");
 | 
						|
  ok(CustomizableUI.inDefaultState, "Should be in default state");
 | 
						|
 | 
						|
});
 | 
						|
 | 
						|
/**
 | 
						|
 * Add and remove items *before* the new tab button outside of customize mode.
 | 
						|
 */
 | 
						|
add_task(async function addremove_before_newtab_api() {
 | 
						|
  let index = CustomizableUI.getWidgetIdsInArea("TabsToolbar").indexOf("new-tab-button");
 | 
						|
  CustomizableUI.addWidgetToArea("home-button", "TabsToolbar", index);
 | 
						|
  ok(!gBrowser.tabContainer.hasAttribute("hasadjacentnewtabbutton"),
 | 
						|
    "tabs should no longer have the adjacent newtab attribute");
 | 
						|
  assertNewTabButton("global");
 | 
						|
 | 
						|
  CustomizableUI.removeWidgetFromArea("home-button");
 | 
						|
  ok(gBrowser.tabContainer.hasAttribute("hasadjacentnewtabbutton"),
 | 
						|
    "tabs should have the adjacent newtab attribute again");
 | 
						|
  assertNewTabButton("inner");
 | 
						|
 | 
						|
  CustomizableUI.reset();
 | 
						|
  ok(CustomizableUI.inDefaultState, "Should be in default state");
 | 
						|
});
 | 
						|
 | 
						|
/**
 | 
						|
  * Reset to defaults in customize mode to see if that doesn't break things.
 | 
						|
  */
 | 
						|
add_task(async function reset_before_newtab_customizemode() {
 | 
						|
  await startCustomizing();
 | 
						|
  await waitForElementShown(kGlobalNewTabButton);
 | 
						|
  simulateItemDrag(document.getElementById("home-button"), kGlobalNewTabButton, "start");
 | 
						|
  ok(!gBrowser.tabContainer.hasAttribute("hasadjacentnewtabbutton"),
 | 
						|
    "tabs should no longer have the adjacent newtab attribute");
 | 
						|
  await endCustomizing();
 | 
						|
  assertNewTabButton("global");
 | 
						|
  await startCustomizing();
 | 
						|
  await gCustomizeMode.reset();
 | 
						|
  ok(gBrowser.tabContainer.hasAttribute("hasadjacentnewtabbutton"),
 | 
						|
    "tabs should have the adjacent newtab attribute again");
 | 
						|
  await endCustomizing();
 | 
						|
  assertNewTabButton("inner");
 | 
						|
  ok(CustomizableUI.inDefaultState, "Should be in default state");
 | 
						|
});
 |