Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
SDK
/
exoplayer
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
ea99c3fa
authored
Jun 28, 2021
by
olly
Committed by
Oliver Woodman
Jun 30, 2021
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Add ability to set Cronet request priority
PiperOrigin-RevId: 381833403
parent
8588bdb0
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
31 additions
and
0 deletions
RELEASENOTES.md
extensions/cronet/src/main/java/com/google/android/exoplayer2/ext/cronet/CronetDataSource.java
extensions/cronet/src/test/java/com/google/android/exoplayer2/ext/cronet/CronetDataSourceTest.java
RELEASENOTES.md
View file @
ea99c3fa
...
...
@@ -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)
...
...
extensions/cronet/src/main/java/com/google/android/exoplayer2/ext/cronet/CronetDataSource.java
View file @
ea99c3fa
...
...
@@ -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
;
}
...
...
@@ -171,6 +174,21 @@ public class CronetDataSource extends BaseDataSource implements HttpDataSource {
}
/**
* 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.
*
* <p>The default is {@link CronetDataSource#DEFAULT_CONNECT_TIMEOUT_MILLIS}.
...
...
@@ -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.
...
...
extensions/cronet/src/test/java/com/google/android/exoplayer2/ext/cronet/CronetDataSourceTest.java
View file @
ea99c3fa
...
...
@@ -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
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment