Wed, 31 Dec 2014 06:55:50 +0100
Added tag UPSTREAM_283F7C6 for changeset ca08bd8f51b2
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 }