2010-05-20 00:40:25 -07:00
|
|
|
/**
|
|
|
|
* Test selection getter methods of nsIAccessibleSelectable.
|
|
|
|
*
|
|
|
|
* @param aIdentifier [in] selectable container accessible
|
|
|
|
* @param aSelectedChildren [in] array of selected children
|
|
|
|
*/
|
2010-09-01 17:46:59 -07:00
|
|
|
function testSelectableSelection(aIdentifier, aSelectedChildren, aMsg)
|
2010-05-20 00:40:25 -07:00
|
|
|
{
|
|
|
|
var acc = getAccessible(aIdentifier, [nsIAccessibleSelectable]);
|
|
|
|
if (!acc)
|
|
|
|
return;
|
|
|
|
|
2010-09-01 17:46:59 -07:00
|
|
|
var msg = aMsg ? aMsg : "";
|
2010-05-20 00:40:25 -07:00
|
|
|
var len = aSelectedChildren.length;
|
|
|
|
|
|
|
|
// getSelectedChildren
|
|
|
|
var selectedChildren = acc.GetSelectedChildren();
|
2010-09-01 17:46:59 -07:00
|
|
|
is(selectedChildren ? selectedChildren.length : 0, len,
|
|
|
|
msg + "getSelectedChildren: wrong selected children count for " +
|
|
|
|
prettyName(aIdentifier));
|
2010-05-20 00:40:25 -07:00
|
|
|
|
|
|
|
for (var idx = 0; idx < len; idx++) {
|
|
|
|
var expectedAcc = getAccessible(aSelectedChildren[idx]);
|
2010-09-01 17:46:59 -07:00
|
|
|
var actualAcc = selectedChildren.queryElementAt(idx, nsIAccessible);
|
|
|
|
is(actualAcc, expectedAcc,
|
|
|
|
msg + "getSelectedChildren: wrong selected child at index " + idx +
|
|
|
|
" for " + prettyName(aIdentifier) + " { actual : " +
|
|
|
|
prettyName(actualAcc) + ", expected: " + prettyName(expectedAcc) + "}");
|
2010-05-20 00:40:25 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
// selectionCount
|
2010-09-01 17:46:59 -07:00
|
|
|
// XXX: nsIAccessibleText and nsIAccessibleSelectable both have
|
|
|
|
// selectionCount property.
|
|
|
|
//is(acc.selectionCount, aSelectedChildren.length,
|
|
|
|
// "selectionCount: wrong selected children count for " + prettyName(aIdentifier));
|
2010-05-20 00:40:25 -07:00
|
|
|
|
|
|
|
// refSelection
|
|
|
|
for (var idx = 0; idx < len; idx++) {
|
|
|
|
var expectedAcc = getAccessible(aSelectedChildren[idx]);
|
|
|
|
is(acc.refSelection(idx), expectedAcc,
|
2010-09-01 17:46:59 -07:00
|
|
|
msg + "refSelection: wrong selected child at index " + idx + " for " +
|
|
|
|
prettyName(aIdentifier));
|
|
|
|
}
|
|
|
|
|
|
|
|
// isChildSelected
|
|
|
|
testIsChildSelected(acc, acc, { value: 0 }, aSelectedChildren, msg);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Test isChildSelected method, helper for testSelectableSelection
|
|
|
|
*/
|
|
|
|
function testIsChildSelected(aSelectAcc, aTraversedAcc, aIndexObj, aSelectedChildren, aMsg)
|
|
|
|
{
|
|
|
|
var childCount = aTraversedAcc.childCount;
|
|
|
|
for (var idx = 0; idx < childCount; idx++) {
|
|
|
|
var child = aTraversedAcc.getChildAt(idx);
|
|
|
|
var [state, extraState] = getStates(child);
|
|
|
|
if (state & STATE_SELECTABLE) {
|
|
|
|
var isSelected = false;
|
|
|
|
var len = aSelectedChildren.length;
|
|
|
|
for (var jdx = 0; jdx < len; jdx++) {
|
|
|
|
if (child == getAccessible(aSelectedChildren[jdx])) {
|
|
|
|
isSelected = true;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// isChildSelected
|
|
|
|
is(aSelectAcc.isChildSelected(aIndexObj.value++), isSelected,
|
|
|
|
aMsg + "isChildSelected: wrong selected child " + prettyName(child) +
|
|
|
|
" for " + prettyName(aSelectAcc));
|
|
|
|
|
|
|
|
// selected state
|
|
|
|
testStates(child, isSelected ? STATE_SELECTED : 0, 0,
|
|
|
|
!isSelected ? STATE_SELECTED : 0 , 0);
|
|
|
|
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
|
|
|
testIsChildSelected(aSelectAcc, child, aIndexObj, aSelectedChildren);
|
2010-05-20 00:40:25 -07:00
|
|
|
}
|
|
|
|
}
|