зеркало из https://github.com/mozilla/gecko-dev.git
Backed out changeset f893f5da2e63 (bug 1465491) for failing Devtools on devtools/client/debugger/new/test/mochitest/browser_dbg_rr_breakpoints-01.js
--HG-- extra : rebase_source : 285f8fdaf658f93f18b642799dddc4d65cffc23c
This commit is contained in:
Родитель
ae8b50b2bc
Коммит
931957468b
|
@ -629,8 +629,6 @@ support-files =
|
|||
examples/script-switching-01.js
|
||||
examples/times2.js
|
||||
examples/doc_rr_basic.html
|
||||
examples/doc_rr_continuous.html
|
||||
examples/doc_rr_recovery.html
|
||||
|
||||
[browser_dbg-asm.js]
|
||||
[browser_dbg-async-stepping.js]
|
||||
|
@ -721,29 +719,3 @@ skip-if = debug || (verify && (os == 'win')) || (os == "win" && os_version == "6
|
|||
skip-if = true
|
||||
[browser_dbg_rr_breakpoints-01.js]
|
||||
skip-if = os != "mac" || debug || !nightly_build
|
||||
[browser_dbg_rr_breakpoints-02.js]
|
||||
skip-if = os != "mac" || debug || !nightly_build
|
||||
[browser_dbg_rr_breakpoints-03.js]
|
||||
skip-if = os != "mac" || debug || !nightly_build
|
||||
[browser_dbg_rr_breakpoints-04.js]
|
||||
skip-if = os != "mac" || debug || !nightly_build
|
||||
[browser_dbg_rr_breakpoints-05.js]
|
||||
skip-if = os != "mac" || debug || !nightly_build
|
||||
[browser_dbg_rr_record.js]
|
||||
skip-if = os != "mac" || debug || !nightly_build
|
||||
[browser_dbg_rr_stepping-01.js]
|
||||
skip-if = os != "mac" || debug || !nightly_build
|
||||
[browser_dbg_rr_stepping-02.js]
|
||||
skip-if = os != "mac" || debug || !nightly_build
|
||||
[browser_dbg_rr_stepping-03.js]
|
||||
skip-if = os != "mac" || debug || !nightly_build
|
||||
[browser_dbg_rr_stepping-04.js]
|
||||
skip-if = os != "mac" || debug || !nightly_build
|
||||
[browser_dbg_rr_recovery-01.js]
|
||||
skip-if = os != "mac" || debug || !nightly_build
|
||||
[browser_dbg_rr_replay-01.js]
|
||||
skip-if = os != "mac" || debug || !nightly_build
|
||||
[browser_dbg_rr_replay-02.js]
|
||||
skip-if = os != "mac" || debug || !nightly_build
|
||||
[browser_dbg_rr_replay-03.js]
|
||||
skip-if = os != "mac" || debug || !nightly_build
|
||||
|
|
|
@ -1,29 +0,0 @@
|
|||
/* -*- 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 unhandled divergence while evaluating at a breakpoint with Web Replay.
|
||||
async function test() {
|
||||
waitForExplicitFinish();
|
||||
|
||||
let tab = gBrowser.addTab(null, { recordExecution: "*" });
|
||||
gBrowser.selectedTab = tab;
|
||||
openTrustedLinkIn(EXAMPLE_URL + "doc_rr_basic.html", "current");
|
||||
await once(Services.ppmm, "RecordingFinished");
|
||||
|
||||
let toolbox = await attachDebugger(tab), client = toolbox.threadClient;
|
||||
await client.interrupt();
|
||||
await setBreakpoint(client, "doc_rr_basic.html", 21);
|
||||
await rewindToLine(client, 21);
|
||||
await checkEvaluateInTopFrame(client, "number", 10);
|
||||
await checkEvaluateInTopFrameThrows(client, "window.alert(3)");
|
||||
await checkEvaluateInTopFrame(client, "number", 10);
|
||||
await checkEvaluateInTopFrameThrows(client, "window.alert(3)");
|
||||
await checkEvaluateInTopFrame(client, "number", 10);
|
||||
await checkEvaluateInTopFrame(client, "testStepping2()", undefined);
|
||||
|
||||
await toolbox.destroy();
|
||||
await gBrowser.removeTab(tab);
|
||||
finish();
|
||||
}
|
|
@ -1,29 +0,0 @@
|
|||
/* -*- 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 some issues when stepping around after hitting a breakpoint while recording.
|
||||
async function test() {
|
||||
waitForExplicitFinish();
|
||||
|
||||
let tab = gBrowser.addTab(null, { recordExecution: "*" });
|
||||
gBrowser.selectedTab = tab;
|
||||
openTrustedLinkIn(EXAMPLE_URL + "doc_rr_continuous.html", "current");
|
||||
|
||||
let toolbox = await attachDebugger(tab), client = toolbox.threadClient;
|
||||
await client.interrupt();
|
||||
await setBreakpoint(client, "doc_rr_continuous.html", 19);
|
||||
await resumeToLine(client, 19);
|
||||
await reverseStepOverToLine(client, 18);
|
||||
await checkEvaluateInTopFrame(client, "SpecialPowers.Cu.recordReplayDirective(/* AlwaysTakeTemporarySnapshots */ 3)", undefined);
|
||||
await stepInToLine(client, 22);
|
||||
await setBreakpoint(client, "doc_rr_continuous.html", 24);
|
||||
await resumeToLine(client, 24);
|
||||
await setBreakpoint(client, "doc_rr_continuous.html", 22);
|
||||
await rewindToLine(client, 22);
|
||||
|
||||
await toolbox.destroy();
|
||||
await gBrowser.removeTab(tab);
|
||||
finish();
|
||||
}
|
|
@ -1,36 +0,0 @@
|
|||
/* -*- 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 navigating back to earlier breakpoints while recording, then resuming
|
||||
// recording.
|
||||
async function test() {
|
||||
waitForExplicitFinish();
|
||||
|
||||
let tab = gBrowser.addTab(null, { recordExecution: "*" });
|
||||
gBrowser.selectedTab = tab;
|
||||
openTrustedLinkIn(EXAMPLE_URL + "doc_rr_continuous.html", "current");
|
||||
|
||||
let toolbox = await attachDebugger(tab), client = toolbox.threadClient;
|
||||
await client.interrupt();
|
||||
await setBreakpoint(client, "doc_rr_continuous.html", 14);
|
||||
await resumeToLine(client, 14);
|
||||
let value = await evaluateInTopFrame(client, "number");
|
||||
await resumeToLine(client, 14);
|
||||
await checkEvaluateInTopFrame(client, "number", value + 1);
|
||||
await rewindToLine(client, 14);
|
||||
await checkEvaluateInTopFrame(client, "number", value);
|
||||
await resumeToLine(client, 14);
|
||||
await checkEvaluateInTopFrame(client, "number", value + 1);
|
||||
await resumeToLine(client, 14);
|
||||
await checkEvaluateInTopFrame(client, "number", value + 2);
|
||||
await resumeToLine(client, 14);
|
||||
await checkEvaluateInTopFrame(client, "number", value + 3);
|
||||
await rewindToLine(client, 14);
|
||||
await checkEvaluateInTopFrame(client, "number", value + 2);
|
||||
|
||||
await toolbox.destroy();
|
||||
await gBrowser.removeTab(tab);
|
||||
finish();
|
||||
}
|
|
@ -1,31 +0,0 @@
|
|||
/* -*- 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 hitting breakpoints when rewinding past the point where the breakpoint
|
||||
// script was created.
|
||||
async function test() {
|
||||
waitForExplicitFinish();
|
||||
|
||||
let tab = gBrowser.addTab(null, { recordExecution: "*" });
|
||||
gBrowser.selectedTab = tab;
|
||||
openTrustedLinkIn(EXAMPLE_URL + "doc_rr_basic.html", "current");
|
||||
await once(Services.ppmm, "RecordingFinished");
|
||||
|
||||
let toolbox = await attachDebugger(tab), client = toolbox.threadClient;
|
||||
await client.interrupt();
|
||||
|
||||
// Rewind to the beginning of the recording.
|
||||
await rewindToLine(client, undefined);
|
||||
|
||||
await setBreakpoint(client, "doc_rr_basic.html", 21);
|
||||
await resumeToLine(client, 21);
|
||||
await checkEvaluateInTopFrame(client, "number", 1);
|
||||
await resumeToLine(client, 21);
|
||||
await checkEvaluateInTopFrame(client, "number", 2);
|
||||
|
||||
await toolbox.destroy();
|
||||
await gBrowser.removeTab(tab);
|
||||
finish();
|
||||
}
|
|
@ -1,19 +0,0 @@
|
|||
/* -*- 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 basic recording of a tab without any debugging.
|
||||
async function test() {
|
||||
waitForExplicitFinish();
|
||||
|
||||
var recordingTab = gBrowser.addTab(null, { recordExecution: "*" });
|
||||
gBrowser.selectedTab = recordingTab;
|
||||
openTrustedLinkIn(EXAMPLE_URL + "doc_rr_basic.html", "current");
|
||||
await once(Services.ppmm, "RecordingFinished");
|
||||
|
||||
await gBrowser.removeTab(recordingTab);
|
||||
|
||||
ok(true, "Finished");
|
||||
finish();
|
||||
}
|
|
@ -1,28 +0,0 @@
|
|||
/* -*- 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 basic recovery of crashed child processes in web replay.
|
||||
async function test() {
|
||||
waitForExplicitFinish();
|
||||
|
||||
let tab = gBrowser.addTab(null, { recordExecution: "*" });
|
||||
gBrowser.selectedTab = tab;
|
||||
openTrustedLinkIn(EXAMPLE_URL + "doc_rr_recovery.html", "current");
|
||||
await once(Services.ppmm, "RecordingFinished");
|
||||
|
||||
let toolbox = await attachDebugger(tab), client = toolbox.threadClient;
|
||||
await client.interrupt();
|
||||
await setBreakpoint(client, "doc_rr_recovery.html", 21);
|
||||
await rewindToLine(client, 21);
|
||||
await checkEvaluateInTopFrame(client, "SpecialPowers.Cu.recordReplayDirective(/* CrashSoon */ 1)", undefined);
|
||||
await stepOverToLine(client, 22);
|
||||
await stepOverToLine(client, 23);
|
||||
await checkEvaluateInTopFrame(client, "SpecialPowers.Cu.recordReplayDirective(/* CrashSoon */ 1); " +
|
||||
"SpecialPowers.Cu.recordReplayDirective(/* MaybeCrash */ 2)", undefined);
|
||||
|
||||
await toolbox.destroy();
|
||||
await gBrowser.removeTab(tab);
|
||||
finish();
|
||||
}
|
|
@ -1,39 +0,0 @@
|
|||
/* -*- 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/ */
|
||||
|
||||
// Basic test for saving a recording and then replaying it in a new tab.
|
||||
async function test() {
|
||||
waitForExplicitFinish();
|
||||
|
||||
let recordingFile = newRecordingFile();
|
||||
let recordingTab = gBrowser.addTab(null, { recordExecution: "*" });
|
||||
gBrowser.selectedTab = recordingTab;
|
||||
openTrustedLinkIn(EXAMPLE_URL + "doc_rr_basic.html", "current");
|
||||
await once(Services.ppmm, "RecordingFinished");
|
||||
|
||||
let tabParent = recordingTab.linkedBrowser.frameLoader.tabParent;
|
||||
ok(tabParent, "Found recording tab parent");
|
||||
ok(tabParent.saveRecording(recordingFile), "Saved recording");
|
||||
await once(Services.ppmm, "SaveRecordingFinished");
|
||||
|
||||
let replayingTab = gBrowser.addTab(null, { replayExecution: recordingFile });
|
||||
gBrowser.selectedTab = replayingTab;
|
||||
await once(Services.ppmm, "HitRecordingEndpoint");
|
||||
|
||||
let toolbox = await attachDebugger(replayingTab), client = toolbox.threadClient;
|
||||
await client.interrupt();
|
||||
await setBreakpoint(client, "doc_rr_basic.html", 21);
|
||||
await rewindToLine(client, 21);
|
||||
await checkEvaluateInTopFrame(client, "number", 10);
|
||||
await rewindToLine(client, 21);
|
||||
await checkEvaluateInTopFrame(client, "number", 9);
|
||||
await resumeToLine(client, 21);
|
||||
await checkEvaluateInTopFrame(client, "number", 10);
|
||||
|
||||
await toolbox.destroy();
|
||||
await gBrowser.removeTab(recordingTab);
|
||||
await gBrowser.removeTab(replayingTab);
|
||||
finish();
|
||||
}
|
|
@ -1,49 +0,0 @@
|
|||
/* -*- 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 ending a recording at a breakpoint and then separately replaying to the end.
|
||||
async function test() {
|
||||
waitForExplicitFinish();
|
||||
|
||||
let recordingFile = newRecordingFile();
|
||||
let recordingTab = gBrowser.addTab(null, { recordExecution: "*" });
|
||||
gBrowser.selectedTab = recordingTab;
|
||||
openTrustedLinkIn(EXAMPLE_URL + "doc_rr_continuous.html", "current");
|
||||
|
||||
let toolbox = await attachDebugger(recordingTab), client = toolbox.threadClient;
|
||||
await client.interrupt();
|
||||
await setBreakpoint(client, "doc_rr_continuous.html", 14);
|
||||
await resumeToLine(client, 14);
|
||||
await resumeToLine(client, 14);
|
||||
await reverseStepOverToLine(client, 13);
|
||||
let lastNumberValue = await evaluateInTopFrame(client, "number");
|
||||
|
||||
let tabParent = recordingTab.linkedBrowser.frameLoader.tabParent;
|
||||
ok(tabParent, "Found recording tab parent");
|
||||
ok(tabParent.saveRecording(recordingFile), "Saved recording");
|
||||
await once(Services.ppmm, "SaveRecordingFinished");
|
||||
|
||||
await toolbox.destroy();
|
||||
await gBrowser.removeTab(recordingTab);
|
||||
|
||||
let replayingTab = gBrowser.addTab(null, { replayExecution: recordingFile });
|
||||
gBrowser.selectedTab = replayingTab;
|
||||
await once(Services.ppmm, "HitRecordingEndpoint");
|
||||
|
||||
toolbox = await attachDebugger(replayingTab);
|
||||
client = toolbox.threadClient;
|
||||
await client.interrupt();
|
||||
await checkEvaluateInTopFrame(client, "number", lastNumberValue);
|
||||
await reverseStepOverToLine(client, 13);
|
||||
await setBreakpoint(client, "doc_rr_continuous.html", 14);
|
||||
await rewindToLine(client, 14);
|
||||
await checkEvaluateInTopFrame(client, "number", lastNumberValue - 1);
|
||||
await resumeToLine(client, 14);
|
||||
await checkEvaluateInTopFrame(client, "number", lastNumberValue);
|
||||
|
||||
await toolbox.destroy();
|
||||
await gBrowser.removeTab(replayingTab);
|
||||
finish();
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
/* -*- 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 for saving a recording and then replaying it in a new tab, with rewinding disabled.
|
||||
async function test() {
|
||||
waitForExplicitFinish();
|
||||
|
||||
await pushPref("devtools.recordreplay.enableRewinding", false);
|
||||
|
||||
let recordingFile = newRecordingFile();
|
||||
let recordingTab = gBrowser.addTab(null, { recordExecution: "*" });
|
||||
gBrowser.selectedTab = recordingTab;
|
||||
openTrustedLinkIn(EXAMPLE_URL + "doc_rr_basic.html", "current");
|
||||
await once(Services.ppmm, "RecordingFinished");
|
||||
|
||||
let tabParent = recordingTab.linkedBrowser.frameLoader.tabParent;
|
||||
ok(tabParent, "Found recording tab parent");
|
||||
ok(tabParent.saveRecording(recordingFile), "Saved recording");
|
||||
await once(Services.ppmm, "SaveRecordingFinished");
|
||||
|
||||
let replayingTab = gBrowser.addTab(null, { replayExecution: recordingFile });
|
||||
gBrowser.selectedTab = replayingTab;
|
||||
await once(Services.ppmm, "HitRecordingEndpoint");
|
||||
|
||||
ok(true, "Replayed to end of recording");
|
||||
|
||||
await gBrowser.removeTab(recordingTab);
|
||||
await gBrowser.removeTab(replayingTab);
|
||||
finish();
|
||||
}
|
|
@ -1,29 +0,0 @@
|
|||
/* -*- 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 basic step-over/back functionality in web replay.
|
||||
async function test() {
|
||||
waitForExplicitFinish();
|
||||
|
||||
let tab = gBrowser.addTab(null, { recordExecution: "*" });
|
||||
gBrowser.selectedTab = tab;
|
||||
openTrustedLinkIn(EXAMPLE_URL + "doc_rr_basic.html", "current");
|
||||
await once(Services.ppmm, "RecordingFinished");
|
||||
|
||||
let toolbox = await attachDebugger(tab), client = toolbox.threadClient;
|
||||
await client.interrupt();
|
||||
await setBreakpoint(client, "doc_rr_basic.html", 21);
|
||||
await rewindToLine(client, 21);
|
||||
await checkEvaluateInTopFrame(client, "number", 10);
|
||||
await reverseStepOverToLine(client, 20);
|
||||
await checkEvaluateInTopFrame(client, "number", 9);
|
||||
await checkEvaluateInTopFrameThrows(client, "window.alert(3)");
|
||||
await stepOverToLine(client, 21);
|
||||
await checkEvaluateInTopFrame(client, "number", 10);
|
||||
|
||||
await toolbox.destroy();
|
||||
await gBrowser.removeTab(tab);
|
||||
finish();
|
||||
}
|
|
@ -1,30 +0,0 @@
|
|||
/* -*- 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 fixes for some simple stepping bugs.
|
||||
async function test() {
|
||||
waitForExplicitFinish();
|
||||
|
||||
let tab = gBrowser.addTab(null, { recordExecution: "*" });
|
||||
gBrowser.selectedTab = tab;
|
||||
openTrustedLinkIn(EXAMPLE_URL + "doc_rr_basic.html", "current");
|
||||
await once(Services.ppmm, "RecordingFinished");
|
||||
|
||||
let toolbox = await attachDebugger(tab), client = toolbox.threadClient;
|
||||
await client.interrupt();
|
||||
await setBreakpoint(client, "doc_rr_basic.html", 22);
|
||||
await rewindToLine(client, 22);
|
||||
await stepInToLine(client, 25);
|
||||
await stepOverToLine(client, 26);
|
||||
await stepOverToLine(client, 27);
|
||||
await reverseStepInToLine(client, 33);
|
||||
await reverseStepOverToLine(client, 32);
|
||||
await reverseStepOutToLine(client, 26);
|
||||
await reverseStepOverToLine(client, 25);
|
||||
|
||||
await toolbox.destroy();
|
||||
await gBrowser.removeTab(tab);
|
||||
finish();
|
||||
}
|
|
@ -1,28 +0,0 @@
|
|||
/* -*- 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 stepping back while recording, then resuming recording.
|
||||
async function test() {
|
||||
waitForExplicitFinish();
|
||||
|
||||
let tab = gBrowser.addTab(null, { recordExecution: "*" });
|
||||
gBrowser.selectedTab = tab;
|
||||
openTrustedLinkIn(EXAMPLE_URL + "doc_rr_continuous.html", "current");
|
||||
|
||||
let toolbox = await attachDebugger(tab), client = toolbox.threadClient;
|
||||
await client.interrupt();
|
||||
await setBreakpoint(client, "doc_rr_continuous.html", 13);
|
||||
await resumeToLine(client, 13);
|
||||
let value = await evaluateInTopFrame(client, "number");
|
||||
await reverseStepOverToLine(client, 12);
|
||||
await checkEvaluateInTopFrame(client, "number", value - 1);
|
||||
await resumeToLine(client, 13);
|
||||
await resumeToLine(client, 13);
|
||||
await checkEvaluateInTopFrame(client, "number", value + 1);
|
||||
|
||||
await toolbox.destroy();
|
||||
await gBrowser.removeTab(tab);
|
||||
finish();
|
||||
}
|
|
@ -1,45 +0,0 @@
|
|||
/* -*- 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/ */
|
||||
|
||||
// Stepping past the beginning or end of a frame should act like a step-out.
|
||||
async function test() {
|
||||
waitForExplicitFinish();
|
||||
|
||||
let tab = gBrowser.addTab(null, { recordExecution: "*" });
|
||||
gBrowser.selectedTab = tab;
|
||||
openTrustedLinkIn(EXAMPLE_URL + "doc_rr_basic.html", "current");
|
||||
await once(Services.ppmm, "RecordingFinished");
|
||||
|
||||
let toolbox = await attachDebugger(tab), client = toolbox.threadClient;
|
||||
await client.interrupt();
|
||||
await setBreakpoint(client, "doc_rr_basic.html", 21);
|
||||
await rewindToLine(client, 21);
|
||||
await checkEvaluateInTopFrame(client, "number", 10);
|
||||
await reverseStepOverToLine(client, 20);
|
||||
await reverseStepOverToLine(client, 12);
|
||||
|
||||
// After reverse-stepping out of the topmost frame we should rewind to the
|
||||
// last breakpoint hit.
|
||||
await reverseStepOverToLine(client, 21);
|
||||
await checkEvaluateInTopFrame(client, "number", 9);
|
||||
|
||||
await stepOverToLine(client, 22);
|
||||
await stepOverToLine(client, 23);
|
||||
// Line 13 seems like it should be the next stepping point, but the column
|
||||
// numbers reported by the JS engine and required by the pause points do not
|
||||
// match, and we don't stop here.
|
||||
//await stepOverToLine(client, 13);
|
||||
await stepOverToLine(client, 17);
|
||||
await stepOverToLine(client, 18);
|
||||
|
||||
// After forward-stepping out of the topmost frame we should run forward to
|
||||
// the next breakpoint hit.
|
||||
await stepOverToLine(client, 21);
|
||||
await checkEvaluateInTopFrame(client, "number", 10);
|
||||
|
||||
await toolbox.destroy();
|
||||
await gBrowser.removeTab(tab);
|
||||
finish();
|
||||
}
|
|
@ -1,28 +0,0 @@
|
|||
<html lang="en" dir="ltr">
|
||||
<body>
|
||||
<div id="maindiv">Hello World!</div>
|
||||
</body>
|
||||
<script>
|
||||
var number = 0;
|
||||
function f() {
|
||||
updateNumber();
|
||||
window.setTimeout(f, 1);
|
||||
}
|
||||
function updateNumber() {
|
||||
number++;
|
||||
document.getElementById("maindiv").innerHTML = "Number: " + number;
|
||||
testStepping();
|
||||
}
|
||||
function testStepping() {
|
||||
var a = 0;
|
||||
testStepping2();
|
||||
return a;
|
||||
}
|
||||
function testStepping2() {
|
||||
var c = 0;
|
||||
c++;
|
||||
c--;
|
||||
}
|
||||
window.setTimeout(f, 100);
|
||||
</script>
|
||||
</html>
|
|
@ -1,26 +0,0 @@
|
|||
<html lang="en" dir="ltr">
|
||||
<body>
|
||||
<div id="maindiv">Hello World!</div>
|
||||
</body>
|
||||
<script>
|
||||
// this line intentionally left blank
|
||||
// this line intentionally left blank
|
||||
// this line intentionally left blank
|
||||
const cpmm = SpecialPowers.Services.cpmm;
|
||||
var number = 0;
|
||||
function f() {
|
||||
updateNumber();
|
||||
if (number >= 10) {
|
||||
cpmm.sendAsyncMessage("RecordingFinished");
|
||||
return;
|
||||
}
|
||||
window.setTimeout(f, 1);
|
||||
}
|
||||
function updateNumber() {
|
||||
number++;
|
||||
document.getElementById("maindiv").innerHTML = "Number: " + number;
|
||||
SpecialPowers.Cu.recordReplayDirective(/* MaybeCrash */ 2);
|
||||
}
|
||||
window.setTimeout(f, 1);
|
||||
</script>
|
||||
</html>
|
Загрузка…
Ссылка в новой задаче