Commit a1d376fa by olly Committed by Christos Tsilopoulos

Fix incorrect assertion in CacheDataSource

#minor-release
#exofixit

PiperOrigin-RevId: 395233639
parent 624d212d
......@@ -6,6 +6,9 @@
* Fix track selection in `StyledPlayerControlView` when using
`ForwardingPlayer`.
* Fix `FlagSet#equals` on API levels below 24.
* Fix `NullPointerException` being thrown from `CacheDataSource` when
reading a fully cached resource with `DataSpec.position` equal to the
resource length.
* Extractors:
* Support TS packets without PTS flag
([#9294](https://github.com/google/ExoPlayer/issues/9294)).
......
......@@ -597,14 +597,14 @@ public final class CacheDataSource implements DataSource {
@Override
public int read(byte[] buffer, int offset, int length) throws IOException {
DataSpec requestDataSpec = checkNotNull(this.requestDataSpec);
DataSpec currentDataSpec = checkNotNull(this.currentDataSpec);
if (length == 0) {
return 0;
}
if (bytesRemaining == 0) {
return C.RESULT_END_OF_INPUT;
}
DataSpec requestDataSpec = checkNotNull(this.requestDataSpec);
DataSpec currentDataSpec = checkNotNull(this.currentDataSpec);
try {
if (readPosition >= checkCachePosition) {
openNextSource(requestDataSpec, true);
......
......@@ -125,6 +125,28 @@ public final class CacheDataSourceTest {
}
@Test
public void cacheAndReadFromLength_readsZeroBytes() throws Exception {
// Read and cache all data from upstream.
CacheDataSource cacheDataSource =
createCacheDataSource(
/* setReadException= */ false, /* unknownLength= */ false, /* cacheKeyFactory= */ null);
assertReadDataContentLength(
cacheDataSource,
unboundedDataSpec,
/* unknownLength= */ false,
/* customCacheKey= */ false);
// Read from position == length.
cacheDataSource =
createCacheDataSource(
/* setReadException= */ true, /* unknownLength= */ false, /* cacheKeyFactory= */ null);
assertReadData(
cacheDataSource,
unboundedDataSpec.buildUpon().setPosition(TEST_DATA.length).build(),
/* unknownLength= */ false);
}
@Test
public void propagatesHttpHeadersUpstream() throws Exception {
CacheDataSource cacheDataSource =
createCacheDataSource(/* setReadException= */ false, /* unknownLength= */ false);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment