Bug 857936 - ARIA columnheader/rowheader should inherit editable state, r=tbsaunde

This commit is contained in:
Alexander Surkov 2013-04-05 11:10:17 +09:00
parent b05708cecd
commit c4f08a41d3
3 changed files with 48 additions and 3 deletions

View File

@ -113,7 +113,7 @@ static nsRoleMapEntry sWAIRoleMaps[] =
eTableCell,
kNoReqStates,
eARIASelectable,
eARIAReadonly
eARIAReadonlyOrEditableIfDefined
},
{ // combobox
&nsGkAtoms::combobox,
@ -453,7 +453,7 @@ static nsRoleMapEntry sWAIRoleMaps[] =
eTableCell,
kNoReqStates,
eARIASelectable,
eARIAReadonly
eARIAReadonlyOrEditableIfDefined
},
{ // scrollbar
&nsGkAtoms::scrollbar,

View File

@ -1601,7 +1601,9 @@ Accessible::ApplyARIAState(uint64_t* aState) const
// ARIA gridcell inherits editable/readonly states from the grid until it's
// overridden.
if (mRoleMapEntry->Is(nsGkAtoms::gridcell) &&
if ((mRoleMapEntry->Is(nsGkAtoms::gridcell) ||
mRoleMapEntry->Is(nsGkAtoms::columnheader) ||
mRoleMapEntry->Is(nsGkAtoms::rowheader)) &&
!(*aState & (states::READONLY | states::EDITABLE))) {
const TableCellAccessible* cell = AsTableCell();
if (cell) {

View File

@ -113,12 +113,29 @@
// readonly/editable on grid and gridcell
testStates("aria_grid_default", 0, EXT_STATE_EDITABLE,
STATE_READONLY, 0);
testStates("aria_grid_default_colheader_readonly", STATE_READONLY, 0,
0, EXT_STATE_EDITABLE);
testStates("aria_grid_default_colheader_inherited", 0, EXT_STATE_EDITABLE,
STATE_READONLY, 0);
testStates("aria_grid_default_rowheader_readonly", STATE_READONLY, 0,
0, EXT_STATE_EDITABLE);
testStates("aria_grid_default_rowheader_inherited", 0, EXT_STATE_EDITABLE,
STATE_READONLY, 0);
testStates("aria_grid_default_cell_readonly", STATE_READONLY, 0,
0, EXT_STATE_EDITABLE);
testStates("aria_grid_default_cell_inherited", 0, EXT_STATE_EDITABLE,
STATE_READONLY, 0);
testStates("aria_grid_readonly", STATE_READONLY, 0,
0, EXT_STATE_EDITABLE);
testStates("aria_grid_readonly_colheader_editable", 0, EXT_STATE_EDITABLE,
STATE_READONLY, 0);
testStates("aria_grid_readonly_colheader_inherited", STATE_READONLY, 0,
0, EXT_STATE_EDITABLE);
testStates("aria_grid_readonly_rowheader_editable", 0, EXT_STATE_EDITABLE,
STATE_READONLY, 0);
testStates("aria_grid_readonly_rowheader_inherited", STATE_READONLY, 0,
0, EXT_STATE_EDITABLE);
testStates("aria_grid_readonly_cell_editable", 0, EXT_STATE_EDITABLE,
STATE_READONLY, 0);
testStates("aria_grid_readonly_cell_inherited", STATE_READONLY, 0,
@ -287,19 +304,45 @@
role="textbox" aria-readonly="true">This text should be readonly</div>
<div id="aria_grid_default" role="grid">
<div role="row">
<div id="aria_grid_default_colheader_readonly"
role="columnheader" aria-readonly="true">colheader1</div>
<div id="aria_grid_default_colheader_inherited"
role="columnheader">colheader2</div>
</div>
<div role="row">
<div id="aria_grid_default_rowheader_readonly"
role="rowheader" aria-readonly="true">rowheader1</div>
<div id="aria_grid_default_rowheader_inherited"
role="rowheader">rowheader2</div>
</div>
<div role="row">
<div id="aria_grid_default_cell_readonly"
role="gridcell" aria-readonly="true">gridcell1</div>
<div id="aria_grid_default_cell_inherited"
role="gridcell">gridcell2</div>
</div>
</div>
<div id="aria_grid_readonly" role="grid" aria-readonly="true">
<div role="row">
<div id="aria_grid_readonly_colheader_editable"
role="columnheader" aria-readonly="false">colheader1</div>
<div id="aria_grid_readonly_colheader_inherited"
role="columnheader">colheader2</div>
</div>
<div role="row">
<div id="aria_grid_readonly_rowheader_editable"
role="rowheader" aria-readonly="false">rowheader1</div>
<div id="aria_grid_readonly_rowheader_inherited"
role="rowheader">rowheader2</div>
</div>
<div role="row">
<div id="aria_grid_readonly_cell_editable"
role="gridcell" aria-readonly="false">gridcell1</div>
<div id="aria_grid_readonly_cell_inherited"
role="gridcell">gridcell2</div>
</div>
</div>
<div role="listbox">