diff -r 000000000000 -r 6474c204b198 browser/devtools/responsivedesign/test/browser_responsiveruleview.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/browser/devtools/responsivedesign/test/browser_responsiveruleview.js Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,105 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +function test() { + let instance; + + let ruleView; + let inspector; + let mgr = ResponsiveUI.ResponsiveUIManager; + + waitForExplicitFinish(); + + gBrowser.selectedTab = gBrowser.addTab(); + gBrowser.selectedBrowser.addEventListener("load", function onload() { + gBrowser.selectedBrowser.removeEventListener("load", onload, true); + waitForFocus(startTest, content); + }, true); + + content.location = "data:text/html;charset=utf-8,
" + + function numberOfRules() { + return ruleView.element.querySelectorAll(".ruleview-code").length; + } + + function startTest() { + document.getElementById("Tools:ResponsiveUI").doCommand(); + executeSoon(onUIOpen); + } + + function onUIOpen() { + instance = gBrowser.selectedTab.__responsiveUI; + ok(instance, "instance of the module is attached to the tab."); + + instance.stack.setAttribute("notransition", "true"); + registerCleanupFunction(function() { + instance.stack.removeAttribute("notransition"); + }); + + instance.setSize(500, 500); + + openRuleView().then(onInspectorUIOpen); + } + + function onInspectorUIOpen(args) { + inspector = args.inspector; + ruleView = args.view; + ok(inspector, "Got inspector instance"); + + let div = content.document.getElementsByTagName("div")[0]; + inspector.selection.setNode(div); + inspector.once("inspector-updated", testShrink); + } + + function testShrink() { + + is(numberOfRules(), 2, "Should have two rules initially."); + + ruleView.element.addEventListener("CssRuleViewRefreshed", function refresh() { + ruleView.element.removeEventListener("CssRuleViewRefreshed", refresh, false); + is(numberOfRules(), 3, "Should have three rules after shrinking."); + testGrow(); + }, false); + + instance.setSize(100, 100); + } + + function testGrow() { + ruleView.element.addEventListener("CssRuleViewRefreshed", function refresh() { + ruleView.element.removeEventListener("CssRuleViewRefreshed", refresh, false); + is(numberOfRules(), 2, "Should have two rules after growing."); + testEscapeCloses(); + }, false); + + instance.setSize(500, 500); + } + + function testEscapeCloses() { + is(document.getElementById("Tools:ResponsiveUI").getAttribute("checked"), "true", "menu checked"); + ok(!inspector._toolbox._splitConsole, "Console is not split."); + + mgr.once("off", function() {executeSoon(finishUp)}); + EventUtils.synthesizeKey("VK_ESCAPE", {}); + } + + function finishUp() { + ok(!inspector._toolbox._splitConsole, "Console is still not split after pressing escape."); + + // Menus are correctly updated? + is(document.getElementById("Tools:ResponsiveUI").getAttribute("checked"), "false", "menu unchecked"); + + gBrowser.removeCurrentTab(); + finish(); + } +}