summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Alex Buynytskyy <alexbuy@google.com> 2020-05-19 22:18:18 -0700
committer Alex Buynytskyy <alexbuy@google.com> 2020-05-20 10:36:58 -0700
commit221cd08deb2f937907334f04e202cc0317ad1276 (patch)
tree8c898ab5b115aac37a77d5a98590ac30d3b63d95
parent2d2b7250f6d399e949421c253303a30b06eef689 (diff)
Using the lock to obtain mRemoteStatusReceiver.
Bug: 156287164 Test: atest IncrementalInstallerTest Change-Id: I4e1af0435fe7a66d8eec40db588630098fd7ac69
-rw-r--r--services/core/java/com/android/server/pm/PackageInstallerSession.java21
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) {
}
}