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

Commit d0823fc8 authored by Winson Chung's avatar Winson Chung
Browse files

Return non-null empty list if the controller is already invalidated

- In the off chance that the controller is already invalidated (due to
  service reconnection to launcher for example), then any calls through
  the previous binder should just return an empty task list.

Bug: 206648922
Test: Manual (haven't been able to repro)
Change-Id: Iff6193fa89c2baecc527e589f17ae41b82575a48
parent 5a1d0103
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -292,7 +292,6 @@ public class RecentTasksController implements TaskStackListenerCallback,
         * Invalidates this instance, preventing future calls from updating the controller.
         */
        void invalidate() {
            Slog.d("b/206648922", "invalidating controller: " + mController);
            mController = null;
        }

@@ -313,13 +312,16 @@ public class RecentTasksController implements TaskStackListenerCallback,
        @Override
        public GroupedRecentTaskInfo[] getRecentTasks(int maxNum, int flags, int userId)
                throws RemoteException {
            if (mController == null) {
                // The controller is already invalidated -- just return an empty task list for now
                return new GroupedRecentTaskInfo[0];
            }

            final GroupedRecentTaskInfo[][] out = new GroupedRecentTaskInfo[][]{null};
            executeRemoteCallWithTaskPermission(mController, "getRecentTasks",
                    (controller) -> out[0] = controller.getRecentTasks(maxNum, flags, userId)
                            .toArray(new GroupedRecentTaskInfo[0]),
                    true /* blocking */);
            Slog.d("b/206648922", "getRecentTasks(" + maxNum + "): " + out[0]
                    + " mController=" + mController);
            return out[0];
        }
    }