Closed Bug 1616679 Opened 4 years ago Closed 4 years ago

VoiceOver doesn't announce clickable item

Categories

(Core :: Disability Access APIs, defect, P1)

All
macOS
defect

Tracking

()

VERIFIED FIXED
mozilla76
Tracking Status
firefox76 --- verified

People

(Reporter: morgan, Assigned: morgan)

References

Details

(Whiteboard: [mac2020_1])

Attachments

(1 file)

STR:

  1. Enable VoiceOver
  2. Navigate to https://support.apple.com/airpods
  3. Move VO cursor through navigation and header to "Replace an airpod or tip" grouping.
  4. Enter the grouping (VO + shift + down arrow)

Expected:
VO Announces the link as clickable

Actual:
VO reports an image and a link, but does not indicate the link is clickable

Priority: -- → P2
Whiteboard: [mac2020_1]

I don't see that as a grouping, just as a link, and I hear how to activate it after a pause in VO.

Assuming you can reproduce this, can you distill this case down to simple HTML?

Flags: needinfo?(mreschenberg)

Grouping might've been the wrong word. Its a link, but you can go inside of it with the "in" keyboard combo as if it were a group. Maybe this isn't that important, but we differ from Safari on what we say inside the group (one, safari doesn't acknowledge the image as interactable in VO, and two, they call the actual underlined text link "clickable")

Flags: needinfo?(mreschenberg)

Morgan! Can you add a data uri str?

Flags: needinfo?(mreschenberg)

This is the structure of the HTML I see on that page. It doesn't surface the clickable issue, but it shows another bug:
Safari treats this as a link group, we just go directly into the link items one by one.

data:text/html,<a href="google.com"><img src="http://placekitten.com/410/410"><div><span>I am a cat please help me search the web</span></div></a>

Will keep poking to see what denotes "clickable" but there isn't any special styling on any of the components above as far as I can tell. Will see what a11y inspector has to say.
EDIT: looks like maybe its this styling in the <a> itself: data-analytics-event="link.component_click"? unsure...

:eeejay should I file a separate bug for the link grouping thing?

Flags: needinfo?(mreschenberg) → needinfo?(eitan)

Yes please! Let's see if we can distill the original clickable issue here.

Flags: needinfo?(eitan)
Flags: needinfo?(mreschenberg)
See Also: → 1619752

Something in that subtree probably has a DOM click event listener. I suggest using the Firefox Dev Tools A11y Inspector and looking under "actions" in the properties tree to see if there's a "click" action on any of those nodes. Once you find the correct node, you can replicate it by just adding onclick=";" to the element, or if you want to do it without modifying the HTML (like they did), get the node in JS and theNode.addEventListener("click", function() {}); . Both are effectively equivalent for your purposes.

(In reply to James Teh [:Jamie] from comment #6)

Something in that subtree probably has a DOM click event listener. I suggest using the Firefox Dev Tools A11y Inspector and looking under "actions" in the properties tree to see if there's a "click" action on any of those nodes. Once you find the correct node, you can replicate it by just adding onclick=";" to the element, or if you want to do it without modifying the HTML (like they did), get the node in JS and theNode.addEventListener("click", function() {}); . Both are effectively equivalent for your purposes.

I looked at the a11y tree yesteday and only found "jump" actions, no "click" ones. I'm not super familiar with actions, though, is it possible VO is interpreting the jump one as a clickable thing?

Flags: needinfo?(mreschenberg) → needinfo?(jteh)

Ah I see whats going on. This issue is reproducible on any link. If you go to a link and then enter its grouping you land on its text leaf. Safari advertises it as clickable. we do not.

Chrome doesn't either. I don't think this is a serious bug, if at all.

on second thought it may be. if we encounter random click listeners without properly assigned roles or semantics we won't advertise it to the user as clickable. so basically we need to get actions and not rely on the accessible subclasses to override actions.

Sounds like Eitan is across it.

Flags: needinfo?(jteh)
Priority: P2 → P1
Assignee: nobody → mreschenberg
Attachment #9133941 - Attachment description: Bug 1616679: Partial event translation work. → Bug 1616679: Map accessible actions to Mac actions based on action name.
Pushed by mreschenberg@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/570f25f87e0a
Map accessible actions to Mac actions based on action name. r=eeejay

Backed out for bustages on mozAccessible.mm.

Push with failures: https://treeherder.mozilla.org/#/jobs?repo=autoland&resultStatus=testfailed%2Cbusted%2Cexception&revision=570f25f87e0a1d49e413b2ab92710ffd58c5fdbb&selectedJob=294716150

Failure log: https://treeherder.mozilla.org/logviewer.html#?job_id=294716150&repo=autoland

Backout link: https://hg.mozilla.org/integration/autoland/rev/5ab5d42214b1eebab36360184589cfd84749dd60

[task 2020-03-25T17:19:19.888Z] 17:19:19 INFO - accessible/mac/Unified_mm_accessible_mac0.o
[task 2020-03-25T17:19:19.888Z] 17:19:19 INFO - /builds/worker/fetches/sccache/sccache /builds/worker/fetches/clang/bin/clang++ -isysroot /builds/worker/checkouts/gecko/MacOSX10.11.sdk -std=gnu++17 --target=x86_64-apple-darwin -o Unified_mm_accessible_mac0.o -c -fvisibility=hidden -fvisibility-inlines-hidden -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-strong -ftrivial-auto-var-init=pattern -DDEBUG=1 -DOS_POSIX=1 -DOS_MACOSX=1 -DMOZ_HAS_MOZGLUE -DMOZILLA_INTERNAL_API -DIMPL_LIBXUL -DSTATIC_EXPORTABLE_JS_API -I/builds/worker/checkouts/gecko/accessible/mac -I/builds/worker/workspace/obj-build/accessible/mac -I/builds/worker/checkouts/gecko/accessible/base -I/builds/worker/checkouts/gecko/accessible/generic -I/builds/worker/checkouts/gecko/accessible/html -I/builds/worker/checkouts/gecko/accessible/ipc -I/builds/worker/checkouts/gecko/accessible/ipc/other -I/builds/worker/checkouts/gecko/accessible/xul -I/builds/worker/checkouts/gecko/layout/generic -I/builds/worker/checkouts/gecko/layout/xul -I/builds/worker/checkouts/gecko/widget -I/builds/worker/checkouts/gecko/widget/cocoa -I/builds/worker/workspace/obj-build/ipc/ipdl/_ipdlheaders -I/builds/worker/checkouts/gecko/ipc/chromium/src -I/builds/worker/checkouts/gecko/ipc/glue -I/builds/worker/workspace/obj-build/dist/include -I/builds/worker/workspace/obj-build/dist/include/nspr -I/builds/worker/workspace/obj-build/dist/include/nss -fPIC -DMOZILLA_CLIENT -include /builds/worker/workspace/obj-build/mozilla-config.h -Qunused-arguments -Qunused-arguments -Wall -Wbitfield-enum-conversion -Wempty-body -Wignored-qualifiers -Woverloaded-virtual -Wpointer-arith -Wshadow-field-in-constructor-modified -Wsign-compare -Wtype-limits -Wunreachable-code -Wunreachable-code-return -Wwrite-strings -Wno-invalid-offsetof -Wclass-varargs -Wempty-init-stmt -Wfloat-overflow-conversion -Wfloat-zero-conversion -Wloop-analysis -Wc++2a-compat -Wcomma -Wimplicit-fallthrough -Wunused-function -Wunused-variable -Werror=non-literal-null-conversion -Wstring-conversion -Wtautological-overlap-compare -Wtautological-unsigned-enum-zero-compare -Wtautological-unsigned-zero-compare -Wno-error=tautological-type-limit-compare -Wno-inline-new-delete -Wno-error=deprecated-declarations -Wno-error=array-bounds -Wno-error=backend-plugin -Wno-error=return-std-move -Wno-error=atomic-alignment -Wformat -Wformat-security -Wno-gnu-zero-variadic-macro-arguments -Wno-unknown-warning-option -fno-sized-deallocation -fno-aligned-new -fcrash-diagnostics-dir=/builds/worker/artifacts -fno-exceptions -fno-strict-aliasing -stdlib=libc++ -fno-rtti -ffunction-sections -fdata-sections -fno-exceptions -fno-math-errno -pthread -pipe -g -Xclang -load -Xclang /builds/worker/workspace/obj-build/build/clang-plugin/libclang-plugin.so -Xclang -add-plugin -Xclang moz-check -O3 -fno-omit-frame-pointer -funwind-tables -Werror -MD -MP -MF .deps/Unified_mm_accessible_mac0.o.pp -x objective-c++ -fobjc-exceptions Unified_mm_accessible_mac0.mm
[task 2020-03-25T17:19:19.888Z] 17:19:19 INFO - In file included from Unified_mm_accessible_mac0.mm:47:
[task 2020-03-25T17:19:19.888Z] 17:19:19 ERROR - /builds/worker/checkouts/gecko/accessible/mac/mozAccessible.mm:583:7: error: arguments must all be strong refs or caller's parameters when calling a function marked as MOZ_CAN_RUN_SCRIPT (including the implicit object argument). 'accWrap' is neither.
[task 2020-03-25T17:19:19.889Z] 17:19:19 INFO - accWrap->ScrollTo(nsIAccessibleScrollType::SCROLL_TYPE_ANYWHERE);
[task 2020-03-25T17:19:19.889Z] 17:19:19 INFO - ^~~~~~~
[task 2020-03-25T17:19:19.889Z] 17:19:19 INFO - 1 error generated.
[task 2020-03-25T17:19:19.889Z] 17:19:19 INFO - /builds/worker/checkouts/gecko/config/rules.mk:755: recipe for target 'Unified_mm_accessible_mac0.o' failed
[task 2020-03-25T17:19:19.889Z] 17:19:19 ERROR - make[4]: *** [Unified_mm_accessible_mac0.o] Error 1
[task 2020-03-25T17:19:19.889Z] 17:19:19 INFO - make[4]: Leaving directory '/builds/worker/workspace/obj-build/accessible/mac'
[task 2020-03-25T17:19:19.889Z] 17:19:19 INFO - /builds/worker/checkouts/gecko/config/recurse.mk:74: recipe for target 'accessible/mac/target-objects' failed
[task 2020-03-25T17:19:19.889Z] 17:19:19 ERROR - make[3]: *** [accessible/mac/target-objects] Error 2
[task 2020-03-25T17:19:19.889Z] 17:19:19 INFO - make[3]: *** Waiting for unfinished jobs....

Flags: needinfo?(mreschenberg)

I don't understand what this error is :( asked on matrix, ni'ing eeejay

Flags: needinfo?(mreschenberg) → needinfo?(eitan)
Pushed by mreschenberg@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/85bae8580dde
Map accessible actions to Mac actions based on action name. r=eeejay
Status: NEW → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla76
OS: Unspecified → macOS
Hardware: Unspecified → All
Flags: qe-verify+

Reproduced the initial issue using an old nightly from (2020-02-20), verified that using latest Firefox beta build 76.0b5 voiceover announces that the links are clickable. I've tested using macOS 10.15.4.

Status: RESOLVED → VERIFIED
Flags: qe-verify+
Flags: needinfo?(eitan)
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: