Add ability to set Cronet request priority
PiperOrigin-RevId: 381833403
This commit is contained in:
parent
8588bdb02a
commit
ea99c3fa94
@ -112,6 +112,9 @@
|
||||
* OkHttp extension:
|
||||
* Switch to OkHttp 4.9.1. This increases the extension's minimum SDK
|
||||
version requirement from 16 to 21.
|
||||
* Cronet extension:
|
||||
* Add `CronetDataSource.Factory.setRequestPriority` to allow setting the
|
||||
priority of requests made by `CronetDataSource` instances.
|
||||
|
||||
### 2.14.1 (2021-06-11)
|
||||
|
||||
|
@ -17,6 +17,7 @@ package com.google.android.exoplayer2.ext.cronet;
|
||||
|
||||
import static com.google.android.exoplayer2.upstream.HttpUtil.buildRangeRequestHeader;
|
||||
import static com.google.android.exoplayer2.util.Util.castNonNull;
|
||||
import static org.chromium.net.UrlRequest.Builder.REQUEST_PRIORITY_MEDIUM;
|
||||
|
||||
import android.net.Uri;
|
||||
import android.text.TextUtils;
|
||||
@ -86,6 +87,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
||||
@Nullable private Predicate<String> contentTypePredicate;
|
||||
@Nullable private TransferListener transferListener;
|
||||
@Nullable private String userAgent;
|
||||
private int requestPriority;
|
||||
private int connectTimeoutMs;
|
||||
private int readTimeoutMs;
|
||||
private boolean resetTimeoutOnRedirects;
|
||||
@ -109,6 +111,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
||||
this.executor = executor;
|
||||
defaultRequestProperties = new RequestProperties();
|
||||
internalFallbackFactory = null;
|
||||
requestPriority = REQUEST_PRIORITY_MEDIUM;
|
||||
connectTimeoutMs = DEFAULT_CONNECT_TIMEOUT_MILLIS;
|
||||
readTimeoutMs = DEFAULT_READ_TIMEOUT_MILLIS;
|
||||
}
|
||||
@ -170,6 +173,21 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the priority of requests made by {@link CronetDataSource} instances created by this
|
||||
* factory.
|
||||
*
|
||||
* <p>The default is {@link UrlRequest.Builder#REQUEST_PRIORITY_MEDIUM}.
|
||||
*
|
||||
* @param requestPriority The request priority, which should be one of Cronet's {@code
|
||||
* UrlRequest.Builder#REQUEST_PRIORITY_*} constants.
|
||||
* @return This factory.
|
||||
*/
|
||||
public Factory setRequestPriority(int requestPriority) {
|
||||
this.requestPriority = requestPriority;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the connect timeout, in milliseconds.
|
||||
*
|
||||
@ -306,6 +324,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
||||
new CronetDataSource(
|
||||
cronetEngine,
|
||||
executor,
|
||||
requestPriority,
|
||||
connectTimeoutMs,
|
||||
readTimeoutMs,
|
||||
resetTimeoutOnRedirects,
|
||||
@ -353,6 +372,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
||||
|
||||
private final CronetEngine cronetEngine;
|
||||
private final Executor executor;
|
||||
private final int requestPriority;
|
||||
private final int connectTimeoutMs;
|
||||
private final int readTimeoutMs;
|
||||
private final boolean resetTimeoutOnRedirects;
|
||||
@ -413,6 +433,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
||||
this(
|
||||
cronetEngine,
|
||||
executor,
|
||||
REQUEST_PRIORITY_MEDIUM,
|
||||
connectTimeoutMs,
|
||||
readTimeoutMs,
|
||||
resetTimeoutOnRedirects,
|
||||
@ -436,6 +457,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
||||
this(
|
||||
cronetEngine,
|
||||
executor,
|
||||
REQUEST_PRIORITY_MEDIUM,
|
||||
connectTimeoutMs,
|
||||
readTimeoutMs,
|
||||
resetTimeoutOnRedirects,
|
||||
@ -499,6 +521,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
||||
this(
|
||||
cronetEngine,
|
||||
executor,
|
||||
REQUEST_PRIORITY_MEDIUM,
|
||||
connectTimeoutMs,
|
||||
readTimeoutMs,
|
||||
resetTimeoutOnRedirects,
|
||||
@ -512,6 +535,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
||||
protected CronetDataSource(
|
||||
CronetEngine cronetEngine,
|
||||
Executor executor,
|
||||
int requestPriority,
|
||||
int connectTimeoutMs,
|
||||
int readTimeoutMs,
|
||||
boolean resetTimeoutOnRedirects,
|
||||
@ -523,6 +547,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
||||
super(/* isNetwork= */ true);
|
||||
this.cronetEngine = Assertions.checkNotNull(cronetEngine);
|
||||
this.executor = Assertions.checkNotNull(executor);
|
||||
this.requestPriority = requestPriority;
|
||||
this.connectTimeoutMs = connectTimeoutMs;
|
||||
this.readTimeoutMs = readTimeoutMs;
|
||||
this.resetTimeoutOnRedirects = resetTimeoutOnRedirects;
|
||||
@ -860,6 +885,7 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
|
||||
UrlRequest.Builder requestBuilder =
|
||||
cronetEngine
|
||||
.newUrlRequestBuilder(dataSpec.uri.toString(), urlRequestCallback, executor)
|
||||
.setPriority(requestPriority)
|
||||
.allowDirectExecutor();
|
||||
|
||||
// Set the headers.
|
||||
|
@ -21,6 +21,7 @@ import static java.util.concurrent.TimeUnit.SECONDS;
|
||||
import static org.chromium.net.NetworkException.ERROR_HOSTNAME_NOT_RESOLVED;
|
||||
import static org.junit.Assert.fail;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.anyInt;
|
||||
import static org.mockito.ArgumentMatchers.anyString;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.Mockito.doAnswer;
|
||||
@ -128,6 +129,7 @@ public final class CronetDataSourceTest {
|
||||
when(mockCronetEngine.newUrlRequestBuilder(
|
||||
anyString(), any(UrlRequest.Callback.class), any(Executor.class)))
|
||||
.thenReturn(mockUrlRequestBuilder);
|
||||
when(mockUrlRequestBuilder.setPriority(anyInt())).thenReturn(mockUrlRequestBuilder);
|
||||
when(mockUrlRequestBuilder.allowDirectExecutor()).thenReturn(mockUrlRequestBuilder);
|
||||
when(mockUrlRequestBuilder.build()).thenReturn(mockUrlRequest);
|
||||
mockStatusResponse();
|
||||
|
Loading…
x
Reference in New Issue
Block a user