Closed Bug 1520611 Opened 9 months ago Closed 9 months ago

Prune Android accessibility tree

Categories

(Core :: Disability Access APIs, enhancement)

All
Android
enhancement
Not set

Tracking

()

RESOLVED FIXED
mozilla66
Tracking Status
firefox66 --- fixed

People

(Reporter: eeejay, Assigned: eeejay)

Details

Attachments

(3 files, 1 obsolete file)

In Android, the accessibility tree exposed needs to be further pruned. Besides performance the affects TalkBack utterances that are accustomed to Chrome's node tree. For example, in Firefox link text is uttered twice, once from the link name and once from its text leaf.

In Chrome all focusable nodes with names (and no focusable direct children) are pruned.

Attachment #9037053 - Attachment description: Bug 1520611 - Add pivot prune prefilter, use it in jsat. → Bug 1520611 - Add pivot prune prefilter, use it in jsat. r?yzen
Attachment #9037054 - Attachment description: Bug 1520611 - Prune children in Android. → Bug 1520611 - Prune children in Android. r?yzen
Attachment #9037052 - Attachment is obsolete: true
Attachment #9037053 - Attachment description: Bug 1520611 - Add pivot prune prefilter, use it in jsat. r?yzen → Bug 1520611 - Add pivot prune prefilter, use it in jsat. r?yzen!
Attachment #9037054 - Attachment description: Bug 1520611 - Prune children in Android. r?yzen → Bug 1520611 - Prune children in Android. r?yzen!
Pushed by eisaacson@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/c9e244ccc88d
Consolidate ProxyAccessible::MustPruneChildren into nsAccUtils. r=Jamie
Pushed by eisaacson@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/1fea939a7e7c
Add pivot prune prefilter, use it in jsat. r=yzen
https://hg.mozilla.org/integration/autoland/rev/0a48519a9ad1
Prune children in Android. r=yzen

Backed out 3 changesets (bug 1520611) for Android gv-junit failures in org.mozilla.geckoview.test.AccessibilityTest.testTree

Log:
https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=223467540&repo=autoland&lineNumber=1683

INFO - TEST-START | org.mozilla.geckoview.test.AccessibilityTest.testTree
[task 2019-01-23T09:38:48.717Z] 09:38:48 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: id=AndroidJUnitRunner
[task 2019-01-23T09:38:48.717Z] 09:38:48 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: current=19
[task 2019-01-23T09:38:48.718Z] 09:38:48 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: class=org.mozilla.geckoview.test.AccessibilityTest
[task 2019-01-23T09:38:48.718Z] 09:38:48 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: stream=
[task 2019-01-23T09:38:48.718Z] 09:38:48 INFO - org.mozilla.geckoview.test | Error in testTree(org.mozilla.geckoview.test.AccessibilityTest):
[task 2019-01-23T09:38:48.718Z] 09:38:48 INFO - org.mozilla.geckoview.test | java.lang.NullPointerException
[task 2019-01-23T09:38:48.719Z] 09:38:48 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.AccessibilityTest.testTree(AccessibilityTest.kt:846)
[task 2019-01-23T09:38:48.719Z] 09:38:48 INFO - org.mozilla.geckoview.test | at java.lang.reflect.Method.invokeNative(Native Method)
[task 2019-01-23T09:38:48.725Z] 09:38:48 INFO - org.mozilla.geckoview.test | at java.lang.reflect.Method.invoke(Method.java:525)
[task 2019-01-23T09:38:48.725Z] 09:38:48 INFO - org.mozilla.geckoview.test | at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
[task 2019-01-23T09:38:48.725Z] 09:38:48 INFO - org.mozilla.geckoview.test | at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
[task 2019-01-23T09:38:48.725Z] 09:38:48 INFO - org.mozilla.geckoview.test | at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
[task 2019-01-23T09:38:48.725Z] 09:38:48 INFO - org.mozilla.geckoview.test | at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
[task 2019-01-23T09:38:48.725Z] 09:38:48 INFO - org.mozilla.geckoview.test | at android.support.test.internal.runner.junit4.statement.RunBefores.evaluate(RunBefores.java:80)
[task 2019-01-23T09:38:48.725Z] 09:38:48 INFO - org.mozilla.geckoview.test | at android.support.test.internal.runner.junit4.statement.RunAfters.evaluate(RunAfters.java:61)
[task 2019-01-23T09:38:48.726Z] 09:38:48 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.rule.GeckoSessionTestRule$3$1.run(GeckoSessionTestRule.java:1407)
[task 2019-01-23T09:38:48.726Z] 09:38:48 INFO - org.mozilla.geckoview.test | at android.app.Instrumentation$SyncRunnable.run(Instrumentation.java:1719)
[task 2019-01-23T09:38:48.727Z] 09:38:48 INFO - org.mozilla.geckoview.test | at android.os.Handler.handleCallback(Handler.java:730)
[task 2019-01-23T09:38:48.727Z] 09:38:48 INFO - org.mozilla.geckoview.test | at android.os.Handler.dispatchMessage(Handler.java:92)
[task 2019-01-23T09:38:48.727Z] 09:38:48 INFO - org.mozilla.geckoview.test | at android.os.Looper.loop(Looper.java:137)
[task 2019-01-23T09:38:48.727Z] 09:38:48 INFO - org.mozilla.geckoview.test | at android.app.ActivityThread.main(ActivityThread.java:5103)
[task 2019-01-23T09:38:48.727Z] 09:38:48 INFO - org.mozilla.geckoview.test | at java.lang.reflect.Method.invokeNative(Native Method)
[task 2019-01-23T09:38:48.728Z] 09:38:48 INFO - org.mozilla.geckoview.test | at java.lang.reflect.Method.invoke(Method.java:525)
[task 2019-01-23T09:38:48.729Z] 09:38:48 INFO - org.mozilla.geckoview.test | at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
[task 2019-01-23T09:38:48.730Z] 09:38:48 INFO - org.mozilla.geckoview.test | at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
[task 2019-01-23T09:38:48.730Z] 09:38:48 INFO - org.mozilla.geckoview.test | at dalvik.system.NativeStart.main(Native Method)
[task 2019-01-23T09:38:48.731Z] 09:38:48 INFO - org.mozilla.geckoview.test |
[task 2019-01-23T09:38:48.731Z] 09:38:48 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: numtests=195
[task 2019-01-23T09:38:48.732Z] 09:38:48 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: stack=java.lang.NullPointerException
[task 2019-01-23T09:38:48.733Z] 09:38:48 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.AccessibilityTest.testTree(AccessibilityTest.kt:846)
[task 2019-01-23T09:38:48.735Z] 09:38:48 INFO - org.mozilla.geckoview.test | at java.lang.reflect.Method.invokeNative(Native Method)
[task 2019-01-23T09:38:48.736Z] 09:38:48 INFO - org.mozilla.geckoview.test | at java.lang.reflect.Method.invoke(Method.java:525)
[task 2019-01-23T09:38:48.737Z] 09:38:48 INFO - org.mozilla.geckoview.test | at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
[task 2019-01-23T09:38:48.738Z] 09:38:48 INFO - org.mozilla.geckoview.test | at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
[task 2019-01-23T09:38:48.738Z] 09:38:48 INFO - org.mozilla.geckoview.test | at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
[task 2019-01-23T09:38:48.739Z] 09:38:48 INFO - org.mozilla.geckoview.test | at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
[task 2019-01-23T09:38:48.739Z] 09:38:48 INFO - org.mozilla.geckoview.test | at android.support.test.internal.runner.junit4.statement.RunBefores.evaluate(RunBefores.java:80)
[task 2019-01-23T09:38:48.740Z] 09:38:48 INFO - org.mozilla.geckoview.test | at android.support.test.internal.runner.junit4.statement.RunAfters.evaluate(RunAfters.java:61)
[task 2019-01-23T09:38:48.742Z] 09:38:48 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.rule.GeckoSessionTestRule$3$1.run(GeckoSessionTestRule.java:1407)
[task 2019-01-23T09:38:48.743Z] 09:38:48 INFO - org.mozilla.geckoview.test | at android.app.Instrumentation$SyncRunnable.run(Instrumentation.java:1719)
[task 2019-01-23T09:38:48.744Z] 09:38:48 INFO - org.mozilla.geckoview.test | at android.os.Handler.handleCallback(Handler.java:730)
[task 2019-01-23T09:38:48.745Z] 09:38:48 INFO - org.mozilla.geckoview.test | at android.os.Handler.dispatchMessage(Handler.java:92)
[task 2019-01-23T09:38:48.747Z] 09:38:48 INFO - org.mozilla.geckoview.test | at android.os.Looper.loop(Looper.java:137)
[task 2019-01-23T09:38:48.748Z] 09:38:48 INFO - org.mozilla.geckoview.test | at android.app.ActivityThread.main(ActivityThread.java:5103)
[task 2019-01-23T09:38:48.749Z] 09:38:48 INFO - org.mozilla.geckoview.test | at java.lang.reflect.Method.invokeNative(Native Method)
[task 2019-01-23T09:38:48.749Z] 09:38:48 INFO - org.mozilla.geckoview.test | at java.lang.reflect.Method.invoke(Method.java:525)
[task 2019-01-23T09:38:48.749Z] 09:38:48 INFO - org.mozilla.geckoview.test | at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
[task 2019-01-23T09:38:48.749Z] 09:38:48 INFO - org.mozilla.geckoview.test | at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
[task 2019-01-23T09:38:48.749Z] 09:38:48 INFO - org.mozilla.geckoview.test | at dalvik.system.NativeStart.main(Native Method)
[task 2019-01-23T09:38:48.750Z] 09:38:48 INFO - org.mozilla.geckoview.test |
[task 2019-01-23T09:38:48.750Z] 09:38:48 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: test=testTree
[task 2019-01-23T09:38:48.750Z] 09:38:48 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS_CODE: -2
[task 2019-01-23T09:38:48.750Z] 09:38:48 WARNING - TEST-UNEXPECTED-FAIL | org.mozilla.geckoview.test.AccessibilityTest.testTree | status -2
[task 2019-01-23T09:38:48.750Z] 09:38:48 INFO - TEST-INFO took 17248ms
[task 2019-01-23T09:38:48.750Z] 09:38:48 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: id=AndroidJUnitRunner
[task 2019-01-23T09:38:48.750Z] 09:38:48 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: current=20
[task 2019-01-23T09:38:48.750Z] 09:38:48 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: class=org.mozilla.geckoview.test.AccessibilityTest
[task 2019-01-23T09:38:48.751Z] 09:38:48 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: stream=
[task 2019-01-23T09:38:48.824Z] 09:38:48 INFO - org.mozilla.geckoview.test |
[task 2019-01-23T09:38:48.825Z] 09:38:48 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: numtests=195
[task 2019-01-23T09:38:48.826Z] 09:38:48 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: test=testClipboard
[task 2019-01-23T09:38:48.826Z] 09:38:48 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS_CODE: 1
[task 2019-01-23T09:38:48.827Z] 09:38:48 INFO - TEST-START | org.mozilla.geckoview.test.AccessibilityTest.testClipboard

Push with failures:
https://treeherder.mozilla.org/#/jobs?repo=autoland&resultStatus=testfailed%2Cbusted%2Cexception&classifiedState=unclassified&revision=c9e244ccc88db4b7eb30e3543098fd0c7be3b7b9

Backout:
https://hg.mozilla.org/integration/autoland/rev/d646b0735ba3f0c8ff01bcc3745284dab9d95690

Flags: needinfo?(eitan)
Attachment #9037600 - Attachment description: Bug 1520611 - Consolidate ProxyAccessible::MustPruneChildren into nsAccUtils. r?Jamie! → Bug 1520611 - Consolidate ProxyAccessible::MustPruneChildren into nsAccUtils. r=Jamie
Attachment #9037053 - Attachment description: Bug 1520611 - Add pivot prune prefilter, use it in jsat. r?yzen! → Bug 1520611 - Add pivot prune prefilter, use it in jsat. r=yzen
Attachment #9037054 - Attachment description: Bug 1520611 - Prune children in Android. r?yzen! → Bug 1520611 - Prune children in Android. r=yzen
Pushed by eisaacson@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/842a7d9f54bb
Consolidate ProxyAccessible::MustPruneChildren into nsAccUtils. r=Jamie
Pushed by eisaacson@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/8507cbf5c07a
Add pivot prune prefilter, use it in jsat. r=yzen
https://hg.mozilla.org/integration/autoland/rev/556063466b98
Prune children in Android. r=yzen

Fixed the test.

Flags: needinfo?(eitan)
You need to log in before you can comment on or make changes to this bug.