summaryrefslogtreecommitdiffstats
path: root/devtools/client/debugger/test/mochitest/browser_dbg-pause-ux.js
blob: 689324ca5059aabd3953de5c0c2eeb6c9c832fd9 (plain)
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
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */

"use strict";

add_task(async function () {
  const dbg = await initDebugger("doc-scripts.html");

  // Make sure that we can set a breakpoint on a line out of the
  // viewport, and that pausing there scrolls the editor to it.
  const longSrc = findSource(dbg, "long.js");
  await selectSource(dbg, "long.js");
  await addBreakpoint(dbg, longSrc, 66);
  invokeInTab("testModel");
  await waitForPaused(dbg, "long.js");

  const pauseScrollTop = getScrollTop(dbg);

  info("1. adding a breakpoint should not scroll the editor");
  getCM(dbg).scrollTo(0, 0);
  await addBreakpoint(dbg, longSrc, 11);
  is(getScrollTop(dbg), 0, "scroll position");

  info("2. searching should jump to the match");
  pressKey(dbg, "fileSearch");
  type(dbg, "check");

  const cm = getCM(dbg);
  await waitFor(
    () => cm.getSelection() == "check",
    "Wait for actual selection in CodeMirror"
  );
  is(
    cm.getCursor().line,
    26,
    "The line of first check occurence in long.js is selected (this is zero-based)"
  );
  // The column is the end of "check", so after 'k'
  is(
    cm.getCursor().ch,
    51,
    "The column of first check occurence in long.js is selected (this is zero-based)"
  );

  const matchScrollTop = getScrollTop(dbg);
  Assert.notEqual(pauseScrollTop, matchScrollTop, "did not jump to debug line");
});

function getScrollTop(dbg) {
  return getCM(dbg).doc.scrollTop;
}