docshell/test/chrome/bug662200_window.xul

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/docshell/test/chrome/bug662200_window.xul	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,129 @@
     1.4 +<?xml version="1.0"?>
     1.5 +<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
     1.6 +
     1.7 +<window id="303267Test"
     1.8 +        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
     1.9 +        width="600"
    1.10 +        height="600"
    1.11 +        onload="setTimeout(nextTest,0);"
    1.12 +        title="bug 662200 test">
    1.13 +
    1.14 +  <script type="application/javascript"
    1.15 +  src="docshell_helpers.js">
    1.16 +  </script>
    1.17 +  <script type="application/javascript" src= "chrome://mochikit/content/chrome-harness.js" />
    1.18 +  <script type="application/javascript"><![CDATA[
    1.19 +  
    1.20 +    // Define the generator-iterator for the tests.
    1.21 +    var tests = testIterator();
    1.22 +
    1.23 +    ////
    1.24 +    // Execute the next test in the generator function.
    1.25 +    //
    1.26 +    function nextTest() {
    1.27 +      tests.next();
    1.28 +    }
    1.29 +
    1.30 +    ////
    1.31 +    // Generator function for test steps for bug 662200:  
    1.32 +    // Description goes here.
    1.33 +    //
    1.34 +    function testIterator()
    1.35 +    {
    1.36 +      // Load the first test page
    1.37 +      var navData = {
    1.38 +        uri: getHttpUrl("662200a.html"),
    1.39 +        eventsToListenFor: ["pageshow"],
    1.40 +        expectedEvents: [ {type: "pageshow", title: "A"} ],
    1.41 +        onNavComplete: nextTest
    1.42 +      };
    1.43 +      doPageNavigation(navData);
    1.44 +      yield undefined;
    1.45 +      
    1.46 +      // Load the second test page.
    1.47 +      navData = {
    1.48 +        eventsToListenFor: ["pageshow", "pagehide"],
    1.49 +        expectedEvents: [ {type: "pagehide", 
    1.50 +                           title: "A"},
    1.51 +                          {type: "pageshow", 
    1.52 +                           title: "B"} ],
    1.53 +        onNavComplete: nextTest
    1.54 +      }
    1.55 +      waitForPageEvents(navData);
    1.56 +      var link = TestWindow.getDocument().getElementById("link");
    1.57 +      var event = TestWindow.getDocument().createEvent("MouseEvents");
    1.58 +      event.initMouseEvent("click", true, true, TestWindow.getWindow(),
    1.59 +                           0, 0, 0, 0, 0, false, false, false, false, 0, null);
    1.60 +      link.dispatchEvent(event);
    1.61 +      yield undefined;
    1.62 +
    1.63 +      // Load the third test page.
    1.64 +      navData = {
    1.65 +        eventsToListenFor: ["pageshow", "pagehide"],
    1.66 +        expectedEvents: [ {type: "pagehide", 
    1.67 +                           title: "B"},
    1.68 +                          {type: "pageshow", 
    1.69 +                           title: "C"} ],
    1.70 +        onNavComplete: nextTest
    1.71 +      };
    1.72 +      waitForPageEvents(navData);
    1.73 +      var link = TestWindow.getDocument().getElementById("link");
    1.74 +      var event = TestWindow.getDocument().createEvent("MouseEvents");
    1.75 +      event.initMouseEvent("click", true, true, TestWindow.getWindow(),
    1.76 +                           0, 0, 0, 0, 0, false, false, false, false, 0, null);
    1.77 +      link.dispatchEvent(event);
    1.78 +      yield undefined;
    1.79 +      
    1.80 +      // Go back.
    1.81 +      navData = {
    1.82 +        back: true,
    1.83 +        eventsToListenFor: ["pageshow", "pagehide"],
    1.84 +        expectedEvents: [ {type: "pagehide", 
    1.85 +                           title: "C"},
    1.86 +                          {type: "pageshow", 
    1.87 +                           title: "B"} ],
    1.88 +        onNavComplete: nextTest
    1.89 +      };
    1.90 +      doPageNavigation(navData);
    1.91 +      yield undefined;
    1.92 +
    1.93 +      var Ci = Components.interfaces;
    1.94 +      var docshell = TestWindow.getWindow()
    1.95 +                               .QueryInterface(Ci.nsIInterfaceRequestor)
    1.96 +                               .getInterface(Ci.nsIWebNavigation)
    1.97 +                               .QueryInterface(Ci.nsIDocShell);
    1.98 +      var shistory = docshell.QueryInterface(Ci.nsIInterfaceRequestor)
    1.99 +                             .getInterface(Ci.nsISHistory)
   1.100 +                             .QueryInterface(Ci.nsIWebNavigation);
   1.101 +
   1.102 +      // Reload.
   1.103 +      navData = {
   1.104 +        eventsToListenFor: ["pageshow", "pagehide"],
   1.105 +        expectedEvents: [ {type: "pagehide", 
   1.106 +                           title: "B"},
   1.107 +                          {type: "pageshow", 
   1.108 +                           title: "B"} ],
   1.109 +        onNavComplete: nextTest
   1.110 +      };
   1.111 +      // Asking the docshell harness to reload for us will call reload on
   1.112 +      // nsDocShell which has different behavior than the reload on nsSHistory
   1.113 +      // so we call reload explicitly here
   1.114 +      waitForPageEvents(navData);
   1.115 +      shistory.reload(0);
   1.116 +      yield undefined;
   1.117 +
   1.118 +      // After this sequence of events, we should be able to go back and forward
   1.119 +      is(TestWindow.getBrowser().canGoBack, true, "Should be able to go back!");
   1.120 +      is(TestWindow.getBrowser().canGoForward, true, "Should be able to go forward!");
   1.121 +      is(shistory.requestedIndex, -1, "Requested index should be cleared!");
   1.122 +
   1.123 +      // Tell the framework the test is finished.  Include the final 'yield' 
   1.124 +      // statement to prevent a StopIteration exception from being thrown.
   1.125 +      finish();
   1.126 +      yield undefined;
   1.127 +    }
   1.128 +    
   1.129 +  ]]></script>
   1.130 +
   1.131 +  <browser type="content-primary" flex="1" id="content" src="about:blank"/>
   1.132 +</window>

mercurial