From be87b6803901e9ed2701935300801c3eb2ef629c Mon Sep 17 00:00:00 2001 From: Sungsoo Lim Date: Thu, 3 Aug 2017 13:36:22 +0900 Subject: [PATCH] Do not call ItemCallback after disconnected Bug: 64119114 Test: Passed MediaBrowserTest Change-Id: Icf3283710abe7c03f4a73532b33ec2a306d2280b --- media/java/android/media/browse/MediaBrowser.java | 3 +++ media/java/android/service/media/MediaBrowserService.java | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/media/java/android/media/browse/MediaBrowser.java b/media/java/android/media/browse/MediaBrowser.java index ece19e46e4790..90531c33f5ceb 100644 --- a/media/java/android/media/browse/MediaBrowser.java +++ b/media/java/android/media/browse/MediaBrowser.java @@ -445,6 +445,9 @@ public final class MediaBrowser { ResultReceiver receiver = new ResultReceiver(mHandler) { @Override protected void onReceiveResult(int resultCode, Bundle resultData) { + if (!isConnected()) { + return; + } if (resultCode != 0 || resultData == null || !resultData.containsKey(MediaBrowserService.KEY_MEDIA_ITEM)) { cb.onError(mediaId); diff --git a/media/java/android/service/media/MediaBrowserService.java b/media/java/android/service/media/MediaBrowserService.java index b52906ddd1aed..4df645dc7b2f1 100644 --- a/media/java/android/service/media/MediaBrowserService.java +++ b/media/java/android/service/media/MediaBrowserService.java @@ -700,6 +700,13 @@ public abstract class MediaBrowserService extends Service { new Result(itemId) { @Override void onResultSent(MediaBrowser.MediaItem item, @ResultFlags int flag) { + if (mConnections.get(connection.callbacks.asBinder()) != connection) { + if (DBG) { + Log.d(TAG, "Not sending onLoadItem result for connection that has" + + " been disconnected. pkg=" + connection.pkg + " id=" + itemId); + } + return; + } if ((flag & RESULT_FLAG_ON_LOAD_ITEM_NOT_IMPLEMENTED) != 0) { receiver.send(RESULT_ERROR, null); return;