summaryrefslogtreecommitdiffstats
path: root/accessible/tests/mochitest/events/test_scroll.xul
blob: e3316137632897ea652591bfdfef1b61cfcc1379 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>

<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
                 type="text/css"?>

<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

  <script type="application/javascript"
          src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js" />
  <script type="application/javascript"
          src="chrome://mochikit/content/chrome-harness.js"/>

  <script type="application/javascript"
          src="../common.js" />
  <script type="application/javascript"
          src="../role.js" />
  <script type="application/javascript"
          src="../states.js" />
  <script type="application/javascript"
          src="../events.js" />
  <script type="application/javascript"
          src="../browser.js"></script>

  <script type="application/javascript">
  <![CDATA[

    ////////////////////////////////////////////////////////////////////////////
    // Tests

    function getAnchorJumpInTabDocument(aTabIdx)
    {
      var tabDoc = aTabIdx ? tabDocumentAt(aTabIdx) : currentTabDocument();
      return tabDoc.querySelector("a[name='link1']");
    }

    function loadTab(aURL)
    {
      this.eventSeq = [
        new asyncInvokerChecker(EVENT_DOCUMENT_LOAD_COMPLETE, currentTabDocument),
        new asyncInvokerChecker(EVENT_SCROLLING_START, getAnchorJumpInTabDocument)
      ];

      this.invoke = function loadTab_invoke()
      {
        tabBrowser().loadURI(aURL);
      }

      this.getID = function loadTab_getID()
      {
        return "load tab: " + aURL;
      }
    }

    function loadTabInBackground(aURL)
    {
      this.eventSeq = [
        new invokerChecker(EVENT_DOCUMENT_LOAD_COMPLETE, tabDocumentAt, 1)
      ];

      this.unexpectedEventSeq = [
        new invokerChecker(EVENT_SCROLLING_START, getAnchorJumpInTabDocument, 1)
      ];

      this.invoke = function loadTabInBackground_invoke()
      {
        tabBrowser().loadOneTab(aURL, null, "", null, true);
      }

      this.getID = function loadTabInBackground_getID()
      {
        return "load tab in background: " + aURL;
      }
    }

    function switchToBackgroundTab()
    {
      this.eventSeq = [
        new invokerChecker(EVENT_SCROLLING_START, getAnchorJumpInTabDocument)
      ];

      this.invoke = function switchToBackgroundTab_invoke()
      {
        tabBrowser().selectTabAtIndex(1);
      }

      this.getID = function switchToBackgroundTab_getID()
      {
        return "switch to background tab";
      }
    }

    //gA11yEventDumpToConsole = true; // debug stuff

    var gQueue = null;
    function doTest()
    {
      gQueue = new eventQueue();

      var url = "http://mochi.test:8888/a11y/accessible/tests/mochitest/events/scroll.html#link1";
      gQueue.push(new loadTab(url));
      gQueue.push(new loadTabInBackground(url));
      gQueue.push(new switchToBackgroundTab());
      gQueue.onFinish = function() { closeBrowserWindow(); }

      gQueue.invoke(); // Will call SimpleTest.finish();
    }

    SimpleTest.waitForExplicitFinish();
    openBrowserWindow(doTest);
  ]]>
  </script>

  <vbox flex="1" style="overflow: auto;">
    <body xmlns="http://www.w3.org/1999/xhtml">
      <a target="_blank"
         href="https://bugzilla.mozilla.org/show_bug.cgi?id=691734"
         title="Make sure scrolling start event is fired when document receive focus">
        Mozilla Bug 691734
      </a>

      <p id="display"></p>
      <div id="content" style="display: none">
      </div>
      <pre id="test">
      </pre>
    </body>

    <vbox id="eventdump"></vbox>
  </vbox>
</window>