diff options
| author | 2020-05-20 19:37:45 +0000 | |
|---|---|---|
| committer | 2020-05-20 19:37:45 +0000 | |
| commit | 76b41e009d135b23fe4ee6a0ef1d153fcbb66923 (patch) | |
| tree | c20e6816b373808a76181cacbffa6b53f33b94af | |
| parent | 0b35eb55a86718c94281567db75565304b102ef3 (diff) | |
| parent | 221cd08deb2f937907334f04e202cc0317ad1276 (diff) | |
Merge "Using the lock to obtain mRemoteStatusReceiver." into rvc-dev
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageInstallerSession.java | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/services/core/java/com/android/server/pm/PackageInstallerSession.java b/services/core/java/com/android/server/pm/PackageInstallerSession.java index 1741aa74e9bc..f8278de1531d 100644 --- a/services/core/java/com/android/server/pm/PackageInstallerSession.java +++ b/services/core/java/com/android/server/pm/PackageInstallerSession.java @@ -2822,8 +2822,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { } case IDataLoaderStatusListener.DATA_LOADER_UNAVAILABLE: { // Don't fail or commit the session. Allow caller to commit again. - sendPendingStreaming(mContext, mRemoteStatusReceiver, sessionId, - "DataLoader unavailable"); + sendPendingStreaming("DataLoader unavailable"); break; } case IDataLoaderStatusListener.DATA_LOADER_UNRECOVERABLE: @@ -2835,8 +2834,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { } catch (RemoteException e) { // In case of streaming failure we don't want to fail or commit the session. // Just return from this method and allow caller to commit again. - sendPendingStreaming(mContext, mRemoteStatusReceiver, sessionId, - e.getMessage()); + sendPendingStreaming(e.getMessage()); } } }; @@ -3196,8 +3194,17 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { } } - private static void sendPendingStreaming(Context context, IntentSender target, int sessionId, - @Nullable String cause) { + private void sendPendingStreaming(@Nullable String cause) { + final IntentSender statusReceiver; + synchronized (mLock) { + statusReceiver = mRemoteStatusReceiver; + } + + if (statusReceiver == null) { + Slog.e(TAG, "Missing receiver for pending streaming status."); + return; + } + final Intent intent = new Intent(); intent.putExtra(PackageInstaller.EXTRA_SESSION_ID, sessionId); intent.putExtra(PackageInstaller.EXTRA_STATUS, PackageInstaller.STATUS_PENDING_STREAMING); @@ -3208,7 +3215,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { intent.putExtra(PackageInstaller.EXTRA_STATUS_MESSAGE, "Staging Image Not Ready"); } try { - target.sendIntent(context, 0, intent, null, null); + statusReceiver.sendIntent(mContext, 0, intent, null, null); } catch (IntentSender.SendIntentException ignored) { } } |