diff -r 000000000000 -r 6474c204b198 browser/components/tabview/test/browser_tabview_bug640765.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/browser/components/tabview/test/browser_tabview_bug640765.js Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,75 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +let contentWindow; +let groupItem; + +function test() { + waitForExplicitFinish(); + + let newTabOne = gBrowser.addTab(); + let newTabTwo = gBrowser.addTab(); + let newTabThree = gBrowser.addTab(); + + registerCleanupFunction(function() { + TabView.hide(); + while (gBrowser.tabs.length > 1) + gBrowser.removeTab(gBrowser.tabs[0]); + }); + + showTabView(function() { + contentWindow = document.getElementById("tab-view").contentWindow; + is(contentWindow.GroupItems.groupItems.length, 1, "Has only one group"); + + groupItem = contentWindow.GroupItems.groupItems[0]; + + whenAppTabIconAdded(groupItem, function () { + whenAppTabIconAdded(groupItem, function () { + whenAppTabIconAdded(groupItem, function () { + + is(xulTabForAppTabIcon(0), newTabOne, + "New tab one matches the first app tab icon in tabview"); + is(xulTabForAppTabIcon(1), newTabTwo, + "New tab two matches the second app tab icon in tabview"); + is(xulTabForAppTabIcon(2), newTabThree, + "New tab three matches the third app tab icon in tabview"); + + // move the last tab to the first position + gBrowser.moveTabTo(newTabThree, 0); + is(xulTabForAppTabIcon(0), newTabThree, + "New tab three matches the first app tab icon in tabview"); + is(xulTabForAppTabIcon(1), newTabOne, + "New tab one matches the second app tab icon in tabview"); + is(xulTabForAppTabIcon(2), newTabTwo, + "New tab two matches the third app tab icon in tabview"); + + // move the first tab to the second position + gBrowser.moveTabTo(newTabThree, 1); + is(xulTabForAppTabIcon(0), newTabOne, + "New tab one matches the first app tab icon in tabview"); + is(xulTabForAppTabIcon(1), newTabThree, + "New tab three matches the second app tab icon in tabview"); + is(xulTabForAppTabIcon(2), newTabTwo, + "New tab two matches the third app tab icon in tabview"); + + hideTabView(function() { + gBrowser.removeTab(newTabOne); + gBrowser.removeTab(newTabTwo); + gBrowser.removeTab(newTabThree); + finish(); + }); + }); + gBrowser.pinTab(newTabThree); + }); + gBrowser.pinTab(newTabTwo); + }); + gBrowser.pinTab(newTabOne); + }); +} + +function xulTabForAppTabIcon(index) { + return contentWindow.iQ( + contentWindow.iQ(".appTabIcon", + groupItem.$appTabTray)[index]).data("xulTab"); +} +