accessible/tests/mochitest/states/test_link.html

Tue, 06 Jan 2015 21:39:09 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Tue, 06 Jan 2015 21:39:09 +0100
branch
TOR_BUG_9701
changeset 8
97036ab72558
permissions
-rw-r--r--

Conditionally force memory storage according to privacy.thirdparty.isolate;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.

     1 <html>
     3 <head>
     4   <title>HTML link states testing</title>
     6   <link rel="stylesheet" type="text/css"
     7         href="chrome://mochikit/content/tests/SimpleTest/test.css" />
     9   <script type="application/javascript"
    10           src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
    11   <script type="application/javascript"
    12           src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script>
    14   <script type="application/javascript"
    15           src="../common.js"></script>
    16   <script type="application/javascript"
    17           src="../role.js"></script>
    18   <script type="application/javascript"
    19           src="../states.js"></script>
    20   <script type="application/javascript"
    21           src="../events.js"></script>
    23   <script type="application/javascript">
    24     //gA11yEventDumpToConsole = true; // debug stuff
    26     var gLinkWindow = null;
    27     function closeDocChecker()
    28     {
    29       this.__proto__ = new asyncInvokerChecker(EVENT_DOCUMENT_LOAD_COMPLETE);
    31       this.check = function closeDocChecker_check(aEvent)
    32       {
    33         gLinkWindow = aEvent.accessible.rootDocument.window;
    34       }
    36       this.match = function closeDocChecker_match(aEvent)
    37       {
    38         // A temporary about:blank document gets loaded before 'example.com'
    39         // document.
    40         return aEvent.DOMNode.URL == "http://www.example.com/";
    41       }
    42     }
    44     function clickLink(aID)
    45     {
    46       this.eventSeq = [
    47         new stateChangeChecker(STATE_TRAVERSED, false, true, "link_traversed"),
    48         new closeDocChecker()
    49       ];
    51       this.invoke = function clickLink_invoke()
    52       {
    53         synthesizeMouse(getNode("link_traversed"), 1, 1, { shiftKey: true });
    54       }
    56       this.getID = function clickLink_getID()
    57       {
    58         return "link + '" + aID + "' clicked.";
    59       }
    60     }
    62     var gQueue = null;
    63     function doTest()
    64     {
    65       // a@href and its text node
    66       testStates("link_href", STATE_LINKED);
    67       testStates(getAccessible("link_href").firstChild, STATE_LINKED);
    69       // a@onclick
    70       testStates("link_click", STATE_LINKED);
    72       // a@onmousedown
    73       testStates("link_mousedown", STATE_LINKED);
    75       // a@onmouseup
    76       testStates("link_mouseup", STATE_LINKED);
    78       // a@role="link"
    79       testStates("link_arialink", STATE_LINKED);
    81       // a@role="button"
    82       testStates("link_ariabutton", 0, 0, STATE_LINKED);
    84       // a (no @href, no click event listener)
    85       testStates("link_notlink", 0, 0, STATE_LINKED);
    87       // a: no traversed state
    88       testStates("link_traversed", 0, 0, STATE_TRAVERSED);
    90       // a: traversed state
    91       //enableLogging("docload"); // debug stuff
    93       gQueue = new eventQueue();
    94       gQueue.push(new clickLink("link_traversed"));
    95       gQueue.onFinish =
    96         function()
    97         {
    98           gLinkWindow.close();
    99           //disableLogging(); // debug stuff
   100         }
   102       gQueue.invoke(); // will call SimpleTest.finsih();
   103     }
   105     SimpleTest.waitForExplicitFinish();
   106     addA11yLoadEvent(doTest);
   107   </script>
   109 </head>
   111 <body>
   113   <a target="_blank"
   114      href="https://bugzilla.mozilla.org/show_bug.cgi?id=423409"
   115      title="Expose click action if mouseup and mousedown are registered">
   116     Mozilla Bug 423409
   117   </a>
   118   <a target="_blank"
   119      href="https://bugzilla.mozilla.org/show_bug.cgi?id=754830"
   120      title="Calculate link states separately">
   121     Mozilla Bug 754830
   122   </a>
   123   <a target="_blank"
   124      href="https://bugzilla.mozilla.org/show_bug.cgi?id=757774"
   125      title="Fire state change event when link is traversed">
   126     Mozilla Bug 757774
   127   </a>
   128   <p id="display"></p>
   129   <div id="content" style="display: none"></div>
   130   <pre id="test">
   131   </pre>
   133   <a id="link_href" href="http://mozilla.org">link</a>
   134   <a id="link_click" onclick="">link</a>
   135   <a id="link_mousedown" onmousedown="">link</a>
   136   <a id="link_mouseup" onmouseup="">link</a>
   137   <a id="link_arialink" role="link">aria link</a>
   138   <a id="link_ariabutton" role="button">aria button</a>
   139   <a id="link_notlink">not link</a>
   141   <a id="link_traversed" href="http://www.example.com" target="_top">example.com</a>
   143 </body>
   144 </html>

mercurial