Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


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>

Messung V0.5
C=97 H=100 G=98

¤ Dauer der Verarbeitung: 0.0 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 und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge