|
Packit |
f0b94e |
/* Any copyright is dedicated to the Public Domain.
|
|
Packit |
f0b94e |
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
function getCoordsFromPosition(cm, { line, ch }) {
|
|
Packit |
f0b94e |
return cm.charCoords({ line: ~~line, ch: ~~ch });
|
|
Packit |
f0b94e |
}
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
function hoverAtPos(dbg, { line, ch }) {
|
|
Packit |
f0b94e |
const cm = getCM(dbg);
|
|
Packit |
f0b94e |
const coords = getCoordsFromPosition(cm, { line: line - 1, ch });
|
|
Packit |
f0b94e |
const tokenEl = dbg.win.document.elementFromPoint(coords.left, coords.top);
|
|
Packit |
f0b94e |
tokenEl.dispatchEvent(
|
|
Packit |
f0b94e |
new MouseEvent("mouseover", {
|
|
Packit |
f0b94e |
bubbles: true,
|
|
Packit |
f0b94e |
cancelable: true,
|
|
Packit |
f0b94e |
view: dbg.win
|
|
Packit |
f0b94e |
})
|
|
Packit |
f0b94e |
);
|
|
Packit |
f0b94e |
}
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
function assertTooltip(dbg, { result, expression }) {
|
|
Packit |
f0b94e |
const previewEl = findElement(dbg, "tooltip");
|
|
Packit |
f0b94e |
is(previewEl.innerText, result, "Preview text shown to user");
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
const preview = dbg.selectors.getPreview(dbg.getState());
|
|
Packit |
f0b94e |
is(`${preview.result}`, result, "Preview.result");
|
|
Packit |
f0b94e |
is(preview.updating, false, "Preview.updating");
|
|
Packit |
f0b94e |
is(preview.expression, expression, "Preview.expression");
|
|
Packit |
f0b94e |
}
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
function assertPopup(dbg, { field, value, expression }) {
|
|
Packit |
f0b94e |
const previewEl = findElement(dbg, "popup");
|
|
Packit |
f0b94e |
is(previewEl.innerText, "", "Preview text shown to user");
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
const preview = dbg.selectors.getPreview(dbg.getState());
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
is(
|
|
Packit |
f0b94e |
`${preview.result.preview.ownProperties[field].value}`,
|
|
Packit |
f0b94e |
value,
|
|
Packit |
f0b94e |
"Preview.result"
|
|
Packit |
f0b94e |
);
|
|
Packit |
f0b94e |
is(preview.updating, false, "Preview.updating");
|
|
Packit |
f0b94e |
is(preview.expression, expression, "Preview.expression");
|
|
Packit |
f0b94e |
}
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
add_task(async function() {
|
|
Packit |
f0b94e |
const dbg = await initDebugger("doc-sourcemaps.html");
|
|
Packit |
f0b94e |
const { selectors: { getSelectedSource }, getState } = dbg;
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
await waitForSources(dbg, "entry.js", "output.js", "times2.js", "opts.js");
|
|
Packit |
f0b94e |
await selectSource(dbg, "times2");
|
|
Packit |
f0b94e |
await addBreakpoint(dbg, "times2", 2);
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
invokeInTab("keepMeAlive");
|
|
Packit |
f0b94e |
await waitForPaused(dbg);
|
|
Packit |
f0b94e |
await waitForSelectedSource(dbg, "times2");
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
const tooltipPreviewed = waitForDispatch(dbg, "SET_PREVIEW");
|
|
Packit |
f0b94e |
hoverAtPos(dbg, { line: 2, ch: 9 });
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
await tooltipPreviewed;
|
|
Packit |
f0b94e |
assertTooltip(dbg, { result: 4, expression: "x" });
|
|
Packit |
f0b94e |
});
|