mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 970005 - infinite long loop in a11y:FocusManager::ProcessFocusEvent, r=tbsaunde
This commit is contained in:
parent
4f72039672
commit
aa24ebde03
@ -297,6 +297,7 @@ FocusManager::ProcessFocusEvent(AccEvent* aEvent)
|
|||||||
// Fire menu start/end events for ARIA menus.
|
// Fire menu start/end events for ARIA menus.
|
||||||
if (target->IsARIARole(nsGkAtoms::menuitem)) {
|
if (target->IsARIARole(nsGkAtoms::menuitem)) {
|
||||||
// The focus was moved into menu.
|
// The focus was moved into menu.
|
||||||
|
bool tryOwnsParent = true;
|
||||||
Accessible* ARIAMenubar = nullptr;
|
Accessible* ARIAMenubar = nullptr;
|
||||||
Accessible* child = target;
|
Accessible* child = target;
|
||||||
Accessible* parent = child->Parent();
|
Accessible* parent = child->Parent();
|
||||||
@ -312,14 +313,19 @@ FocusManager::ProcessFocusEvent(AccEvent* aEvent)
|
|||||||
if (roleMap->Is(nsGkAtoms::menuitem) || roleMap->Is(nsGkAtoms::menu)) {
|
if (roleMap->Is(nsGkAtoms::menuitem) || roleMap->Is(nsGkAtoms::menu)) {
|
||||||
child = parent;
|
child = parent;
|
||||||
parent = child->Parent();
|
parent = child->Parent();
|
||||||
|
tryOwnsParent = true;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// If no required context role then check aria-owns relation.
|
// If no required context role then check aria-owns relation.
|
||||||
|
if (!tryOwnsParent)
|
||||||
|
break;
|
||||||
|
|
||||||
RelatedAccIterator iter(child->Document(), child->GetContent(),
|
RelatedAccIterator iter(child->Document(), child->GetContent(),
|
||||||
nsGkAtoms::aria_owns);
|
nsGkAtoms::aria_owns);
|
||||||
parent = iter.Next();
|
parent = iter.Next();
|
||||||
|
tryOwnsParent = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ARIAMenubar != mActiveARIAMenubar) {
|
if (ARIAMenubar != mActiveARIAMenubar) {
|
||||||
|
@ -170,6 +170,8 @@
|
|||||||
gQueue.push(new focusMenu("menubar4", "mb4-item1"));
|
gQueue.push(new focusMenu("menubar4", "mb4-item1"));
|
||||||
gQueue.push(new focusMenu("menubar5", "mb5-mi"));
|
gQueue.push(new focusMenu("menubar5", "mb5-mi"));
|
||||||
|
|
||||||
|
gQueue.push(new synthFocus("mi6"));
|
||||||
|
|
||||||
gQueue.invoke(); // Will call SimpleTest.finish();
|
gQueue.invoke(); // Will call SimpleTest.finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -210,6 +212,11 @@
|
|||||||
title="menustart/end events may be missed when top level menuitem is focused">
|
title="menustart/end events may be missed when top level menuitem is focused">
|
||||||
Bug 934460
|
Bug 934460
|
||||||
</a>
|
</a>
|
||||||
|
<a target="_blank"
|
||||||
|
href="https://bugzilla.mozilla.org/show_bug.cgi?id=970005"
|
||||||
|
title="infinite long loop in a11y:FocusManager::ProcessFocusEvent">
|
||||||
|
Bug 970005
|
||||||
|
</a>
|
||||||
|
|
||||||
<p id="display"></p>
|
<p id="display"></p>
|
||||||
<div id="content" style="display: none"></div>
|
<div id="content" style="display: none"></div>
|
||||||
@ -265,6 +272,10 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- other aria-owns relations -->
|
||||||
|
<div id="mi6" tabindex="0" role="menuitem">aria-owned item</div>
|
||||||
|
<div aria-owns="mi6">Obla</div>
|
||||||
|
|
||||||
<div id="eventdump"></div>
|
<div id="eventdump"></div>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
Loading…
Reference in New Issue
Block a user