From 5f8de423f190bbb79a62f804151bc24824fa32d8 Mon Sep 17 00:00:00 2001 From: "Matt A. Tobin" Date: Fri, 2 Feb 2018 04:16:08 -0500 Subject: Add m-esr52 at 52.6.0 --- .../test/browser_webconsole_bug_601352_scroll.js | 84 ++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 devtools/client/webconsole/test/browser_webconsole_bug_601352_scroll.js (limited to 'devtools/client/webconsole/test/browser_webconsole_bug_601352_scroll.js') diff --git a/devtools/client/webconsole/test/browser_webconsole_bug_601352_scroll.js b/devtools/client/webconsole/test/browser_webconsole_bug_601352_scroll.js new file mode 100644 index 000000000..89bd83a7a --- /dev/null +++ b/devtools/client/webconsole/test/browser_webconsole_bug_601352_scroll.js @@ -0,0 +1,84 @@ +/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* vim: set ft=javascript ts=2 et sw=2 tw=80: */ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +// Test that the console output scrolls to JS eval results when there are many +// messages displayed. See bug 601352. + +"use strict"; + +add_task(function* () { + let {tab} = yield loadTab("data:text/html;charset=utf-8,Web Console test " + + "for bug 601352"); + let hud = yield openConsole(tab); + hud.jsterm.clearOutput(); + + yield ContentTask.spawn(gBrowser.selectedBrowser, {}, function* () { + let longMessage = ""; + for (let i = 0; i < 50; i++) { + longMessage += "LongNonwrappingMessage"; + } + + for (let i = 0; i < 50; i++) { + content.console.log("test1 message " + i); + } + + content.console.log(longMessage); + + for (let i = 0; i < 50; i++) { + content.console.log("test2 message " + i); + } + }); + + yield waitForMessages({ + webconsole: hud, + messages: [{ + text: "test1 message 0", + }, { + text: "test1 message 49", + }, { + text: "LongNonwrappingMessage", + }, { + text: "test2 message 0", + }, { + text: "test2 message 49", + }], + }); + + let node = yield hud.jsterm.execute("1+1"); + + let scrollNode = hud.ui.outputWrapper; + let rectNode = node.getBoundingClientRect(); + let rectOutput = scrollNode.getBoundingClientRect(); + + yield ContentTask.spawn(gBrowser.selectedBrowser, { + rectNode, + rectOutput, + scrollHeight: scrollNode.scrollHeight, + scrollTop: scrollNode.scrollTop, + clientHeight: scrollNode.clientHeight, + }, function* (args) { + console.debug("rectNode", args.rectNode, "rectOutput", args.rectOutput); + console.log("scrollNode scrollHeight", args.scrollHeight, + "scrollTop", args.scrollTop, "clientHeight", + args.clientHeight); + }); + + isnot(scrollNode.scrollTop, 0, "scroll location is not at the top"); + + // The bounding client rect .top/left coordinates are relative to the + // console iframe. + + // Visible scroll viewport. + let height = rectOutput.height; + + // Top and bottom coordinates of the last message node, relative to the + // outputNode. + let top = rectNode.top - rectOutput.top; + let bottom = top + rectNode.height; + info("node top " + top + " node bottom " + bottom + " node clientHeight " + + node.clientHeight); + + ok(top >= 0 && bottom <= height, "last message is visible"); +}); -- cgit v1.2.3