summaryrefslogtreecommitdiffstats
path: root/accessible/tests/mochitest/events/test_scroll.xhtml
blob: cf3aaa7cb479ae9bca28d7315cd597152d28ace9 (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
132
133
134
135
136
137
138
139
140
141
<?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 src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js" />
  <script 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, {
          triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
        });
        // Flush layout, so as to guarantee that the a11y tree is constructed.
        browserDocument().documentElement.getBoundingClientRect();
      }

      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, {
          referrerURI: null,
          charset: "",
          postData: null,
          inBackground: true,
          triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
        });
        // Flush layout, so as to guarantee that the a11y tree is constructed.
        browserDocument().documentElement.getBoundingClientRect();
      }

      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>