-
Notifications
You must be signed in to change notification settings - Fork 6k
Disable a11y on detach #14142
Disable a11y on detach #14142
Conversation
|
/cc @tvolkert - if there's any way we can include this as a hotfix, it fixes a bunch of in-the-wild crashes that devs tend to miss because they don't test with a11y turned on. |
|
/cc @darrenaustin as well, who has been cc'd on a number of bugs related to this. |
|
We've been suffering with this forever, if it wasn't a stop ship before, it presumably shouldn't be now. (hot fixes are very risky as we have minimal testing on the branches) |
|
It's not worth creating a hotfix by itself, but if we end up with another hot fix this would ideally be included. This problem will get worse as well, since we're now using the new embedding by default - and this problem is specific to the new embedding. |
|
There will be another hotfix (there was another reported release blocker), and as long as this lands soon, we could still let it bake on beta for some time. |
goderbauer
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
|
Going to land on red because red was a flake. |
* 73da385 Disable a11y on detach (#14142)
|
Has this landed on stable @dnfield? I hope this solves this crash on my Google Play Console faced by many users on our production app: I was unable to locate this on Crashylytics and it kept showing on Google Play Console. I have many similar-looking crash logs with minor changes. Is there a way to check if they were related to the this issue (#14142) by looking at these logs? |
|
This should be present in the latest hotfix release |
Fixes flutter/flutter#46029
Fixes flutter/flutter#31139
Fixes flutter/flutter#33173
Fixes flutter/flutter#45218
When we detach from the engine, we destroy the a11y bridge (which is right, it holds view refs that won't be valid when we reattach). We have to tell the framework that we're destroying all our a11y state on the native side - the only way to do that is to tell the framework that a11y is off. Once we build the bridge again, it will tell the framework that a11y is back on.
The linked bugs are all cases where we get the bridge into a bad state because it thinks it has information it no longer does (because the framework thinks it already sent nodes the bridge knows nothing about, and really might not even be valid anymore because any native backing they have is gone).
Another reason to disable in this case: Even if a11y is enabled, we have no bridge. If the framework sends us a11y messages, they'll get missed by the bridge.