accessible/tests/mochitest/selectable.js

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 /**
     2  * Test selection getter methods of nsIAccessibleSelectable.
     3  *
     4  * @param aIdentifier        [in] selectable container accessible
     5  * @param aSelectedChildren  [in] array of selected children
     6  */
     7 function testSelectableSelection(aIdentifier, aSelectedChildren, aMsg)
     8 {
     9   var acc = getAccessible(aIdentifier, [nsIAccessibleSelectable]);
    10   if (!acc)
    11     return;
    13   var msg = aMsg ? aMsg : "";
    14   var len = aSelectedChildren.length;
    16   // getSelectedChildren
    17   var selectedChildren = acc.selectedItems;
    18   is(selectedChildren ? selectedChildren.length : 0, len,
    19      msg + "getSelectedChildren: wrong selected children count for " +
    20      prettyName(aIdentifier));
    22   for (var idx = 0; idx < len; idx++) {
    23     var expectedAcc = getAccessible(aSelectedChildren[idx]);
    24     var actualAcc = selectedChildren.queryElementAt(idx, nsIAccessible);
    25     is(actualAcc, expectedAcc,
    26        msg + "getSelectedChildren: wrong selected child at index " + idx +
    27        " for " + prettyName(aIdentifier) + " { actual : " +
    28        prettyName(actualAcc) + ", expected: " + prettyName(expectedAcc) + "}");
    29   }
    31   // selectedItemCount
    32   is(acc.selectedItemCount, aSelectedChildren.length,
    33      "selectedItemCount: wrong selected children count for " + prettyName(aIdentifier));
    35   // getSelectedItemAt
    36   for (var idx = 0; idx < len; idx++) {
    37     var expectedAcc = getAccessible(aSelectedChildren[idx]);
    38     is(acc.getSelectedItemAt(idx), expectedAcc,
    39        msg + "getSelectedItemAt: wrong selected child at index " + idx + " for " +
    40        prettyName(aIdentifier));
    41   }
    43   // isItemSelected
    44   testIsItemSelected(acc, acc, { value: 0 }, aSelectedChildren, msg);
    45 }
    47 /**
    48  * Test isItemSelected method, helper for testSelectableSelection
    49  */
    50 function testIsItemSelected(aSelectAcc, aTraversedAcc, aIndexObj, aSelectedChildren, aMsg)
    51 {
    52   var childCount = aTraversedAcc.childCount;
    53   for (var idx = 0; idx < childCount; idx++) {
    54     var child = aTraversedAcc.getChildAt(idx);
    55     var [state, extraState] = getStates(child);
    56     if (state & STATE_SELECTABLE) {
    57       var isSelected = false;
    58       var len = aSelectedChildren.length;
    59       for (var jdx = 0; jdx < len; jdx++) {
    60         if (child == getAccessible(aSelectedChildren[jdx])) {
    61           isSelected = true;
    62           break;
    63         }
    64       }
    66       // isItemSelected
    67       is(aSelectAcc.isItemSelected(aIndexObj.value++), isSelected,
    68          aMsg + "isItemSelected: wrong selected child " + prettyName(child) +
    69          " for " + prettyName(aSelectAcc));
    71       // selected state
    72       testStates(child, isSelected ? STATE_SELECTED : 0, 0,
    73                  !isSelected ? STATE_SELECTED : 0 , 0);
    75       continue;
    76     }
    78     testIsItemSelected(aSelectAcc, child, aIndexObj, aSelectedChildren);
    79   }
    80 }

mercurial