summaryrefslogtreecommitdiff
path: root/core/java/android/view/RemoteAccessibilityController.java
Commit message (Collapse)AuthorAgeFilesLines
* Fix leak of RemoteAccessibilityController through SurfacePackage.Ahaan Ugale2022-07-021-6/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a child SurfacePackage is set on a SurfaceView, the view's RemoteAccessibilityController calls linkToDeath on the SurfacePackage's IAccessibilityEmbeddedConnection. The death recipient -- the controller itself -- is unlinked when the Surface is destroyed -- being notified through a SurfaceChangedCallback registered on the ViewRootImpl. There are 2 issues there: * When the SurfaceView is detached, the SurfaceChangedCallback is unregistered, so the unlinkToDeath never happens. * The Surface holding the SurfaceView may never be destroyed, for example in the case of the IME. SurfacePackages sent over ipc seem to be used in only 2 places currently: * For inlined autofill suggestions in the input method. This bug causes a serious leak here, since the memory is held in 2 persistent processes -- autofill Session data in the system server (referenced from the SurfaceViews), and SurfaceViews in the IME. * The Wallpaper app. For now, this is fixed by using a WeakRef for the RemoteAccessibilityController. The root cause will be fixed in a followup change in a later release. Fix: 183402294 Test: manual: * atest CtsAutoFillServiceTestCases:InlineLoginActivityTest\ --iterations 5 * Force gc: adb shell kill -10 $(adb shell pgrep ext.services mockime\ system_server -d '\ ') * Rerun that a couple of times so the binder objects get cleared. * Check for leaks of autofill.Session in system_server and SurfaceViews or RemoteAccessibilityEmbeddedConnection in com.android.cts.mockime. Change-Id: I5447b173313919507969872bdeb7ff3038152c23
* Fix InlineFilteringTest#testFiltering_filtersByPrefixryanlwlin2022-04-191-3/+3
| | | | | | | | | | | | The window matrix of the embedded window is not updated if the second host SurfaceView doesn't have any offset. To esnure the window matrix is up-to-date, we force to update the matrix when the embedded hierarchy is initialized. Bug: 229178859 Test: atest InlineFilteringTest#testFiltering_filtersByPrefix atest android.accessibilityservice.cts Change-Id: Ib23af520fcbaa1788e3ef22a1086b90a0801375c
* Change node bounds procedure based on SufaceFlinger Callbackryanlwlin2022-04-121-6/+6
| | | | | | | | | | | | | | | | | | | | The attachInfo from ViewRootImpl is not reliable for DisplayArea manipulation or windowless window. To fix this problem, we use the transform matrix of InputWindowHandle, which could transform the bounds from window coorindate to screen coordinate. We also transfrom the bounds to logical display coordinates with the associated display matrix. Besides, we also record the magnification spec of the window, which could get the bounds before magnification. We use this value to decide the property 'visibleToUser'. Bug: 200797785 Test: atest android.accessibilityservice.cts WindowInfoTest atest com.android.server.accessibility Change-Id: I0917b04fe8b027fb2bd932a6f0604ba1449ebc66
* SurfaceView Cleanup (3/n): Extract RemoteAccessibilityControllerRobert Carr2020-10-141-0/+168
We extract the SurfaceControlViewHost accessibility logic from SurfaceView. This is serving both cleaning up the code in SurfaceView a little, while also serving the goal of one day using this accessibility code from other components. Test: Existing tests pass Change-Id: I0333ab339e54e3766fffab25df92f00bdb9723dc