Closed Bug 1479039 Opened Last year Closed Last year

Implement focus and accessible focus cache

Categories

(Core :: Disability Access APIs, defect)

Unspecified
Android
defect
Not set

Tracking

()

RESOLVED FIXED
mozilla65
Tracking Status
relnote-firefox --- 64+
geckoview64 --- fixed
firefox63 --- unaffected
firefox64 + fixed
firefox65 --- fixed

People

(Reporter: eeejay, Assigned: eeejay)

References

(Blocks 1 open bug)

Details

(Whiteboard: [geckoview:p1])

Attachments

(6 files)

To optimize TalkBack performance we can mutate a sparse tree on each accessible event before it is dispatched. This change will replace the AccessFu Presentation/OutputGenerator modules.

Going forward, AccessFu would only be dealing with input and presentation will all be native. Maybe further down the road the controller will be native as well.
Assignee: nobody → eitan
Summary: Implement native Android accessibility events with cached sparse trees → Implement focus and accessible focus cache
Store a cache of the focused or accessible focused node and it's parentage. This cache will get invalidated on any focus/accessible focus change.

Unlike the viewport cache in bug 1502187, this cache will have few children, but be highly specific on each child: bounds, text, boolean flags, collection/range info, etc.

A union of both caches (with this one probably taking precedence) will give accessible services all the info they generally need.
No longer depends on: 1479037
We currently convert the proxy output to XPCOM property bags and
override Attributes(). Since we will be using the arrays a lot more,
switch to them.

Depends on D11210
Attachment #9023397 - Attachment description: Bug 1479039 - Use attribute arrays everywhere. r?Jamie! → Bug 1479039 - Move PersistentPropertiesToArray to nsAccUtils. r?Jamie!
Pushed by eisaacson@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/ce20e58d20a2
Move PersistentPropertiesToArray to nsAccUtils. r=Jamie
https://hg.mozilla.org/integration/autoland/rev/9e5f05367dde
Refactor ToBundle to have a multiple argument version. r=Jamie
https://hg.mozilla.org/integration/autoland/rev/ef87e3565a4b
Extend BatchData struct and added focus path cache. r=yzen
https://hg.mozilla.org/integration/autoland/rev/90cde1d999d3
Implement java portion of focus path cache. r=snorp,yzen
https://hg.mozilla.org/integration/autoland/rev/b47fdd1194c7
Update cached focus path bounds on scroll. r=snorp,yzen
https://hg.mozilla.org/integration/autoland/rev/234f5f3db94f
Update SessionAccessibility cache and state from events. r=snorp,yzen
Let's see how this does in Nightly - from bug 1499163 we may want to consider uplift to 64.
Based on bug 1499163 comment 26 and 27, it sounds like we'll want to uplift this fix to Fennec 64 Beta.
Whiteboard: [geckoview:p1]
Depends on: 1507070
Comment on attachment 9023397 [details]
Bug 1479039 - Move PersistentPropertiesToArray to nsAccUtils. r?Jamie!

[Beta/Release Uplift Approval Request]

Feature/Bug causing the regression: Bug 1479037

User impact if declined: Users may potentially experience slowdowns if they have accessibility enabled (screen reader, password manager, etc)

Is this code covered by automated tests?: Yes

Has the fix been verified in Nightly?: Yes

Needs manual test from QE?: No

If yes, steps to reproduce: 

List of other uplifts needed: Bug 1501496, Bug 1502187, Bug 1507026, Bug 1506709

Risk to taking this patch: Medium

Why is the change risky/not risky? (and alternatives if risky): This feature (caching) is turned off by default, so this should not impact users directly. A followup uplift will turn this feature on by default and we can monitor it in nightly for a bit longer.

String changes made/needed:
Attachment #9023397 - Flags: approval-mozilla-beta?
Comment on attachment 9023399 [details]
Bug 1479039 - Refactor ToBundle to have a multiple argument version. r?Jamie!

[Beta/Release Uplift Approval Request]

Feature/Bug causing the regression: None

User impact if declined: 

Is this code covered by automated tests?: Yes

Has the fix been verified in Nightly?: Yes

Needs manual test from QE?: Yes

If yes, steps to reproduce: 

List of other uplifts needed: None

Risk to taking this patch: Low

Why is the change risky/not risky? (and alternatives if risky): 

String changes made/needed:
Attachment #9023399 - Flags: approval-mozilla-beta?
Attachment #9023400 - Flags: approval-mozilla-beta?
Attachment #9023401 - Flags: approval-mozilla-beta?
Attachment #9023402 - Flags: approval-mozilla-beta?
Attachment #9023403 - Flags: approval-mozilla-beta?
Comment on attachment 9023397 [details]
Bug 1479039 - Move PersistentPropertiesToArray to nsAccUtils. r?Jamie!

ok let's get this in for 64.0b12
Attachment #9023397 - Flags: approval-mozilla-beta? → approval-mozilla-beta+
Attachment #9023399 - Flags: approval-mozilla-beta? → approval-mozilla-beta+
Attachment #9023400 - Flags: approval-mozilla-beta? → approval-mozilla-beta+
Attachment #9023401 - Flags: approval-mozilla-beta? → approval-mozilla-beta+
Attachment #9023402 - Flags: approval-mozilla-beta? → approval-mozilla-beta+
Attachment #9023403 - Flags: approval-mozilla-beta? → approval-mozilla-beta+
status-geckoview64=fixed
Release Note Request (optional, but appreciated)
[Why is this notable]: Performance fixes for users who use external password managers on Android.
[Affects Firefox for Android]: Yes
[Suggested wording]: Users who use password manager apps will no longer see hangs due to these apps
[Links (documentation, blog post, etc)]:
You need to log in before you can comment on or make changes to this bug.