VoiceOver doesn't announce clickable item
Categories
(Core :: Disability Access APIs, defect, P1)
Tracking
()
Tracking | Status | |
---|---|---|
firefox76 | --- | verified |
People
(Reporter: morgan, Assigned: morgan)
References
Details
(Whiteboard: [mac2020_1])
Attachments
(1 file)
STR:
- Enable VoiceOver
- Navigate to https://support.apple.com/airpods
- Move VO cursor through navigation and header to "Replace an airpod or tip" grouping.
- 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
Assignee | ||
Updated•4 years ago
|
Comment 1•4 years ago
|
||
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?
Assignee | ||
Comment 2•4 years ago
|
||
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")
Assignee | ||
Comment 4•4 years ago
•
|
||
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?
Comment 5•4 years ago
|
||
Yes please! Let's see if we can distill the original clickable issue here.
Assignee | ||
Updated•4 years ago
|
Comment 6•4 years ago
|
||
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.
Assignee | ||
Comment 7•4 years ago
|
||
(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?
Comment 8•4 years ago
|
||
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.
Comment 9•4 years ago
|
||
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.
Updated•4 years ago
|
Assignee | ||
Updated•4 years ago
|
Assignee | ||
Comment 11•4 years ago
|
||
Updated•4 years ago
|
Comment 12•4 years ago
|
||
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
Comment 13•4 years ago
|
||
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....
Assignee | ||
Comment 14•4 years ago
|
||
I don't understand what this error is :( asked on matrix, ni'ing eeejay
Comment 15•4 years ago
|
||
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
Comment 16•4 years ago
|
||
bugherder |
Updated•4 years ago
|
Updated•4 years ago
|
Comment 18•4 years ago
|
||
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.
Updated•4 years ago
|
Description
•