1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
|
/* vim:set ts=2 sw=2 sts=2 et: */
/*
* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*
* Contributor(s):
* Mihai Șucan <mihai.sucan@gmail.com>
*/
let hud, testDriver;
function testNext() {
testDriver.next();
}
function testGen() {
hud.jsterm.clearOutput();
let outputNode = hud.outputNode;
let scrollBox = outputNode.parentNode;
for (let i = 0; i < 150; i++) {
content.console.log("test message " + i);
}
waitForMessages({
webconsole: hud,
messages: [{
text: "test message 149",
category: CATEGORY_WEBDEV,
severity: SEVERITY_LOG,
}],
}).then(testNext);
yield undefined;
ok(scrollBox.scrollTop > 0, "scroll location is not at the top");
// scroll to the first node
outputNode.focus();
scrollBox.onscroll = () => {
info("onscroll top " + scrollBox.scrollTop);
if (scrollBox.scrollTop != 0) {
// Wait for scroll to 0.
return;
}
scrollBox.onscroll = null;
is(scrollBox.scrollTop, 0, "scroll location updated (moved to top)");
testNext();
};
EventUtils.synthesizeKey("VK_HOME", {}, hud.iframeWindow);
yield undefined;
// add a message and make sure scroll doesn't change
content.console.log("test message 150");
waitForMessages({
webconsole: hud,
messages: [{
text: "test message 150",
category: CATEGORY_WEBDEV,
severity: SEVERITY_LOG,
}],
}).then(testNext);
yield undefined;
scrollBox.onscroll = () => {
if (scrollBox.scrollTop != 0) {
// Wait for scroll to stabilize at the top.
return;
}
scrollBox.onscroll = null;
is(scrollBox.scrollTop, 0, "scroll location is still at the top");
testNext();
};
// Make sure that scroll stabilizes at the top. executeSoon() is needed for
// the yield to work.
executeSoon(scrollBox.onscroll);
yield undefined;
// scroll back to the bottom
outputNode.lastChild.focus();
scrollBox.onscroll = () => {
if (scrollBox.scrollTop == 0) {
// Wait for scroll to bottom.
return;
}
scrollBox.onscroll = null;
isnot(scrollBox.scrollTop, 0, "scroll location updated (moved to bottom)");
testNext();
};
EventUtils.synthesizeKey("VK_END", {});
yield undefined;
let oldScrollTop = scrollBox.scrollTop;
content.console.log("test message 151");
scrollBox.onscroll = () => {
if (scrollBox.scrollTop == oldScrollTop) {
// Wait for scroll to change.
return;
}
scrollBox.onscroll = null;
isnot(scrollBox.scrollTop, oldScrollTop, "scroll location updated (moved to bottom again)");
hud = testDriver = null;
finishTest();
};
yield undefined;
}
function test() {
addTab("data:text/html;charset=utf-8,Web Console test for bug 613642: remember scroll location");
browser.addEventListener("load", function tabLoad(aEvent) {
browser.removeEventListener(aEvent.type, tabLoad, true);
openConsole(null, function(aHud) {
hud = aHud;
testDriver = testGen();
testDriver.next();
});
}, true);
}
|