From 1da50a201b9bf2f126badce397c4a5998e7e2366 Mon Sep 17 00:00:00 2001 From: Bryce Lee Date: Thu, 28 Apr 2022 17:57:38 +0000 Subject: [PATCH] Unbind from dream overlay in onUnbind. If a dream is unbound before finish, unbinding from the overlay service will not occur before onDestroy. This will result in an exception from unbinding from a non registered service. This change ensures the dream service unbinds from the overlay service when unbound. Test: atest DreamManagerServiceTests#testForceStopStubbornDream Fixed: 229824204 Change-Id: Id708b9119c5498bf9632b21a539c3ca7f5506737 --- core/java/android/service/dreams/DreamService.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/core/java/android/service/dreams/DreamService.java b/core/java/android/service/dreams/DreamService.java index 6a9afdb84e188..47fc120c9d4f2 100644 --- a/core/java/android/service/dreams/DreamService.java +++ b/core/java/android/service/dreams/DreamService.java @@ -999,6 +999,14 @@ public class DreamService extends Service implements Window.Callback { return mDreamServiceWrapper; } + @Override + public boolean onUnbind(Intent intent) { + // We must unbind from any overlay connection if we are unbound before finishing. + mOverlayConnection.unbind(this); + + return super.onUnbind(intent); + } + /** * Stops the dream and detaches from the window. *