Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/docshell/test/mochitest/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 3 kB image not shown  

Quelle  test_bug529119-1.html   Sprache: HTML

 
 products/Sources/formale Sprachen/C/Firefox/docshell/test/mochitest/test_bug529119-1.html


<!DOCTYPE HTML>
<html>
<head>
<title>Test bug 529119</title>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />

<script class="testbody" type="text/javascript">

SimpleTest.waitForExplicitFinish();
SimpleTest.requestFlakyTimeout("untriaged");

var workingURL = "http://mochi.test:8888/tests/docshell/test/mochitest/bug529119-window.html";
var faultyURL = "https://www.some-nonexistent-domain-27489274c892748217cn2384.test/";

var w = null;
var phase = 0;
var gotWrongPageOnTryAgainClick = false;
// Token that represents which page we currently have loaded.
var token = 0;

function delay(msec) {
  return new Promise(resolve => setTimeout(resolve, msec));
}

async function assignToken(tokenToAssign) {
  await SpecialPowers.spawn(w, [tokenToAssign],
                            newToken => { this.content.token = newToken });
}

async function pollForPage() {
  while (true) {
    try {
      // When we do our navigation, there may be an interstitial about:blank
      // page if the navigation involves a process switch.  That about:blank
      // will exist between the new process's docshell being created and the
      // actual page that's being loaded loading (which can happen async from
      // the docshell creation).  We want to avoid treating the initial
      // about:blank as a new page.
      //
      // We could conceivably expose Document::IsInitialDocument() as a
      // ChromeOnly thing and use it here, but let's just filter out all
      // about:blank, since we don't expect any in this test.
      var haveNewPage = await SpecialPowers.spawn(w, [token],
        currentToken => this.content.token != currentToken &&
                        this.content.location.href != "about:blank");

      if (haveNewPage) {
        ++token;
        assignToken(token);
        break;
      }
    } catch (e) {
      // Something went wrong; just keep waiting.
    }

    await delay(100);
  }
}

async function windowLoaded() {
  switch (phase) {
    case 0:
      assignToken(token);

      /* 2. We have succeededfully loaded a page, now go to a faulty URL */
      window.setTimeout(function() {
        w.location.href = faultyURL;
      }, 0);

      phase = 1;

      await pollForPage(w);
      is(await SpecialPowers.spawn(w, [], () => this.content.location.href),
         faultyURL,
         "Is on an error page initially");

      /* 3. now, while we are on the error page, try to reload it, actually
         click the "Try Again" button */
      SpecialPowers.spawn(w, [], () => this.content.location.reload());

      await pollForPage(w);

      /* 4-finish, check we are still on the error page */
      is(await SpecialPowers.spawn(w, [], () => this.content.location.href),
         faultyURL,
         "Is on an error page");
      is(gotWrongPageOnTryAgainClick, false,
        "Must not get www.example.com page on reload of an error page");
      w.close();
      SimpleTest.finish();
      break;

    case 1:
      /* 4-check, we must not get here! */
      gotWrongPageOnTryAgainClick = true;
      break;
  }
}

function startTest() {
  /* 1. load a URL that leads to an error page */
  w = window.open(workingURL);
}

</script>
</head>
<body onload="startTest();">
</body>
</html>

100%


¤ Dauer der Verarbeitung: 0.5 Sekunden  ¤

*© 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.