summaryrefslogtreecommitdiffstats
path: root/accessible/tests/mochitest/states/test_link.html
blob: 3f89f9f7f736ea464c2a9149ea04f2cb0353a652 (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
<html>

<head>
  <title>HTML link states testing</title>

  <link rel="stylesheet" type="text/css"
        href="chrome://mochikit/content/tests/SimpleTest/test.css" />

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

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

  <script type="application/javascript">
    //gA11yEventDumpToConsole = true; // debug stuff

    var gLinkWindow = null;
    function closeDocChecker()
    {
      this.__proto__ = new asyncInvokerChecker(EVENT_DOCUMENT_LOAD_COMPLETE);

      this.check = function closeDocChecker_check(aEvent)
      {
        gLinkWindow = aEvent.accessible.rootDocument.window;
      }

      this.match = function closeDocChecker_match(aEvent)
      {
        // A temporary about:blank document gets loaded before 'example.com'
        // document.
        return aEvent.DOMNode.URL == "http://www.example.com/";
      }
    }

    function clickLink(aID)
    {
      this.eventSeq = [
        new stateChangeChecker(STATE_TRAVERSED, false, true, "link_traversed"),
        new closeDocChecker()
      ];

      this.invoke = function clickLink_invoke()
      {
        synthesizeMouse(getNode("link_traversed"), 1, 1, { shiftKey: true });
      }

      this.getID = function clickLink_getID()
      {
        return "link + '" + aID + "' clicked.";
      }
    }

    var gQueue = null;
    function doTest()
    {
      // a@href and its text node
      testStates("link_href", STATE_LINKED);
      testStates(getAccessible("link_href").firstChild, STATE_LINKED);

      // a@onclick
      testStates("link_click", STATE_LINKED);

      // a@onmousedown
      testStates("link_mousedown", STATE_LINKED);

      // a@onmouseup
      testStates("link_mouseup", STATE_LINKED);

      // a@role="link"
      testStates("link_arialink", STATE_LINKED);

      // a@role="button"
      testStates("link_ariabutton", 0, 0, STATE_LINKED);

      // a (no @href, no click event listener)
      testStates("link_notlink", 0, 0, STATE_LINKED);

      // a: no traversed state
      testStates("link_traversed", 0, 0, STATE_TRAVERSED);

      // a: traversed state
      //enableLogging("docload"); // debug stuff

      gQueue = new eventQueue();
      gQueue.push(new clickLink("link_traversed"));
      gQueue.onFinish =
        function()
        {
          gLinkWindow.close();
          //disableLogging(); // debug stuff
        }

      gQueue.invoke(); // will call SimpleTest.finsih();
    }

    SimpleTest.waitForExplicitFinish();
    addA11yLoadEvent(doTest);
  </script>

</head>

<body>

  <a target="_blank"
     href="https://bugzilla.mozilla.org/show_bug.cgi?id=423409"
     title="Expose click action if mouseup and mousedown are registered">
    Mozilla Bug 423409
  </a>
  <a target="_blank"
     href="https://bugzilla.mozilla.org/show_bug.cgi?id=754830"
     title="Calculate link states separately">
    Mozilla Bug 754830
  </a>
  <a target="_blank"
     href="https://bugzilla.mozilla.org/show_bug.cgi?id=757774"
     title="Fire state change event when link is traversed">
    Mozilla Bug 757774
  </a>
  <p id="display"></p>
  <div id="content" style="display: none"></div>
  <pre id="test">
  </pre>

  <a id="link_href" href="http://mozilla.org">link</a>
  <a id="link_click" onclick="">link</a>
  <a id="link_mousedown" onmousedown="">link</a>
  <a id="link_mouseup" onmouseup="">link</a>
  <a id="link_arialink" role="link">aria link</a>
  <a id="link_ariabutton" role="button">aria button</a>
  <a id="link_notlink">not link</a>

  <a id="link_traversed" href="http://www.example.com" target="_top">example.com</a>

</body>
</html>