Skip to content

Commit

Permalink
Add AX Selection Event when an aria selected node is added to the tree.
Browse files Browse the repository at this point in the history
Currently, when a node whose aria-selected attribute is set to true is
added to the tree, no selection event is fired as AXEventGenerator did
not have a previous state to compare it to. This causes problems with
ATs as they are not notified of this already existing selection. This
change fixes this issue by firing a selection event if the aria-selected
property is set to true when a new node is added to the tree.

Change-Id: I5ad584c07803c6c219c31f0c015deed4326453af
AX-Relnotes: n/a.
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4791732
Commit-Queue: Luis Sanchez Padilla <lusanpad@microsoft.com>
Reviewed-by: Aaron Leventhal <aleventhal@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1188375}
  • Loading branch information
Luis Juan Sanchez Padilla authored and Chromium LUCI CQ committed Aug 25, 2023
1 parent beb2bf1 commit 3c59aee
Show file tree
Hide file tree
Showing 21 changed files with 268 additions and 3 deletions.
3 changes: 2 additions & 1 deletion content/browser/accessibility/browser_accessibility_cocoa.mm
Original file line number Diff line number Diff line change
Expand Up @@ -504,7 +504,8 @@ bool IsSelectedStateRelevant(BrowserAccessibility* item) {
}

@implementation BrowserAccessibilityCocoa {
raw_ptr<content::BrowserAccessibility> _owner;
// Dangling pointer https://crbug.com/1475830.
raw_ptr<content::BrowserAccessibility, DanglingUntriaged> _owner;
// An array of children of this object. Cached to avoid re-computing.
NSMutableArray* __strong _children;
// Whether the children have changed and need to be updated.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1168,6 +1168,11 @@ IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
RunEventTest(FILE_PATH_LITERAL("aria-selected-changed.html"));
}

IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
AccessibilityEventsAriaSelectedChangedNewSubtree) {
RunEventTest(FILE_PATH_LITERAL("aria-selected-changed-new-subtree.html"));
}

IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest,
AccessibilityEventsButtonClick) {
RunEventTest(FILE_PATH_LITERAL("button-click.html"));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -446,6 +446,12 @@ public void test_ariaSelectedChanged() {
performTest("aria-selected-changed.html", "aria-selected-changed-expected-android.txt");
}

@Test
@SmallTest
public void test_ariaSelectedChangedNewSubtree() {
performTest("aria-selected-changed-new-subtree.html", EMPTY_EXPECTATIONS_FILE);
}

@Test
@SmallTest
public void test_ariaSetsizeChanged() {
Expand Down
5 changes: 5 additions & 0 deletions content/test/content_test_bundle_data.filelist
Original file line number Diff line number Diff line change
Expand Up @@ -2003,6 +2003,11 @@ data/accessibility/event/aria-required-changed.html
data/accessibility/event/aria-selected-changed-expected-android.txt
data/accessibility/event/aria-selected-changed-expected-uia-win.txt
data/accessibility/event/aria-selected-changed-expected-win.txt
data/accessibility/event/aria-selected-changed-new-subtree-expected-auralinux.txt
data/accessibility/event/aria-selected-changed-new-subtree-expected-mac.txt
data/accessibility/event/aria-selected-changed-new-subtree-expected-uia-win.txt
data/accessibility/event/aria-selected-changed-new-subtree-expected-win.txt
data/accessibility/event/aria-selected-changed-new-subtree.html
data/accessibility/event/aria-selected-changed.html
data/accessibility/event/aria-setsize-changed-expected-uia-win.txt
data/accessibility/event/aria-setsize-changed.html
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,7 @@ FOCUS-EVENT:FALSE role=ROLE_COMBO_BOX name='(null)' EDITABLE,ENABLED,EXPANDABLE,
FOCUS-EVENT:TRUE role=ROLE_LIST_ITEM name='Apple' ENABLED,FOCUSABLE,FOCUSED,SELECTABLE,SELECTED,SENSITIVE,SHOWING,VISIBLE
PARENT-CHANGED PARENT:(role=ROLE_DOCUMENT_WEB name='(null)') role=ROLE_COMBO_BOX name='(null)' EDITABLE,ENABLED,EXPANDABLE,EXPANDED,FOCUSABLE,SENSITIVE,SHOWING,SINGLE-LINE,VISIBLE,SUPPORTS-AUTOCOMPLETION,SELECTABLE-TEXT,HAS-POPUP
PARENT-CHANGED PARENT:(role=ROLE_DOCUMENT_WEB name='(null)') role=ROLE_LIST_BOX name='(null)' ENABLED,SENSITIVE,SHOWING,VERTICAL,VISIBLE
SELECTION-CHANGED role=ROLE_LIST_BOX name='(null)' ENABLED,SENSITIVE,SHOWING,VERTICAL,VISIBLE
STATE-CHANGE:FOCUSED:FALSE role=ROLE_COMBO_BOX name='(null)' EDITABLE,ENABLED,EXPANDABLE,EXPANDED,FOCUSABLE,SENSITIVE,SHOWING,SINGLE-LINE,VISIBLE,SUPPORTS-AUTOCOMPLETION,SELECTABLE-TEXT,HAS-POPUP
STATE-CHANGE:FOCUSED:TRUE role=ROLE_LIST_ITEM name='Apple' ENABLED,FOCUSABLE,FOCUSED,SELECTABLE,SELECTED,SENSITIVE,SHOWING,VISIBLE
STATE-CHANGE:FOCUSED:TRUE role=ROLE_LIST_ITEM name='Apple' ENABLED,FOCUSABLE,FOCUSED,SELECTABLE,SELECTED,SENSITIVE,SHOWING,VISIBLE
STATE-CHANGE:SELECTED:TRUE role=ROLE_LIST_ITEM name='Apple' ENABLED,FOCUSABLE,FOCUSED,SELECTABLE,SELECTED,SENSITIVE,SHOWING,VISIBLE
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
AXFocusedUIElementChanged on AXStaticText AXValue='Apple'
AXSelectedChildrenChanged on AXComboBox AXAutocompleteValue='list'
AXSelectedChildrenChanged on AXComboBox AXAutocompleteValue='list'
AXSelectedChildrenChanged on AXList
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
EVENT_OBJECT_FOCUS on <li#op1> role=ROLE_SYSTEM_LISTITEM name="Apple" SELECTED,FOCUSED,FOCUSABLE,SELECTABLE PosInSet=1 SetSize=1
EVENT_OBJECT_HIDE on <body> role=ROLE_SYSTEM_GROUPING INVISIBLE
EVENT_OBJECT_SELECTION on <li#op1> role=ROLE_SYSTEM_LISTITEM name="Apple" SELECTED,FOCUSED,FOCUSABLE,SELECTABLE PosInSet=1 SetSize=1
EVENT_OBJECT_SELECTIONWITHIN on <ul#list> role=ROLE_SYSTEM_LIST IA2_STATE_VERTICAL SetSize=1
EVENT_OBJECT_STATECHANGE on <li#op1> role=ROLE_SYSTEM_LISTITEM name="Apple" SELECTED,FOCUSED,FOCUSABLE,SELECTABLE PosInSet=1 SetSize=1
IA2_EVENT_ACTIVE_DESCENDANT_CHANGED on <input> role=ROLE_SYSTEM_COMBOBOX EXPANDED,FOCUSABLE,HASPOPUP IA2_STATE_EDITABLE,IA2_STATE_SELECTABLE_TEXT,IA2_STATE_SINGLE_LINE,IA2_STATE_SUPPORTS_AUTOCOMPLETION
IA2_EVENT_TEXT_INSERTED on <#document> role=ROLE_SYSTEM_DOCUMENT value~=[doc-url] FOCUSABLE new_text={'<obj><obj>' start=0 end=2}
IA2_EVENT_TEXT_REMOVED on <#document> role=ROLE_SYSTEM_DOCUMENT value~=[doc-url] FOCUSABLE old_text={'<obj>' start=0 end=1}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ FOCUS-EVENT:TRUE role=ROLE_LIST_ITEM name='Orange' ENABLED,FOCUSABLE,FOCUSED,SEL
SELECTION-CHANGED role=ROLE_LIST_BOX name='(null)' ENABLED,SENSITIVE,SHOWING,VERTICAL,VISIBLE
STATE-CHANGE:FOCUSED:FALSE role=ROLE_LIST_ITEM name='Apple' ENABLED,FOCUSABLE,SELECTABLE,SENSITIVE,SHOWING,VISIBLE
STATE-CHANGE:FOCUSED:TRUE role=ROLE_LIST_ITEM name='Orange' ENABLED,FOCUSABLE,FOCUSED,SELECTABLE,SELECTED,SENSITIVE,SHOWING,VISIBLE
STATE-CHANGE:SELECTED:FALSE role=ROLE_LIST_ITEM name='Apple' ENABLED,FOCUSABLE,SELECTABLE,SENSITIVE,SHOWING,VISIBLE
STATE-CHANGE:SELECTED:TRUE role=ROLE_LIST_ITEM name='Orange' ENABLED,FOCUSABLE,FOCUSED,SELECTABLE,SELECTED,SENSITIVE,SHOWING,VISIBLE
=== Start Continuation ===
FOCUS-EVENT:FALSE role=ROLE_LIST_ITEM name='Orange' ENABLED,FOCUSABLE,SELECTABLE,SENSITIVE,SHOWING,VISIBLE
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
CHILDREN-CHANGED:ADD index:2 CHILD:(role=ROLE_TABLE_CELL) role=ROLE_TABLE_ROW ENABLED,SENSITIVE,SHOWING,VISIBLE
SELECTION-CHANGED role=ROLE_TABLE name='(null)' ENABLED,SENSITIVE,SHOWING,VISIBLE
STATE-CHANGE:SELECTED:TRUE role=ROLE_TABLE_CELL name='Grid, GridCell3' ENABLED,FOCUSABLE,SELECTABLE,SELECTED,SENSITIVE,SHOWING,VISIBLE
=== Start Continuation ===
CHILDREN-CHANGED:ADD index:2 CHILD:(role=ROLE_MENU_ITEM) role=ROLE_MENU ENABLED,SENSITIVE
SELECTION-CHANGED role=ROLE_MENU name='(null)' ENABLED,SENSITIVE
STATE-CHANGE:SELECTED:TRUE role=ROLE_MENU_ITEM name='Select, Option3' ENABLED,FOCUSABLE,SELECTABLE,SELECTED,SENSITIVE,SHOWING,VISIBLE
=== Start Continuation ===
CHILDREN-CHANGED:ADD index:2 CHILD:(role=ROLE_LIST_ITEM) role=ROLE_LIST_BOX ENABLED,SENSITIVE,SHOWING,VERTICAL,VISIBLE
SELECTION-CHANGED role=ROLE_LIST_BOX name='(null)' ENABLED,SENSITIVE,SHOWING,VERTICAL,VISIBLE
STATE-CHANGE:SELECTED:TRUE role=ROLE_LIST_ITEM name='DivSelect, Option3' ENABLED,SELECTABLE,SELECTED,SENSITIVE,SHOWING,VISIBLE
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
AXSelectedRowsChanged on AXTable
=== Start Continuation ===
AXSelectedChildrenChanged on AXMenu
AXValueChanged on AXPopUpButton AXValue='Select, Option3'
=== Start Continuation ===
AXSelectedChildrenChanged on AXList
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
AriaProperties changed on role=gridcell, name=Grid, GridCell1
AriaProperties changed on role=gridcell, name=Grid, GridCell3
SelectionItemIsSelected changed on role=gridcell, name=Grid, GridCell1
SelectionItemIsSelected changed on role=gridcell, name=Grid, GridCell3
SelectionItem_ElementRemovedFromSelection on role=gridcell, name=Grid, GridCell1
SelectionItem_ElementSelected on role=gridcell, name=Grid, GridCell3
StructureChanged/ChildAdded on role=gridcell, name=Grid, GridCell3
StructureChanged/ChildrenReordered on role=row
=== Start Continuation ===
AriaProperties changed on role=listitem, name=Select, Option3
SelectionItemIsSelected changed on role=listitem, name=Select, Option3
SelectionItem_ElementSelected on role=listitem, name=Select, Option3
StructureChanged/ChildAdded on role=listitem, name=Select, Option3
StructureChanged/ChildrenReordered on role=combobox
Text_TextChanged on role=document
ValueValue changed on role=combobox
=== Start Continuation ===
AriaProperties changed on role=option, name=DivSelect, Option1
AriaProperties changed on role=option, name=DivSelect, Option3
SelectionItemIsSelected changed on role=option, name=DivSelect, Option1
SelectionItemIsSelected changed on role=option, name=DivSelect, Option3
SelectionItem_ElementSelected on role=option, name=DivSelect, Option3
StructureChanged/ChildAdded on role=option, name=DivSelect, Option3
StructureChanged/ChildrenReordered on role=listbox
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
EVENT_OBJECT_LOCATIONCHANGE on <table#Grid> role=ROLE_SYSTEM_TABLE
EVENT_OBJECT_REORDER on <tr> role=ROLE_SYSTEM_ROW
EVENT_OBJECT_SELECTION on <td#GridCell1> role=ROLE_SYSTEM_CELL name="Grid, GridCell3" SELECTED,FOCUSABLE,SELECTABLE
EVENT_OBJECT_SELECTIONREMOVE on <td#GridCell1> role=ROLE_SYSTEM_CELL name="Grid, GridCell1" FOCUSABLE,SELECTABLE
EVENT_OBJECT_SELECTIONWITHIN on <table#Grid> role=ROLE_SYSTEM_TABLE
EVENT_OBJECT_SHOW on <td#GridCell1> role=ROLE_SYSTEM_CELL name="Grid, GridCell3" SELECTED,FOCUSABLE,SELECTABLE
EVENT_OBJECT_STATECHANGE on <td#GridCell1> role=ROLE_SYSTEM_CELL name="Grid, GridCell1" FOCUSABLE,SELECTABLE
EVENT_OBJECT_STATECHANGE on <td#GridCell1> role=ROLE_SYSTEM_CELL name="Grid, GridCell3" SELECTED,FOCUSABLE,SELECTABLE
IA2_EVENT_TEXT_INSERTED on <tr> role=ROLE_SYSTEM_ROW new_text={'<obj>' start=2 end=3}
=== Start Continuation ===
EVENT_OBJECT_REORDER on role=ROLE_SYSTEM_LIST INVISIBLE SetSize=3
EVENT_OBJECT_SELECTION on <option#Option3> role=ROLE_SYSTEM_LISTITEM name="Select, Option3" SELECTED,FOCUSABLE,SELECTABLE PosInSet=3 SetSize=3
EVENT_OBJECT_SELECTIONWITHIN on role=ROLE_SYSTEM_LIST INVISIBLE SetSize=3
EVENT_OBJECT_SHOW on <option#Option3> role=ROLE_SYSTEM_LISTITEM name="Select, Option3" SELECTED,FOCUSABLE,SELECTABLE PosInSet=3 SetSize=3
EVENT_OBJECT_STATECHANGE on <option#Option3> role=ROLE_SYSTEM_LISTITEM name="Select, Option3" SELECTED,FOCUSABLE,SELECTABLE PosInSet=3 SetSize=3
EVENT_OBJECT_VALUECHANGE on <select#Select> role=ROLE_SYSTEM_COMBOBOX value="Select, Option3" COLLAPSED,FOCUSABLE,HASPOPUP SetSize=3
IA2_EVENT_TEXT_INSERTED on role=ROLE_SYSTEM_LIST INVISIBLE SetSize=3 new_text={'l' start=2 end=3}
=== Start Continuation ===
EVENT_OBJECT_REORDER on <div#DivSelect> role=ROLE_SYSTEM_LIST IA2_STATE_VERTICAL SetSize=3
EVENT_OBJECT_SELECTION on <div#Option3> role=ROLE_SYSTEM_LISTITEM name="DivSelect, Option3" SELECTED,FOCUSED,SELECTABLE PosInSet=3 SetSize=3
EVENT_OBJECT_SELECTIONWITHIN on <div#DivSelect> role=ROLE_SYSTEM_LIST IA2_STATE_VERTICAL SetSize=3
EVENT_OBJECT_SHOW on <div#Option3> role=ROLE_SYSTEM_LISTITEM name="DivSelect, Option3" SELECTED,FOCUSED,SELECTABLE PosInSet=3 SetSize=3
EVENT_OBJECT_STATECHANGE on <div#Option1> role=ROLE_SYSTEM_LISTITEM name="DivSelect, Option1" SELECTABLE PosInSet=1 SetSize=3
EVENT_OBJECT_STATECHANGE on <div#Option3> role=ROLE_SYSTEM_LISTITEM name="DivSelect, Option3" SELECTED,FOCUSED,SELECTABLE PosInSet=3 SetSize=3
IA2_EVENT_TEXT_INSERTED on <div#DivSelect> role=ROLE_SYSTEM_LIST IA2_STATE_VERTICAL SetSize=3 new_text={'<obj>' start=2 end=3}
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
<!DOCTYPE html>
<table id='Grid' role='grid' aria-multiselectable='false'><tbody>
<tr>
<td id='GridCell1' role='gridcell' aria-selected='true' tabindex='0'
onclick='tdclick(this, event)'>Grid, GridCell1</td>
<td id='GridCell2' role='gridcell' aria-selected='false' tabindex='0'
onclick='tdclick(this, event)'>Grid, GridCell2</td>
</tr>
</tbody></table>
<select id='Select'>
<option id='Option1' value='1' selected
onclick='option_click(this, event)'>Select, Option1</option>
<option id='Option2' value='2'
onclick='option_click(this, event)'>Select, Option2</option>
</select>
<div id='DivSelect' role='listbox'>
<div id='Option1' role='option' aria-selected='true'
onclick='div_option_click(this, event)'>DivSelect, Option1</div>
<div id='Option2' role='option' aria-selected='false'
onclick='div_option_click(this, event)'>DivSelect, Option2</div>
</div>
<script>
function grid_select() {
var selected = document.querySelector('td#GridCell1');
var new_selection = selected.cloneNode(true);
selected.setAttribute('aria-selected', false);
new_selection.innerHTML = 'Grid, GridCell3';
new_selection.id - 'GridCell3'
selected.parentElement.appendChild(new_selection);
}

function option_select() {
var selected = document.querySelector('option#Option1');
var new_selection = selected.cloneNode(true);
selected.selected = false;
new_selection.value = '3';
new_selection.innerHTML = 'Select, Option3';
new_selection.id = 'Option3';
selected.parentElement.appendChild(new_selection);
}

function div_select() {
var selected = document.querySelector('div#Option1');
var new_selection = selected.cloneNode(true);
selected.setAttribute('aria-selected', false);
new_selection.innerHTML = 'DivSelect, Option3';
new_selection.id = 'Option3';
selected.parentElement.appendChild(new_selection);
}

const go_passes = [
() => grid_select(),
() => option_select(),
() => div_select(),
];

var current_pass = 0;
function go() {
go_passes[current_pass++].call();
return current_pass < go_passes.length;
}
</script>
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@ FOCUS-EVENT:TRUE role=ROLE_LIST_ITEM name='%C3%A7' ENABLED,FOCUSABLE,FOCUSED,SEL
SELECTION-CHANGED role=ROLE_LIST_BOX name='(null)' ENABLED,FOCUSABLE,SENSITIVE,SHOWING,VERTICAL,VISIBLE
STATE-CHANGE:FOCUSED:FALSE role=ROLE_DOCUMENT_WEB name='(null)' ENABLED,FOCUSABLE,SENSITIVE,SHOWING,VISIBLE
STATE-CHANGE:FOCUSED:TRUE role=ROLE_LIST_ITEM name='%C3%A7' ENABLED,FOCUSABLE,FOCUSED,SELECTABLE,SELECTED,SENSITIVE,SHOWING,VISIBLE
STATE-CHANGE:SELECTED:FALSE role=ROLE_LIST_ITEM name='b' ENABLED,FOCUSABLE,SELECTABLE,SENSITIVE,SHOWING,VISIBLE
STATE-CHANGE:SELECTED:TRUE role=ROLE_LIST_ITEM name='%C3%A7' ENABLED,FOCUSABLE,FOCUSED,SELECTABLE,SELECTED,SENSITIVE,SHOWING,VISIBLE
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@ FOCUS-EVENT:TRUE role=ROLE_LIST_ITEM name='c' ENABLED,FOCUSABLE,FOCUSED,SELECTAB
SELECTION-CHANGED role=ROLE_LIST_BOX name='(null)' ENABLED,FOCUSABLE,MULTISELECTABLE,SENSITIVE,SHOWING,VERTICAL,VISIBLE
STATE-CHANGE:FOCUSED:FALSE role=ROLE_DOCUMENT_WEB name='(null)' ENABLED,FOCUSABLE,SENSITIVE,SHOWING,VISIBLE
STATE-CHANGE:FOCUSED:TRUE role=ROLE_LIST_ITEM name='c' ENABLED,FOCUSABLE,FOCUSED,SELECTABLE,SELECTED,SENSITIVE,SHOWING,VISIBLE
STATE-CHANGE:SELECTED:FALSE role=ROLE_LIST_ITEM name='b' ENABLED,FOCUSABLE,SELECTABLE,SENSITIVE,SHOWING,VISIBLE
STATE-CHANGE:SELECTED:TRUE role=ROLE_LIST_ITEM name='c' ENABLED,FOCUSABLE,FOCUSED,SELECTABLE,SELECTED,SENSITIVE,SHOWING,VISIBLE
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@ FOCUS-EVENT:TRUE role=ROLE_LIST_ITEM name='Orange' ENABLED,FOCUSABLE,FOCUSED,SEL
SELECTION-CHANGED role=ROLE_LIST_BOX name='(null)' ENABLED,FOCUSABLE,SENSITIVE,SHOWING,VERTICAL,VISIBLE
STATE-CHANGE:FOCUSED:FALSE role=ROLE_LIST_ITEM name='Apple' ENABLED,FOCUSABLE,SELECTABLE,SENSITIVE,SHOWING,VISIBLE
STATE-CHANGE:FOCUSED:TRUE role=ROLE_LIST_ITEM name='Orange' ENABLED,FOCUSABLE,FOCUSED,SELECTABLE,SELECTED,SENSITIVE,SHOWING,VISIBLE
STATE-CHANGE:SELECTED:FALSE role=ROLE_LIST_ITEM name='Apple' ENABLED,FOCUSABLE,SELECTABLE,SENSITIVE,SHOWING,VISIBLE
STATE-CHANGE:SELECTED:TRUE role=ROLE_LIST_ITEM name='Orange' ENABLED,FOCUSABLE,FOCUSED,SELECTABLE,SELECTED,SENSITIVE,SHOWING,VISIBLE
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,6 @@ STATE-CHANGE:FOCUSED:FALSE role=ROLE_COMBO_BOX name='Fruit' ENABLED,EXPANDABLE,E
STATE-CHANGE:FOCUSED:FALSE role=ROLE_MENU_ITEM name='Lemon' ENABLED,FOCUSABLE,SELECTABLE,SENSITIVE,SHOWING,VISIBLE
STATE-CHANGE:FOCUSED:TRUE role=ROLE_MENU_ITEM name='Lemon' ENABLED,FOCUSABLE,FOCUSED,SELECTABLE,SELECTED,SENSITIVE,SHOWING,VISIBLE
STATE-CHANGE:FOCUSED:TRUE role=ROLE_MENU_ITEM name='Orange' ENABLED,FOCUSABLE,FOCUSED,SELECTABLE,SELECTED,SENSITIVE,SHOWING,VISIBLE
STATE-CHANGE:SELECTED:FALSE role=ROLE_MENU_ITEM name='Lemon' ENABLED,FOCUSABLE,SELECTABLE,SENSITIVE,SHOWING,VISIBLE
STATE-CHANGE:SELECTED:TRUE role=ROLE_MENU_ITEM name='Orange' ENABLED,FOCUSABLE,FOCUSED,SELECTABLE,SELECTED,SENSITIVE,SHOWING,VISIBLE
STATE-CHANGE:SELECTED:TRUE role=ROLE_MENU_ITEM name='Orange' ENABLED,FOCUSABLE,FOCUSED,SELECTABLE,SELECTED,SENSITIVE,SHOWING,VISIBLE
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
AXExpandedChanged on AXComboBox AXDescription='Combobox A' AXValue='Option 1'
AXFocusedUIElementChanged on AXStaticText AXValue='Option 1'
AXSelectedChildrenChanged on AXList
=== Start Continuation ===
AXExpandedChanged on AXComboBox AXDescription='Combobox B' AXValue='Option 4'
AXFocusedUIElementChanged on AXStaticText AXValue='Option 4'
AXSelectedChildrenChanged on AXList
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
EVENT_OBJECT_FOCUS on <option> role=ROLE_SYSTEM_LISTITEM name="Option 1" SELECTED,FOCUSED,FOCUSABLE,SELECTABLE PosInSet=1 SetSize=3
EVENT_OBJECT_SHOW on <div> role=ROLE_SYSTEM_LIST IA2_STATE_VERTICAL SetSize=3
EVENT_OBJECT_STATECHANGE on <div#ButtonA> role=ROLE_SYSTEM_COMBOBOX name="Combobox A" value="Option 1" EXPANDED,HASPOPUP
EVENT_OBJECT_STATECHANGE on <option> role=ROLE_SYSTEM_LISTITEM name="Option 1" SELECTED,FOCUSED,FOCUSABLE,SELECTABLE PosInSet=1 SetSize=3
=== Start Continuation ===
EVENT_OBJECT_FOCUS on <option> role=ROLE_SYSTEM_LISTITEM name="Option 4" SELECTED,FOCUSED,FOCUSABLE,SELECTABLE PosInSet=1 SetSize=3
EVENT_OBJECT_HIDE on <div> role=ROLE_SYSTEM_LIST IA2_STATE_VERTICAL SetSize=3
EVENT_OBJECT_SHOW on <div> role=ROLE_SYSTEM_LIST IA2_STATE_VERTICAL SetSize=3
EVENT_OBJECT_STATECHANGE on <div#ButtonB> role=ROLE_SYSTEM_COMBOBOX name="Combobox B" value="Option 4" EXPANDED,HASPOPUP
EVENT_OBJECT_STATECHANGE on <option> role=ROLE_SYSTEM_LISTITEM name="Option 4" SELECTED,FOCUSED,FOCUSABLE,SELECTABLE PosInSet=1 SetSize=3
7 changes: 7 additions & 0 deletions ui/accessibility/ax_event_generator.cc
Original file line number Diff line number Diff line change
Expand Up @@ -836,6 +836,13 @@ void AXEventGenerator::OnAtomicUpdateFinished(
continue;
}

if (change.node->GetBoolAttribute(ax::mojom::BoolAttribute::kSelected) &&
(change.type == SUBTREE_CREATED || change.type == NODE_CREATED)) {
OnBoolAttributeChanged(tree, change.node,
ax::mojom::BoolAttribute::kSelected,
/*new_value*/ true);
}

if (IsAlert(change.node->GetRole()))
AddEvent(change.node, Event::ALERT);
else if (change.node->data().IsActiveLiveRegionRoot())
Expand Down

0 comments on commit 3c59aee

Please sign in to comment.