diff -r 000000000000 -r 6474c204b198 browser/components/tabview/test/browser_tabview_bug587231.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/browser/components/tabview/test/browser_tabview_bug587231.js Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,96 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +let activeTab; +let testTab; +let testGroup; +let contentWindow; + +function test() { + waitForExplicitFinish(); + + // create new tab + testTab = gBrowser.addTab("about:blank"); + + window.addEventListener("tabviewshown", onTabViewWindowLoaded, false); + TabView.toggle(); +} + +function onTabViewWindowLoaded() { + window.removeEventListener("tabviewshown", onTabViewWindowLoaded, false); + ok(TabView.isVisible(), "Tab View is visible"); + + contentWindow = document.getElementById("tab-view").contentWindow; + + // create group + let testGroupRect = new contentWindow.Rect(20, 20, 300, 300); + testGroup = new contentWindow.GroupItem([], { bounds: testGroupRect }); + ok(testGroup.isEmpty(), "This group is empty"); + + ok(testTab._tabViewTabItem, "tab item exists"); + + // place tab in group + let testTabItem = testTab._tabViewTabItem; + + if (testTabItem.parent) + testTabItem.parent.remove(testTabItem); + testGroup.add(testTabItem); + + ok(testTab._tabViewTabItem, "tab item exists after adding to group"); + + // record last update time of tab canvas + let initialUpdateTime = testTabItem._lastTabUpdateTime; + + // simulate resize + let resizer = contentWindow.iQ('.iq-resizable-handle', testGroup.container)[0]; + let offsetX = 100; + let offsetY = 100; + let delay = 500; + + let funcChain = new Array(); + funcChain.push(function() { + EventUtils.synthesizeMouse( + resizer, 1, 1, { type: "mousedown" }, contentWindow); + setTimeout(funcChain.shift(), delay); + }); + // drag + for (let i = 4; i >= 0; i--) { + funcChain.push(function() { + EventUtils.synthesizeMouse( + resizer, Math.round(offsetX/4), Math.round(offsetY/4), + { type: "mousemove" }, contentWindow); + setTimeout(funcChain.shift(), delay); + }); + } + funcChain.push(function() { + EventUtils.synthesizeMouse(resizer, 0, 0, { type: "mouseup" }, + contentWindow); + setTimeout(funcChain.shift(), delay); + }); + funcChain.push(function() { + // verify that update time has changed after last update + let lastTime = testTabItem._lastTabUpdateTime; + let hbTiming = contentWindow.TabItems._heartbeatTiming; + ok((lastTime - initialUpdateTime) > hbTiming, "Tab has been updated:"+lastTime+"-"+initialUpdateTime+">"+hbTiming); + + // clean up + testGroup.remove(testTab._tabViewTabItem); + testTab._tabViewTabItem.close(); + testGroup.close(); + + let currentTabs = contentWindow.TabItems.getItems(); + ok(currentTabs[0], "A tab item exists to make active"); + contentWindow.UI.setActive(currentTabs[0]); + + window.addEventListener("tabviewhidden", finishTest, false); + TabView.toggle(); + }); + setTimeout(funcChain.shift(), delay); +} + +function finishTest() { + window.removeEventListener("tabviewhidden", finishTest, false); + ok(!TabView.isVisible(), "Tab View is not visible"); + + finish(); +}