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.

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

mercurial