summaryrefslogtreecommitdiffstats
path: root/accessible/tests/mochitest/states/test_visibility.xhtml
blob: cc23b6b4bc1372d0c784d97525c5f3053c6bbc1e (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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
<?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"
        xmlns:html="http://www.w3.org/1999/xhtml"
        title="XUL elements visibility states testing">

  <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.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">
  <![CDATA[
    function openMenu(aID, aSubID, aOffscreenSubID)
    {
      this.menuNode = getNode(aID);

      this.eventSeq = [
        new invokerChecker(EVENT_FOCUS, this.menuNode)
      ];

      this.invoke = function openMenu_invoke()
      {
        this.menuNode.open = true;
      }

      this.finalCheck = function openMenu_finalCheck()
      {
        testStates(aID, 0, 0, STATE_INVISIBLE | STATE_OFFSCREEN);
        testStates(aSubID, 0, 0, STATE_INVISIBLE | STATE_OFFSCREEN);
        if (aOffscreenSubID)
          testStates(aOffscreenSubID, STATE_OFFSCREEN, 0, STATE_INVISIBLE);
      }

      this.getID = function openMenu_invoke()
      {
        return "open menu '" + aID + "' and test states";
      }
    }

    function closeMenu(aID, aSubID, aSub2ID)
    {
      this.menuNode = getNode(aID);

      this.eventSeq = [
        new invokerChecker(EVENT_FOCUS, document)
      ];

      this.invoke = function openMenu_invoke()
      {
        this.menuNode.open = false;
      }

      this.finalCheck = function openMenu_finalCheck()
      {
        testStates(aID, 0, 0, STATE_INVISIBLE | STATE_OFFSCREEN);
        testStates(aSubID, STATE_INVISIBLE, 0, STATE_OFFSCREEN);
        testStates(aSub2ID, STATE_INVISIBLE, 0, STATE_OFFSCREEN);
      }

      this.getID = function openMenu_invoke()
      {
        return "open menu and test states";
      }
    }

    var gQueue = null;
    function doTest()
    {
      testStates("deck_pane2", 0, 0, STATE_INVISIBLE | STATE_OFFSCREEN);
      testStates("tabs_pane1", 0, 0, STATE_INVISIBLE | STATE_OFFSCREEN);
      testStates("tabs_pane2", STATE_OFFSCREEN, 0, STATE_INVISIBLE);

      gQueue = new eventQueue();
      gQueue.push(new openMenu("mi_file1", "mi_file1.1"));
      gQueue.push(new openMenu("mi_file1.2", "mi_file1.2.1", "mi_file1.2.4"));
      gQueue.push(new closeMenu("mi_file1", "mi_file1.1", "mi_file1.2.1"));
      gQueue.invoke(); // Will call SimpleTest.finish();
    }

    SimpleTest.waitForExplicitFinish();
    addA11yLoadEvent(doTest);
  ]]>
  </script>
  <html:style>
  <![CDATA[
     /* We want to control the height of the menu and which elements are visible,
        and the Windows menu padding interferes with this. */
     menupopup::part(arrowscrollbox) {
       margin: 0 !important;
       padding-block: 0 !important;
     }
     ]]>
  </html:style>

  <hbox 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=810260"
         title="xul:deck hidden pages shouldn't be offscreen">
        Mozilla Bug 810260
     </a>
     <a target="_blank"
         href="https://bugzilla.mozilla.org/show_bug.cgi?id=865591"
         title="Visible menu item have offscreen state">
        Mozilla Bug 865591
     </a>

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

    <vbox flex="1">

      <deck selectedIndex="1">
        <description value="This is the first page" id="deck_pane1"/>
        <button label="This is the second page" id="deck_pane2"/>
      </deck>

      <tabbox>
        <tabs>
          <tab>tab1</tab>
          <tab>tab2</tab>
        </tabs>
        <tabpanels>
          <description value="This is the first page" id="tabs_pane1"/>
          <button label="This is the second page" id="tabs_pane2"/>
        </tabpanels>
      </tabbox>

      <menubar>
        <menu label="File" id="mi_file1">
          <menupopup>
            <menuitem label="SubFile" id="mi_file1.1"/>
            <menu label="SubFile2" id="mi_file1.2">
              <menupopup style="max-height: 3em;">
                <menuitem style="appearance: none; height: 1em" label="SubSubFile" id="mi_file1.2.1"/>
                <menuitem style="appearance: none; height: 1em" label="SubSubFile2" id="mi_file1.2.2"/>
                <menuitem style="appearance: none; height: 1em" label="SubSubFile3" id="mi_file1.2.3"/>
                <menuitem style="appearance: none; height: 1em" label="SubSubFile4" id="mi_file1.2.4"/>
              </menupopup>
            </menu>
          </menupopup>
        </menu>
      </menubar>
    </vbox>
  </hbox>

</window>