Skip to content

Commit

Permalink
Bug 1749762: Don't emit load_complete, reload and load_stopped signal…
Browse files Browse the repository at this point in the history
…s on objects that don't support AtkDocument. r=eeejay

In Gecko, ARIA documents and dialogs can fire load complete/reload/load stopped events, but they don't support AtkDocument.
Since the corresponding ATK signals are only supported on AtkDocument, just ignore these events for anything which isn't a DocAccessible.
This has no impact on clients, since the signal was invalid anyway, but it does prevent errors being logged.

Differential Revision: https://phabricator.services.mozilla.com/D135975
  • Loading branch information
jcsteh committed Jan 20, 2022
1 parent 9a9a0dc commit adade88
Showing 1 changed file with 18 additions and 6 deletions.
24 changes: 18 additions & 6 deletions accessible/atk/AccessibleWrap.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1276,7 +1276,9 @@ nsresult AccessibleWrap::HandleAccEvent(AccEvent* aEvent) {
} break;

case nsIAccessibleEvent::EVENT_DOCUMENT_LOAD_COMPLETE:
g_signal_emit_by_name(atkObj, "load_complete");
if (accessible->IsDoc()) {
g_signal_emit_by_name(atkObj, "load_complete");
}
// XXX - Handle native dialog accessibles.
if (!accessible->IsRoot() && accessible->HasARIARole() &&
accessible->ARIARole() == roles::DIALOG) {
Expand All @@ -1286,11 +1288,15 @@ nsresult AccessibleWrap::HandleAccEvent(AccEvent* aEvent) {
break;

case nsIAccessibleEvent::EVENT_DOCUMENT_RELOAD:
g_signal_emit_by_name(atkObj, "reload");
if (accessible->IsDoc()) {
g_signal_emit_by_name(atkObj, "reload");
}
break;

case nsIAccessibleEvent::EVENT_DOCUMENT_LOAD_STOPPED:
g_signal_emit_by_name(atkObj, "load_stopped");
if (accessible->IsDoc()) {
g_signal_emit_by_name(atkObj, "load_stopped");
}
break;

case nsIAccessibleEvent::EVENT_MENUPOPUP_START:
Expand All @@ -1317,13 +1323,19 @@ void a11y::ProxyEvent(RemoteAccessible* aTarget, uint32_t aEventType) {
atk_object_notify_state_change(wrapper, ATK_STATE_FOCUSED, true);
break;
case nsIAccessibleEvent::EVENT_DOCUMENT_LOAD_COMPLETE:
g_signal_emit_by_name(wrapper, "load_complete");
if (aTarget->IsDoc()) {
g_signal_emit_by_name(wrapper, "load_complete");
}
break;
case nsIAccessibleEvent::EVENT_DOCUMENT_RELOAD:
g_signal_emit_by_name(wrapper, "reload");
if (aTarget->IsDoc()) {
g_signal_emit_by_name(wrapper, "reload");
}
break;
case nsIAccessibleEvent::EVENT_DOCUMENT_LOAD_STOPPED:
g_signal_emit_by_name(wrapper, "load_stopped");
if (aTarget->IsDoc()) {
g_signal_emit_by_name(wrapper, "load_stopped");
}
break;
case nsIAccessibleEvent::EVENT_MENUPOPUP_START:
atk_focus_tracker_notify(wrapper); // fire extra focus event
Expand Down

0 comments on commit adade88

Please sign in to comment.