1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/browser/base/content/test/general/browser_pinnedTabs.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,73 @@ 1.4 +var tabs; 1.5 + 1.6 +function index(tab) Array.indexOf(gBrowser.tabs, tab); 1.7 + 1.8 +function indexTest(tab, expectedIndex, msg) { 1.9 + var diag = "tab " + tab + " should be at index " + expectedIndex; 1.10 + if (msg) 1.11 + msg = msg + " (" + diag + ")"; 1.12 + else 1.13 + msg = diag; 1.14 + is(index(tabs[tab]), expectedIndex, msg); 1.15 +} 1.16 + 1.17 +function PinUnpinHandler(tab, eventName) { 1.18 + this.eventCount = 0; 1.19 + var self = this; 1.20 + tab.addEventListener(eventName, function() { 1.21 + tab.removeEventListener(eventName, arguments.callee, true); 1.22 + 1.23 + self.eventCount++; 1.24 + }, true); 1.25 + gBrowser.tabContainer.addEventListener(eventName, function(e) { 1.26 + gBrowser.tabContainer.removeEventListener(eventName, arguments.callee, true); 1.27 + 1.28 + if (e.originalTarget == tab) { 1.29 + self.eventCount++; 1.30 + } 1.31 + }, true); 1.32 +} 1.33 + 1.34 +function test() { 1.35 + tabs = [gBrowser.selectedTab, gBrowser.addTab(), gBrowser.addTab(), gBrowser.addTab()]; 1.36 + indexTest(0, 0); 1.37 + indexTest(1, 1); 1.38 + indexTest(2, 2); 1.39 + indexTest(3, 3); 1.40 + 1.41 + var eh = new PinUnpinHandler(tabs[3], "TabPinned"); 1.42 + gBrowser.pinTab(tabs[3]); 1.43 + is(eh.eventCount, 2, "TabPinned event should be fired"); 1.44 + indexTest(0, 1); 1.45 + indexTest(1, 2); 1.46 + indexTest(2, 3); 1.47 + indexTest(3, 0); 1.48 + 1.49 + eh = new PinUnpinHandler(tabs[1], "TabPinned"); 1.50 + gBrowser.pinTab(tabs[1]); 1.51 + is(eh.eventCount, 2, "TabPinned event should be fired"); 1.52 + indexTest(0, 2); 1.53 + indexTest(1, 1); 1.54 + indexTest(2, 3); 1.55 + indexTest(3, 0); 1.56 + 1.57 + gBrowser.moveTabTo(tabs[3], 3); 1.58 + indexTest(3, 1, "shouldn't be able to mix a pinned tab into normal tabs"); 1.59 + 1.60 + gBrowser.moveTabTo(tabs[2], 0); 1.61 + indexTest(2, 2, "shouldn't be able to mix a normal tab into pinned tabs"); 1.62 + 1.63 + eh = new PinUnpinHandler(tabs[1], "TabUnpinned"); 1.64 + gBrowser.unpinTab(tabs[1]); 1.65 + is(eh.eventCount, 2, "TabUnpinned event should be fired"); 1.66 + indexTest(1, 1, "unpinning a tab should move a tab to the start of normal tabs"); 1.67 + 1.68 + eh = new PinUnpinHandler(tabs[3], "TabUnpinned"); 1.69 + gBrowser.unpinTab(tabs[3]); 1.70 + is(eh.eventCount, 2, "TabUnpinned event should be fired"); 1.71 + indexTest(3, 0, "unpinning a tab should move a tab to the start of normal tabs"); 1.72 + 1.73 + gBrowser.removeTab(tabs[1]); 1.74 + gBrowser.removeTab(tabs[2]); 1.75 + gBrowser.removeTab(tabs[3]); 1.76 +}