You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Sep 5, 2024. It is now read-only.
Repository navigation
This repository was archived by the owner on Sep 5, 2024. It is now read-only.
gesture: infinite recursion in GestureHandler.end() with Android TalkBack #11768
Clicking on a button with android talkback causes an infinite recusion when dispatching the event. Moreover, this ends up delivering the native event again after the exception.
The duplicate click event causes major breakage with talkback. For example, you can't open the sidebar menu dropdowns on https://material.angularjs.org as they open and then immediately close.
Uncaught RangeError: Maximum call stack size exceeded.
at GestureHandler.nativeDispatchEvent [as dispatchEvent] (angular-material.js:4131)
at GestureHandler.onEnd (angular-material.js:3730)
at GestureHandler.end (angular-material.js:4000)
at runHandlers (angular-material.js:4241)
at HTMLDocument.gestureEnd (angular-material.js:4292)
at defaultHandlerWrapper (angular.js:3802)
at HTMLDocument.eventHandler (angular.js:3790)
at GestureHandler.nativeDispatchEvent [as dispatchEvent] (angular-material.js:4131)
at GestureHandler.onEnd (angular-material.js:3730)
at GestureHandler.end (angular-material.js:4000)
(note: this is the non-minified stacktrace for clarity)
Which versions of AngularJS, Material, OS, and browsers are affected?
changed the title [-]Infinite recursion in GestureHandler.end() with android talkback[/-][+]gesture: infinite recursion in GestureHandler.end() with Android TalkBack[/+]on Aug 7, 2019
If click hijacking is disabled via $mdGestureProvider.skipClickHijack();, then this does not occur and the only events re-fired from a button click are:
Activity
[-]Infinite recursion in GestureHandler.end() with android talkback[/-][+]gesture: infinite recursion in GestureHandler.end() with Android TalkBack[/+]Splaktar commentedon Aug 12, 2019
I've been able to reproduce this back to
1.1.5and it's likely to have been an issue since even earlier.Splaktar commentedon Aug 13, 2019
I've identified that this is caused by the final
mouseupevent re-firing infinite times due to click hijacking being enabled.If click hijacking is disabled via
$mdGestureProvider.skipClickHijack();, then this does not occur and the only events re-fired from a button click are:I also have a fix for this that I'm still verifying...
fix(gesture): maximum call stack size exceeded on click w/ TalkBack
Splaktar commentedon Aug 13, 2019
PR #11774 posted to fix this.
fix(gesture): maximum call stack size exceeded on click w/ Tal… (#11774)