Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
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 | } |