Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f8c953de authored by Valentin Iftime's avatar Valentin Iftime Committed by Iavor-Valentin Iftime
Browse files

Do not remove toast window token without removing window

 This causes the 2nd call to removeWindowToken from finishWindowTokenLocked
  to fail because the window token has been removed from WMS.
 This causes window leaks in some edge cases, ie. b/286495456.

Test: atest WindowUntrustedTouchTest
 atest ToastWindowTest
 atest ToastPresenterTest
 atest ToastUITest

Bug: 204272000
Bug: 286495456
Bug: 282262771
Change-Id: I43e640c230fed0fac85631fe584e77d901af0949
parent 7e387fc7
Loading
Loading
Loading
Loading
+1 −7
Original line number Diff line number Diff line
@@ -8718,13 +8718,7 @@ public class NotificationManagerService extends SystemService {
        ToastRecord lastToast = mToastQueue.remove(index);
        mWindowManagerInternal.removeWindowToken(lastToast.windowToken, false /* removeWindows */,
                lastToast.displayId);
        // We passed 'false' for 'removeWindows' so that the client has time to stop
        // rendering (as hide above is a one-way message), otherwise we could crash
        // a client which was actively using a surface made from the token. However
        // we need to schedule a timeout to make sure the token is eventually killed
        // one way or another.
        // We need to schedule a timeout to make sure the token is eventually killed
        scheduleKillTokenTimeout(lastToast);
        keepProcessAliveForToastIfNeededLocked(record.pid);