Bug 726071 - get rid nsAccUtilsGetPositionAndSizeForXULSelectControlItem, r=surkov, f=tbsaunde

This commit is contained in:
Mark Capella 2012-03-24 10:09:10 +09:00
parent 19b6b7943a
commit 88c8cc7fea
16 changed files with 35 additions and 87 deletions

View File

@ -792,10 +792,15 @@ interface nsIAccessibleRole : nsISupports
*/
const unsigned long ROLE_FIGURE = 124;
/**
* Represents a rich item with a check box.
*/
const unsigned long ROLE_CHECK_RICH_OPTION = 125;
/**
* It's not role actually. This constant is important to help ensure
* nsRoleMap's are synchronized.
*/
const unsigned long ROLE_LAST_ENTRY = 125;
const unsigned long ROLE_LAST_ENTRY = 126;
};

View File

@ -170,6 +170,7 @@ static const PRUint32 atkRoleMap[] = {
ATK_ROLE_PANEL, // roles::EMBEDDED_OBJECT 122
ATK_ROLE_SECTION, // roles::NOTE 123
ATK_ROLE_PANEL, // roles::FIGURE 124
ATK_ROLE_CHECK_BOX, // roles::CHECK_RICH_OPTION 125
kROLE_ATK_LAST_ENTRY // roles::LAST_ENTRY
};

View File

@ -67,6 +67,8 @@ public:
role != mozilla::a11y::roles::LISTITEM &&
role != mozilla::a11y::roles::MENUITEM &&
role != mozilla::a11y::roles::COMBOBOX_OPTION &&
role != mozilla::a11y::roles::RICH_OPTION &&
role != mozilla::a11y::roles::CHECK_RICH_OPTION &&
role != mozilla::a11y::roles::PARENT_MENUITEM &&
role != mozilla::a11y::roles::CHECK_MENU_ITEM &&
role != mozilla::a11y::roles::RADIO_MENU_ITEM &&
@ -88,6 +90,10 @@ private:
aRole == mozilla::a11y::roles::PARENT_MENUITEM ||
aRole == mozilla::a11y::roles::RADIO_MENU_ITEM)
return mozilla::a11y::roles::MENUITEM;
if (aRole == mozilla::a11y::roles::CHECK_RICH_OPTION)
return mozilla::a11y::roles::RICH_OPTION;
return aRole;
}

View File

@ -789,11 +789,16 @@ namespace roles {
*/
FIGURE = 124,
/**
* Represents a rich item with a check box.
*/
CHECK_RICH_OPTION = 125,
/**
* It's not role actually. This constant is important to help ensure
* nsRoleMap's are synchronized.
*/
LAST_ENTRY = 125
LAST_ENTRY = 126
};
} // namespace role
typedef enum mozilla::a11y::roles::Role role;

View File

@ -134,47 +134,6 @@ nsAccUtils::GetARIAOrDefaultLevel(nsAccessible *aAccessible)
return GetDefaultLevel(aAccessible);
}
void
nsAccUtils::GetPositionAndSizeForXULSelectControlItem(nsIContent *aContent,
PRInt32 *aPosInSet,
PRInt32 *aSetSize)
{
nsCOMPtr<nsIDOMXULSelectControlItemElement> item(do_QueryInterface(aContent));
if (!item)
return;
nsCOMPtr<nsIDOMXULSelectControlElement> control;
item->GetControl(getter_AddRefs(control));
if (!control)
return;
PRUint32 itemsCount = 0;
control->GetItemCount(&itemsCount);
PRInt32 indexOf = 0;
control->GetIndexOfItem(item, &indexOf);
*aSetSize = itemsCount;
*aPosInSet = indexOf;
for (PRUint32 index = 0; index < itemsCount; index++) {
nsCOMPtr<nsIDOMXULSelectControlItemElement> currItem;
control->GetItemAtIndex(index, getter_AddRefs(currItem));
nsCOMPtr<nsINode> currNode(do_QueryInterface(currItem));
nsAccessible* itemAcc = currNode ?
GetAccService()->GetAccessible(currNode, nsnull) : nsnull;
if (!itemAcc || itemAcc->State() & states::INVISIBLE) {
(*aSetSize)--;
if (index < static_cast<PRUint32>(indexOf))
(*aPosInSet)--;
}
}
(*aPosInSet)++; // group position is 1-index based.
}
PRInt32
nsAccUtils::GetLevelForXULContainerItem(nsIContent *aContent)
{

View File

@ -107,14 +107,6 @@ public:
*/
static PRInt32 GetARIAOrDefaultLevel(nsAccessible *aAccessible);
/**
* Compute position in group (posinset) and group size (setsize) for
* nsIDOMXULSelectControlItemElement node.
*/
static void GetPositionAndSizeForXULSelectControlItem(nsIContent *aContent,
PRInt32 *aPosInSet,
PRInt32 *aSetSize);
/**
* Compute group level for nsIDOMXULContainerItemElement node.
*/

View File

@ -415,7 +415,8 @@ static const char kRoleNames[][20] = {
"gridcell", //ROLE_GRID_CELL
"embedded object", //ROLE_EMBEDDED_OBJECT
"note", //ROLE_NOTE
"figure" //ROLE_FIGURE
"figure", //ROLE_FIGURE
"check rich option" //ROLE_CHECK_RICH_OPTION
};
/**

View File

@ -167,5 +167,6 @@ static const NSString* AXRoles [] = {
NSAccessibilityGroupRole, // ROLE_EMBEDDED_OBJECT
NSAccessibilityGroupRole, // ROLE_NOTE
NSAccessibilityGroupRole, // ROLE_FIGURE
NSAccessibilityCheckBoxRole, // ROLE_CHECK_RICH_OPTION
@"ROLE_LAST_ENTRY" // ROLE_LAST_ENTRY. bogus role that will never be shown (just marks the end of this array)!
};

View File

@ -449,6 +449,9 @@ static const WindowsRoleMapItem gWindowsRoleMap[] = {
// roles::FIGURE
{ ROLE_SYSTEM_GROUPING, ROLE_SYSTEM_GROUPING },
// roles::CHECK_RICH_OPTION
{ ROLE_SYSTEM_CHECKBUTTON, ROLE_SYSTEM_CHECKBUTTON },
// roles::LAST_ENTRY
{ ROLE_WINDOWS_LAST_ENTRY, ROLE_WINDOWS_LAST_ENTRY }
};

View File

@ -527,14 +527,6 @@ nsXULRadioButtonAccessible::NativeState()
return state;
}
void
nsXULRadioButtonAccessible::GetPositionAndSizeInternal(PRInt32 *aPosInSet,
PRInt32 *aSetSize)
{
nsAccUtils::GetPositionAndSizeForXULSelectControlItem(mContent, aPosInSet,
aSetSize);
}
////////////////////////////////////////////////////////////////////////////////
// nsXULRadioButtonAccessible: Widgets

View File

@ -162,8 +162,6 @@ public:
nsXULRadioButtonAccessible(nsIContent* aContent, nsDocAccessible* aDoc);
// nsAccessible
virtual void GetPositionAndSizeInternal(PRInt32 *aPosInSet,
PRInt32 *aSetSize);
virtual PRUint64 NativeState();
// Widgets

View File

@ -976,7 +976,7 @@ nsXULListitemAccessible::NativeRole()
return roles::ROW;
if (mIsCheckbox)
return roles::CHECKBUTTON;
return roles::CHECK_RICH_OPTION;
if (mParent && mParent->Role() == roles::COMBOBOX_LIST)
return roles::COMBOBOX_OPTION;
@ -1031,14 +1031,6 @@ nsXULListitemAccessible::CanHaveAnonChildren()
return true;
}
void
nsXULListitemAccessible::GetPositionAndSizeInternal(PRInt32 *aPosInSet,
PRInt32 *aSetSize)
{
nsAccUtils::GetPositionAndSizeForXULSelectControlItem(mContent, aPosInSet,
aSetSize);
}
////////////////////////////////////////////////////////////////////////////////
// nsXULListitemAccessible: Widgets

View File

@ -139,8 +139,6 @@ public:
virtual nsresult GetNameInternal(nsAString& aName);
virtual mozilla::a11y::role NativeRole();
virtual PRUint64 NativeState();
virtual void GetPositionAndSizeInternal(PRInt32 *aPosInSet,
PRInt32 *aSetSize);
virtual bool CanHaveAnonChildren();
// Widgets

View File

@ -164,14 +164,6 @@ nsXULTabAccessible::RelationByType(PRUint32 aType)
return rel;
}
void
nsXULTabAccessible::GetPositionAndSizeInternal(PRInt32 *aPosInSet,
PRInt32 *aSetSize)
{
nsAccUtils::GetPositionAndSizeForXULSelectControlItem(mContent, aPosInSet,
aSetSize);
}
////////////////////////////////////////////////////////////////////////////////
// nsXULTabsAccessible

View File

@ -59,8 +59,6 @@ public:
NS_IMETHOD DoAction(PRUint8 index);
// nsAccessible
virtual void GetPositionAndSizeInternal(PRInt32 *aPosInSet,
PRInt32 *aSetSize);
virtual mozilla::a11y::role NativeRole();
virtual PRUint64 NativeState();
virtual Relation RelationByType(PRUint32 aType);

View File

@ -77,8 +77,10 @@
{
//////////////////////////////////////////////////////////////////////////
// xul:listbox (bug 417317)
testGroupAttrs("item1", 1, 2);
testGroupAttrs("item2", 2, 2);
testGroupAttrs("listitem1", 1, 4);
testGroupAttrs("listitem2", 2, 4);
testGroupAttrs("listitem3", 3, 4);
testGroupAttrs("listitem4", 4, 4);
//////////////////////////////////////////////////////////////////////////
// xul:tab
@ -143,9 +145,12 @@
</body>
<vbox flex="1">
<listbox>
<listitem label="item1" id="item1"/>
<listitem label="item2" id="item2"/>
<listitem label="listitem1" id="listitem1"/>
<listitem label="listitem2" id="listitem2" type="checkbox"/>
<listitem label="listitem3" id="listitem3" type="checkbox"/>
<listitem label="listitem4" id="listitem4"/>
</listbox>
<menubar>