diff --git a/library/core/src/main/java/com/google/android/exoplayer2/metadata/scte35/PrivateCommand.java b/library/core/src/main/java/com/google/android/exoplayer2/metadata/scte35/PrivateCommand.java index 4334fa99cb2..44850b720f6 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/metadata/scte35/PrivateCommand.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/metadata/scte35/PrivateCommand.java @@ -18,6 +18,7 @@ import android.os.Parcel; import android.os.Parcelable; import com.google.android.exoplayer2.util.ParsableByteArray; +import com.google.android.exoplayer2.util.Util; /** * Represents a private command as defined in SCTE35, Section 9.3.6. @@ -46,8 +47,7 @@ private PrivateCommand(long identifier, byte[] commandBytes, long ptsAdjustment) private PrivateCommand(Parcel in) { ptsAdjustment = in.readLong(); identifier = in.readLong(); - commandBytes = new byte[in.readInt()]; - in.readByteArray(commandBytes); + commandBytes = Util.castNonNull(in.createByteArray()); } /* package */ static PrivateCommand parseFromSection(ParsableByteArray sectionData, @@ -64,7 +64,6 @@ private PrivateCommand(Parcel in) { public void writeToParcel(Parcel dest, int flags) { dest.writeLong(ptsAdjustment); dest.writeLong(identifier); - dest.writeInt(commandBytes.length); dest.writeByteArray(commandBytes); } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadRequest.java b/library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadRequest.java index 7ff43ceacde..988b908140d 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadRequest.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadRequest.java @@ -100,8 +100,7 @@ public DownloadRequest( } streamKeys = Collections.unmodifiableList(mutableStreamKeys); customCacheKey = in.readString(); - data = new byte[in.readInt()]; - in.readByteArray(data); + data = castNonNull(in.createByteArray()); } /** @@ -194,7 +193,6 @@ public void writeToParcel(Parcel dest, int flags) { dest.writeParcelable(streamKeys.get(i), /* parcelableFlags= */ 0); } dest.writeString(customCacheKey); - dest.writeInt(data.length); dest.writeByteArray(data); } diff --git a/library/core/src/test/java/com/google/android/exoplayer2/metadata/MetadataRendererTest.java b/library/core/src/test/java/com/google/android/exoplayer2/metadata/MetadataRendererTest.java index 1ad0ce6b79f..97e9a756861 100644 --- a/library/core/src/test/java/com/google/android/exoplayer2/metadata/MetadataRendererTest.java +++ b/library/core/src/test/java/com/google/android/exoplayer2/metadata/MetadataRendererTest.java @@ -12,7 +12,6 @@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * */ package com.google.android.exoplayer2.metadata; diff --git a/library/core/src/test/java/com/google/android/exoplayer2/metadata/MetadataTest.java b/library/core/src/test/java/com/google/android/exoplayer2/metadata/MetadataTest.java new file mode 100644 index 00000000000..8331bce9471 --- /dev/null +++ b/library/core/src/test/java/com/google/android/exoplayer2/metadata/MetadataTest.java @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.google.android.exoplayer2.metadata; + +import static com.google.common.truth.Truth.assertThat; + +import android.os.Parcel; +import androidx.test.ext.junit.runners.AndroidJUnit4; +import com.google.android.exoplayer2.metadata.id3.BinaryFrame; +import org.junit.Test; +import org.junit.runner.RunWith; + +/** Tests for {@link Metadata}. */ +@RunWith(AndroidJUnit4.class) +public class MetadataTest { + + @Test + public void testParcelable() { + Metadata metadataToParcel = + new Metadata( + new BinaryFrame("id1", new byte[] {1}), new BinaryFrame("id2", new byte[] {2})); + + Parcel parcel = Parcel.obtain(); + metadataToParcel.writeToParcel(parcel, 0); + parcel.setDataPosition(0); + + Metadata metadataFromParcel = Metadata.CREATOR.createFromParcel(parcel); + assertThat(metadataFromParcel).isEqualTo(metadataToParcel); + + parcel.recycle(); + } +}