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


Quelle  test_bug773962.xhtml   Sprache: unbekannt

 
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
<?xml-stylesheet type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"?>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=773962
-->
<window title="Mozilla Bug 773962"
        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
  <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>

  <!-- test results are displayed in the html:body -->
  <body xmlns="http://www.w3.org/1999/xhtml">
  <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=773962"
     target="_blank">Mozilla Bug 773962</a>
  </body>

  <!-- test code goes here -->
  <script type="application/javascript">
  <![CDATA[

  /** Test for remapping Xray waivers during brain transplant. **/
  SimpleTest.waitForExplicitFinish();

  var gFramesLoaded = 0;
  function frameLoaded() {
    ++gFramesLoaded;
    if (gFramesLoaded == 2)
      startTest();
    if (gFramesLoaded == 3)
      finishTest();
  }

  var win1;
  var win2;
  var node1;
  var loc1;
  var win1Waiver;
  var node1Waiver;
  var loc1Waiver;

  function startTest() {
    // grab the windows and the node.
    win1 = document.getElementById('frame1').contentWindow;
    win2 = document.getElementById('frame2').contentWindow;
    node1 = win1.document.getElementById('text');
    loc1 = win1.location;

    // Grab some Xray waivers.
    win1Waiver = win1.wrappedJSObject;
    node1Waiver = node1.wrappedJSObject;
    loc1Waiver = win1Waiver.location;

    // Adopt node1 into win2. This causes node1 to be transplanted.
    win2.document.adoptNode(node1);

    // Navigate win1. This causes win1 to be transplanted.
    win1.location = "https://test2.example.org/tests/js/xpconnect/tests/mochitest/file_empty.html";

    // The above happens async. Our onload handler will call finishTest() when we're ready.
  }

  function finishTest() {
    // Now, recompute some wrappers.
    Cu.recomputeWrappers();

    // First, pat ourselves on the back for not asserting/crashing. That's most of
    // what we're really testing here.
    ok(true, "Didn't crash!");

    // Now, make sure everything is set up how we expect.
    ok(Cu.isDeadWrapper(win1Waiver), "window waiver should go away after navigation");
    ok(node1Waiver === node1.wrappedJSObject, "waivers still work");
    ok(Cu.unwaiveXrays(node1Waiver) === node1, "waivers still work");

    // The semantics of location are tricky, because win1 now has a new location object.
    // In fact, loc1 should be a dead object proxy. Let's make sure we get this right.
    ok(loc1 !== win1.location, "navigation means different window.location");
    ok(loc1Waiver !== win1.location.wrappedJSObject, "navigation means different window.location");

    // Whew.
    SimpleTest.finish();
  }

  ]]>
  </script>
  <iframe id="frame1" onload="frameLoaded();" type="content" src="https://test1.example.org/tests/js/xpconnect/tests/mochitest/file_empty.html" />
  <iframe id="frame2" onload="frameLoaded();" type="content" src="https://test1.example.org/tests/js/xpconnect/tests/mochitest/file_empty.html" />
</window>

[ Dauer der Verarbeitung: 0.18 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


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