From af960d008e3dabe700578d55ad9b4d91b6b14773 Mon Sep 17 00:00:00 2001 From: shubang Date: Tue, 9 Mar 2021 15:56:00 -0800 Subject: [PATCH] Fix NPE of extras in media metrics Bug: 182186519 Bug: 182104911 Test: CTS Change-Id: I114763499b62eb62aa9d770e6b1e1f98ce6a8eaf --- media/java/android/media/metrics/NetworkEvent.java | 5 +++-- media/java/android/media/metrics/PlaybackErrorEvent.java | 4 ++-- media/java/android/media/metrics/PlaybackMetrics.java | 4 ++-- media/java/android/media/metrics/PlaybackStateEvent.java | 4 ++-- media/java/android/media/metrics/TrackChangeEvent.java | 2 +- 5 files changed, 10 insertions(+), 9 deletions(-) diff --git a/media/java/android/media/metrics/NetworkEvent.java b/media/java/android/media/metrics/NetworkEvent.java index 098885cc9bdd3..1866068251042 100644 --- a/media/java/android/media/metrics/NetworkEvent.java +++ b/media/java/android/media/metrics/NetworkEvent.java @@ -113,10 +113,11 @@ public final class NetworkEvent extends Event implements Parcelable { * * @hide */ - public NetworkEvent(@NetworkType int type, long timeSinceCreatedMillis, Bundle extras) { + public NetworkEvent(@NetworkType int type, long timeSinceCreatedMillis, + @Nullable Bundle extras) { this.mNetworkType = type; this.mTimeSinceCreatedMillis = timeSinceCreatedMillis; - this.mExtras = extras.deepCopy(); + this.mExtras = extras == null ? null : extras.deepCopy(); } /** diff --git a/media/java/android/media/metrics/PlaybackErrorEvent.java b/media/java/android/media/metrics/PlaybackErrorEvent.java index b23b4d2728b4e..ccf848b50a36c 100644 --- a/media/java/android/media/metrics/PlaybackErrorEvent.java +++ b/media/java/android/media/metrics/PlaybackErrorEvent.java @@ -65,12 +65,12 @@ public final class PlaybackErrorEvent extends Event implements Parcelable { int errorCode, int subErrorCode, long timeSinceCreatedMillis, - Bundle extras) { + @Nullable Bundle extras) { this.mExceptionStack = exceptionStack; this.mErrorCode = errorCode; this.mSubErrorCode = subErrorCode; this.mTimeSinceCreatedMillis = timeSinceCreatedMillis; - this.mExtras = extras.deepCopy(); + this.mExtras = extras == null ? null : extras.deepCopy(); } /** @hide */ diff --git a/media/java/android/media/metrics/PlaybackMetrics.java b/media/java/android/media/metrics/PlaybackMetrics.java index 7e7f44a97b9c5..3ffd10f4ea8cc 100644 --- a/media/java/android/media/metrics/PlaybackMetrics.java +++ b/media/java/android/media/metrics/PlaybackMetrics.java @@ -194,7 +194,7 @@ public final class PlaybackMetrics implements Parcelable { long localBytesRead, long networkTransferDurationMillis, byte[] drmSessionId, - Bundle extras) { + @Nullable Bundle extras) { this.mMediaDurationMillis = mediaDurationMillis; this.mStreamSource = streamSource; this.mStreamType = streamType; @@ -212,7 +212,7 @@ public final class PlaybackMetrics implements Parcelable { this.mLocalBytesRead = localBytesRead; this.mNetworkTransferDurationMillis = networkTransferDurationMillis; this.mDrmSessionId = drmSessionId; - this.mExtras = extras.deepCopy(); + this.mExtras = extras == null ? null : extras.deepCopy(); } /** diff --git a/media/java/android/media/metrics/PlaybackStateEvent.java b/media/java/android/media/metrics/PlaybackStateEvent.java index dea8c1db71def..2bab5c9bc3dc7 100644 --- a/media/java/android/media/metrics/PlaybackStateEvent.java +++ b/media/java/android/media/metrics/PlaybackStateEvent.java @@ -138,10 +138,10 @@ public final class PlaybackStateEvent extends Event implements Parcelable { public PlaybackStateEvent( int state, long timeSinceCreatedMillis, - Bundle extras) { + @Nullable Bundle extras) { this.mTimeSinceCreatedMillis = timeSinceCreatedMillis; this.mState = state; - this.mExtras = extras.deepCopy(); + this.mExtras = extras == null ? null : extras.deepCopy(); } /** diff --git a/media/java/android/media/metrics/TrackChangeEvent.java b/media/java/android/media/metrics/TrackChangeEvent.java index aa519782ec80b..a3eb4adfeb8d6 100644 --- a/media/java/android/media/metrics/TrackChangeEvent.java +++ b/media/java/android/media/metrics/TrackChangeEvent.java @@ -167,7 +167,7 @@ public final class TrackChangeEvent extends Event implements Parcelable { this.mWidth = width; this.mHeight = height; this.mVideoFrameRate = videoFrameRate; - this.mExtras = extras.deepCopy(); + this.mExtras = extras == null ? null : extras.deepCopy(); } /**