Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/devtools/server/tests/xpcshell/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 2 kB image not shown  

Quelle  test_breakpoint-20.js   Sprache: JAVA

 
/* Any copyright is dedicated to the Public Domain.
 http://creativecommons.org/publicdomain/zero/1.0/ */


"use strict";

/**
 * Verify that when two of the "same" source are loaded concurrently (like e10s
 * frame scripts), breakpoints get hit in scripts defined by all sources.
 */


var gDebuggee;

add_task(
  threadFrontTest(async ({ threadFront, debuggee }) => {
    gDebuggee = debuggee;
    await testBreakpoint(threadFront);
  })
);

const testBreakpoint = async function (threadFront) {
  evalSetupCode();

  // Load the test source once.

  evalTestCode();
  equal(
    gDebuggee.functions.length,
    1,
    "The test code should have added a function."
  );

  // Set a breakpoint in the test source.

  const source = await getSource(threadFront, "test.js");
  setBreakpoint(threadFront, { sourceUrl: source.url, line: 3 });

  // Load the test source again.

  evalTestCode();
  equal(
    gDebuggee.functions.length,
    2,
    "The test code should have added another function."
  );

  // Should hit our breakpoint in a script defined by the first instance of the
  // test source.

  const bpPause1 = await executeOnNextTickAndWaitForPause(
    gDebuggee.functions[0],
    threadFront
  );
  equal(
    bpPause1.why.type,
    "breakpoint",
    "Should pause because of hitting our breakpoint (not debugger statement)."
  );
  const dbgStmtPause1 = await executeOnNextTickAndWaitForPause(
    () => resume(threadFront),
    threadFront
  );
  equal(
    dbgStmtPause1.why.type,
    "debuggerStatement",
    "And we should hit the debugger statement after the pause."
  );
  await resume(threadFront);

  // Should also hit our breakpoint in a script defined by the second instance
  // of the test source.

  const bpPause2 = await executeOnNextTickAndWaitForPause(
    gDebuggee.functions[1],
    threadFront
  );
  equal(
    bpPause2.why.type,
    "breakpoint",
    "Should pause because of hitting our breakpoint (not debugger statement)."
  );
  const dbgStmtPause2 = await executeOnNextTickAndWaitForPause(
    () => resume(threadFront),
    threadFront
  );
  equal(
    dbgStmtPause2.why.type,
    "debuggerStatement",
    "And we should hit the debugger statement after the pause."
  );
};

function evalSetupCode() {
  Cu.evalInSandbox("this.functions = [];", gDebuggee, "1.8""setup.js", 1);
}

function evalTestCode() {
  Cu.evalInSandbox(
    `                                 // 1
    this.functions.push(function () { // 2
      var setBreakpointHere = 1;      // 3
      debugger;                       // 4
    });                               // 5
    `,
    gDebuggee,
    "1.8",
    "test.js",
    1
  );
}

98%


¤ Dauer der Verarbeitung: 0.14 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung ist noch experimentell.