michael@0: /* Any copyright is dedicated to the Public Domain. michael@0: http://creativecommons.org/publicdomain/zero/1.0/ */ michael@0: michael@0: function test() { michael@0: waitForExplicitFinish(); michael@0: newWindowWithTabView(onTabViewShown, null, 850); michael@0: } michael@0: michael@0: function onTabViewShown(win) { michael@0: registerCleanupFunction(function () win.close()); michael@0: michael@0: let contentWindow = win.TabView.getContentWindow(); michael@0: let currentGroup = contentWindow.GroupItems.getActiveGroupItem(); michael@0: michael@0: function checkResized(diffX, diffY, shouldResize, text, callback) { michael@0: let {width: origWidth, height: origHeight} = currentGroup.getBounds(); michael@0: michael@0: resizeWindow(win, diffX, diffY, function () { michael@0: let {width: newWidth, height: newHeight} = currentGroup.getBounds(); michael@0: let resized = (origWidth != newWidth || origHeight != newHeight); michael@0: michael@0: is(resized, shouldResize, text + ": The group should " + michael@0: (shouldResize ? "" : "not ") + "have been resized"); michael@0: michael@0: callback(); michael@0: }); michael@0: } michael@0: michael@0: function next() { michael@0: let test = tests.shift(); michael@0: michael@0: if (test) michael@0: checkResized.apply(this, test.concat([next])); michael@0: else michael@0: finishTest(); michael@0: } michael@0: michael@0: function finishTest() { michael@0: // reset the usersize of the group, so this should clear the "cramped" feeling. michael@0: currentGroup.setSize(100, 100, true); michael@0: currentGroup.setUserSize(); michael@0: checkResized(400, 400, false, "After clearing the cramp", finish); michael@0: } michael@0: michael@0: let tests = [ michael@0: // diffX, diffY, shouldResize, text michael@0: [ -50, -50, false, "A little smaller"], michael@0: [ 50, 50, false, "A little bigger"], michael@0: [-400, -400, true, "Much smaller"], michael@0: [ 400, 400, true, "Bigger after much smaller"], michael@0: [-400, -400, true, "Much smaller"] michael@0: ]; michael@0: michael@0: // setup michael@0: currentGroup.setSize(600, 600, true); michael@0: currentGroup.setUserSize(); michael@0: michael@0: // run the tests michael@0: next(); michael@0: } michael@0: michael@0: // ---------- michael@0: function resizeWindow(win, diffX, diffY, callback) { michael@0: let targetWidth = win.outerWidth + diffX; michael@0: let targetHeight = win.outerHeight + diffY; michael@0: michael@0: (function tryResize() { michael@0: let {outerWidth: width, outerHeight: height} = win; michael@0: if (width != targetWidth || height != targetHeight) { michael@0: win.resizeTo(targetWidth, targetHeight); michael@0: executeSoon(tryResize); michael@0: } else { michael@0: callback(); michael@0: } michael@0: })(); michael@0: }