mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-08-19 19:03:07 +09:00
67 lines
2.4 KiB
JavaScript
67 lines
2.4 KiB
JavaScript
/* -*- 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/ */
|
|
|
|
/**
|
|
* Makes sure the source editor's scroll location doesn't change when
|
|
* a variable inspection popup is opened and a watch expression is
|
|
* also evaluated at the same time.
|
|
*/
|
|
|
|
const TAB_URL = EXAMPLE_URL + "doc_frame-parameters.html";
|
|
|
|
function test() {
|
|
Task.spawn(function* () {
|
|
let options = {
|
|
source: TAB_URL,
|
|
line: 1
|
|
};
|
|
let [tab,, panel] = yield initDebugger(TAB_URL, options);
|
|
let win = panel.panelWin;
|
|
let events = win.EVENTS;
|
|
let editor = win.DebuggerView.editor;
|
|
let editorContainer = win.document.getElementById("editor");
|
|
let bubble = win.DebuggerView.VariableBubble;
|
|
let expressions = win.DebuggerView.WatchExpressions;
|
|
let tooltip = bubble._tooltip.panel;
|
|
|
|
let onCaretAndScopes = waitForCaretAndScopes(panel, 24);
|
|
callInTab(tab, "start");
|
|
yield onCaretAndScopes;
|
|
|
|
let expressionsEvaluated = waitForDebuggerEvents(panel, events.FETCHED_WATCH_EXPRESSIONS);
|
|
expressions.addExpression("this");
|
|
editor.focus();
|
|
yield expressionsEvaluated;
|
|
|
|
// Scroll to the top of the editor and inspect variables.
|
|
let breakpointScrollPosition = editor.getScrollInfo().top;
|
|
editor.setFirstVisibleLine(0);
|
|
let topmostScrollPosition = editor.getScrollInfo().top;
|
|
|
|
ok(topmostScrollPosition < breakpointScrollPosition,
|
|
"The editor is now scrolled to the top (0).");
|
|
is(editor.getFirstVisibleLine(), 0,
|
|
"The editor is now scrolled to the top (1).");
|
|
|
|
let failPopup = () => ok(false, "The popup has got unexpectedly hidden.");
|
|
let failScroll = () => ok(false, "The editor has got unexpectedly scrolled.");
|
|
tooltip.addEventListener("popuphiding", failPopup);
|
|
editorContainer.addEventListener("scroll", failScroll);
|
|
editor.on("scroll", () => {
|
|
if (editor.getScrollInfo().top > topmostScrollPosition) {
|
|
ok(false, "The editor scrolled back to the breakpoint location.");
|
|
}
|
|
});
|
|
|
|
expressionsEvaluated = waitForDebuggerEvents(panel, events.FETCHED_WATCH_EXPRESSIONS);
|
|
yield openVarPopup(panel, { line: 14, ch: 15 });
|
|
yield expressionsEvaluated;
|
|
|
|
tooltip.removeEventListener("popuphiding", failPopup);
|
|
editorContainer.removeEventListener("scroll", failScroll);
|
|
|
|
yield resumeDebuggerThenCloseAndFinish(panel);
|
|
});
|
|
}
|