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
d233c045
authored
May 20, 2020
by
bachinger
Committed by
tonihei
May 21, 2020
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Simplify DownloadHelper
PiperOrigin-RevId: 312467496
parent
b9157a9e
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
52 additions
and
66 deletions
demos/main/src/main/java/com/google/android/exoplayer2/demo/DownloadTracker.java
library/core/proguard-rules.txt
library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadHelper.java
library/core/src/test/java/com/google/android/exoplayer2/offline/DownloadHelperTest.java
library/dash/src/test/java/com/google/android/exoplayer2/source/dash/offline/DownloadHelperTest.java
library/hls/src/test/java/com/google/android/exoplayer2/source/hls/offline/DownloadHelperTest.java
library/smoothstreaming/src/test/java/com/google/android/exoplayer2/source/smoothstreaming/offline/DownloadHelperTest.java
demos/main/src/main/java/com/google/android/exoplayer2/demo/DownloadTracker.java
View file @
d233c045
...
...
@@ -24,7 +24,6 @@ import android.widget.Toast;
import
androidx.annotation.NonNull
;
import
androidx.annotation.Nullable
;
import
androidx.fragment.app.FragmentManager
;
import
com.google.android.exoplayer2.C
;
import
com.google.android.exoplayer2.MediaItem
;
import
com.google.android.exoplayer2.RenderersFactory
;
import
com.google.android.exoplayer2.offline.Download
;
...
...
@@ -106,7 +105,9 @@ public class DownloadTracker {
}
startDownloadDialogHelper
=
new
StartDownloadDialogHelper
(
fragmentManager
,
getDownloadHelper
(
mediaItem
,
renderersFactory
),
mediaItem
);
fragmentManager
,
DownloadHelper
.
forMediaItem
(
context
,
mediaItem
,
renderersFactory
,
dataSourceFactory
),
mediaItem
);
}
}
...
...
@@ -121,28 +122,6 @@ public class DownloadTracker {
}
}
private
DownloadHelper
getDownloadHelper
(
MediaItem
mediaItem
,
RenderersFactory
renderersFactory
)
{
MediaItem
.
PlaybackProperties
playbackProperties
=
checkNotNull
(
mediaItem
.
playbackProperties
);
@C
.
ContentType
int
type
=
Util
.
inferContentTypeWithMimeType
(
playbackProperties
.
uri
,
playbackProperties
.
mimeType
);
switch
(
type
)
{
case
C
.
TYPE_DASH
:
return
DownloadHelper
.
forDash
(
context
,
playbackProperties
.
uri
,
dataSourceFactory
,
renderersFactory
);
case
C
.
TYPE_SS
:
return
DownloadHelper
.
forSmoothStreaming
(
context
,
playbackProperties
.
uri
,
dataSourceFactory
,
renderersFactory
);
case
C
.
TYPE_HLS
:
return
DownloadHelper
.
forHls
(
context
,
playbackProperties
.
uri
,
dataSourceFactory
,
renderersFactory
);
case
C
.
TYPE_OTHER
:
return
DownloadHelper
.
forProgressive
(
context
,
playbackProperties
.
uri
);
default
:
throw
new
IllegalStateException
(
"Unsupported type: "
+
type
);
}
}
private
class
DownloadManagerListener
implements
DownloadManager
.
Listener
{
@Override
...
...
library/core/proguard-rules.txt
View file @
d233c045
...
...
@@ -62,7 +62,7 @@
<init>(android.net.Uri, java.util.List, com.google.android.exoplayer2.upstream.cache.CacheDataSource.Factory, java.util.concurrent.Executor);
}
# Constructors accessed via reflection in DefaultMediaSourceFactory
and DownloadHelper
# Constructors accessed via reflection in DefaultMediaSourceFactory
-dontnote com.google.android.exoplayer2.source.dash.DashMediaSource$Factory
-keepclasseswithmembers class com.google.android.exoplayer2.source.dash.DashMediaSource$Factory {
<init>(com.google.android.exoplayer2.upstream.DataSource$Factory);
...
...
library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadHelper.java
View file @
d233c045
This diff is collapsed.
Click to expand it.
library/core/src/test/java/com/google/android/exoplayer2/offline/DownloadHelperTest.java
View file @
d233c045
...
...
@@ -18,11 +18,11 @@ package com.google.android.exoplayer2.offline;
import
static
com
.
google
.
common
.
truth
.
Truth
.
assertThat
;
import
static
org
.
robolectric
.
shadows
.
ShadowBaseLooper
.
shadowMainLooper
;
import
android.net.Uri
;
import
androidx.test.core.app.ApplicationProvider
;
import
androidx.test.ext.junit.runners.AndroidJUnit4
;
import
com.google.android.exoplayer2.C
;
import
com.google.android.exoplayer2.Format
;
import
com.google.android.exoplayer2.MediaItem
;
import
com.google.android.exoplayer2.Renderer
;
import
com.google.android.exoplayer2.RenderersFactory
;
import
com.google.android.exoplayer2.Timeline
;
...
...
@@ -59,8 +59,6 @@ import org.robolectric.annotation.LooperMode;
@LooperMode
(
LooperMode
.
Mode
.
PAUSED
)
public
class
DownloadHelperTest
{
private
static
final
String
TEST_DOWNLOAD_TYPE
=
"downloadType"
;
private
static
final
String
TEST_CACHE_KEY
=
"cacheKey"
;
private
static
final
Object
TEST_MANIFEST
=
new
Object
();
private
static
final
Timeline
TEST_TIMELINE
=
new
FakeTimeline
(
...
...
@@ -86,7 +84,7 @@ public class DownloadHelperTest {
private
static
TrackGroupArray
trackGroupArraySingle
;
private
static
TrackGroupArray
[]
trackGroupArrays
;
private
static
Uri
testUri
;
private
static
MediaItem
testMediaItem
;
private
DownloadHelper
downloadHelper
;
...
...
@@ -114,7 +112,8 @@ public class DownloadHelperTest {
trackGroupArrays
=
new
TrackGroupArray
[]
{
trackGroupArrayAll
,
trackGroupArraySingle
};
testUri
=
Uri
.
parse
(
"http://test.uri"
);
testMediaItem
=
new
MediaItem
.
Builder
().
setUri
(
"http://test.uri"
).
setCustomCacheKey
(
"cacheKey"
).
build
();
}
@Before
...
...
@@ -128,9 +127,7 @@ public class DownloadHelperTest {
downloadHelper
=
new
DownloadHelper
(
TEST_DOWNLOAD_TYPE
,
testUri
,
TEST_CACHE_KEY
,
testMediaItem
,
new
TestMediaSource
(),
DownloadHelper
.
DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORT
,
DownloadHelper
.
getRendererCapabilities
(
renderersFactory
));
...
...
@@ -414,9 +411,10 @@ public class DownloadHelperTest {
DownloadRequest
downloadRequest
=
downloadHelper
.
getDownloadRequest
(
data
);
assertThat
(
downloadRequest
.
type
).
isEqualTo
(
TEST_DOWNLOAD_TYPE
);
assertThat
(
downloadRequest
.
uri
).
isEqualTo
(
testUri
);
assertThat
(
downloadRequest
.
customCacheKey
).
isEqualTo
(
TEST_CACHE_KEY
);
assertThat
(
downloadRequest
.
type
).
isEqualTo
(
DownloadRequest
.
TYPE_PROGRESSIVE
);
assertThat
(
downloadRequest
.
uri
).
isEqualTo
(
testMediaItem
.
playbackProperties
.
uri
);
assertThat
(
downloadRequest
.
customCacheKey
)
.
isEqualTo
(
testMediaItem
.
playbackProperties
.
customCacheKey
);
assertThat
(
downloadRequest
.
data
).
isEqualTo
(
data
);
assertThat
(
downloadRequest
.
streamKeys
)
.
containsExactly
(
...
...
library/dash/src/test/java/com/google/android/exoplayer2/source/dash/offline/DownloadHelperTest.java
View file @
d233c045
...
...
@@ -15,13 +15,14 @@
*/
package
com
.
google
.
android
.
exoplayer2
.
source
.
dash
.
offline
;
import
android.net.Uri
;
import
androidx.test.core.app.ApplicationProvider
;
import
androidx.test.ext.junit.runners.AndroidJUnit4
;
import
com.google.android.exoplayer2.MediaItem
;
import
com.google.android.exoplayer2.Renderer
;
import
com.google.android.exoplayer2.drm.DrmSessionManager
;
import
com.google.android.exoplayer2.offline.DownloadHelper
;
import
com.google.android.exoplayer2.testutil.FakeDataSource
;
import
com.google.android.exoplayer2.util.MimeTypes
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
...
...
@@ -31,16 +32,16 @@ public final class DownloadHelperTest {
@Test
public
void
staticDownloadHelperForDash_doesNotThrow
()
{
DownloadHelper
.
for
Dash
(
DownloadHelper
.
for
MediaItem
(
ApplicationProvider
.
getApplicationContext
(),
Uri
.
parse
(
"http://uri"
),
new
FakeDataSource
.
Factory
(),
(
handler
,
videoListener
,
audioListener
,
text
,
metadata
)
->
new
Renderer
[
0
]);
DownloadHelper
.
forDash
(
Uri
.
parse
(
"http://uri"
),
new
FakeDataSource
.
Factory
(),
new
MediaItem
.
Builder
().
setUri
(
"http://uri"
).
setMimeType
(
MimeTypes
.
APPLICATION_MPD
).
build
(),
(
handler
,
videoListener
,
audioListener
,
text
,
metadata
)
->
new
Renderer
[
0
],
/* drmSessionManager= */
DrmSessionManager
.
getDummyDrmSessionManager
(),
DownloadHelper
.
DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORT
);
new
FakeDataSource
.
Factory
());
DownloadHelper
.
forMediaItem
(
new
MediaItem
.
Builder
().
setUri
(
"http://uri"
).
setMimeType
(
MimeTypes
.
APPLICATION_MPD
).
build
(),
DownloadHelper
.
DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORT
,
(
handler
,
videoListener
,
audioListener
,
text
,
metadata
)
->
new
Renderer
[
0
],
new
FakeDataSource
.
Factory
(),
/* drmSessionManager= */
DrmSessionManager
.
getDummyDrmSessionManager
());
}
}
library/hls/src/test/java/com/google/android/exoplayer2/source/hls/offline/DownloadHelperTest.java
View file @
d233c045
...
...
@@ -15,12 +15,13 @@
*/
package
com
.
google
.
android
.
exoplayer2
.
source
.
hls
.
offline
;
import
android.net.Uri
;
import
androidx.test.core.app.ApplicationProvider
;
import
androidx.test.ext.junit.runners.AndroidJUnit4
;
import
com.google.android.exoplayer2.MediaItem
;
import
com.google.android.exoplayer2.Renderer
;
import
com.google.android.exoplayer2.offline.DownloadHelper
;
import
com.google.android.exoplayer2.testutil.FakeDataSource
;
import
com.google.android.exoplayer2.util.MimeTypes
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
...
...
@@ -30,16 +31,22 @@ public final class DownloadHelperTest {
@Test
public
void
staticDownloadHelperForHls_doesNotThrow
()
{
DownloadHelper
.
for
Hls
(
DownloadHelper
.
for
MediaItem
(
ApplicationProvider
.
getApplicationContext
(),
Uri
.
parse
(
"http://uri"
),
new
FakeDataSource
.
Factory
(),
(
handler
,
videoListener
,
audioListener
,
text
,
metadata
)
->
new
Renderer
[
0
]);
DownloadHelper
.
forHls
(
Uri
.
parse
(
"http://uri"
),
new
FakeDataSource
.
Factory
(),
new
MediaItem
.
Builder
()
.
setUri
(
"http://uri"
)
.
setMimeType
(
MimeTypes
.
APPLICATION_M3U8
)
.
build
(),
(
handler
,
videoListener
,
audioListener
,
text
,
metadata
)
->
new
Renderer
[
0
],
/* drmSessionManager= */
null
,
DownloadHelper
.
DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORT
);
new
FakeDataSource
.
Factory
());
DownloadHelper
.
forMediaItem
(
new
MediaItem
.
Builder
()
.
setUri
(
"http://uri"
)
.
setMimeType
(
MimeTypes
.
APPLICATION_M3U8
)
.
build
(),
DownloadHelper
.
DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORT
,
(
handler
,
videoListener
,
audioListener
,
text
,
metadata
)
->
new
Renderer
[
0
],
new
FakeDataSource
.
Factory
(),
/* drmSessionManager= */
null
);
}
}
library/smoothstreaming/src/test/java/com/google/android/exoplayer2/source/smoothstreaming/offline/DownloadHelperTest.java
View file @
d233c045
...
...
@@ -15,12 +15,13 @@
*/
package
com
.
google
.
android
.
exoplayer2
.
source
.
smoothstreaming
.
offline
;
import
android.net.Uri
;
import
androidx.test.core.app.ApplicationProvider
;
import
androidx.test.ext.junit.runners.AndroidJUnit4
;
import
com.google.android.exoplayer2.MediaItem
;
import
com.google.android.exoplayer2.Renderer
;
import
com.google.android.exoplayer2.offline.DownloadHelper
;
import
com.google.android.exoplayer2.testutil.FakeDataSource
;
import
com.google.android.exoplayer2.util.MimeTypes
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
...
...
@@ -30,16 +31,16 @@ public final class DownloadHelperTest {
@Test
public
void
staticDownloadHelperForSmoothStreaming_doesNotThrow
()
{
DownloadHelper
.
for
SmoothStreaming
(
DownloadHelper
.
for
MediaItem
(
ApplicationProvider
.
getApplicationContext
(),
Uri
.
parse
(
"http://uri"
),
new
FakeDataSource
.
Factory
(),
(
handler
,
videoListener
,
audioListener
,
text
,
metadata
)
->
new
Renderer
[
0
]);
DownloadHelper
.
forSmoothStreaming
(
Uri
.
parse
(
"http://uri"
),
new
FakeDataSource
.
Factory
(),
new
MediaItem
.
Builder
().
setUri
(
"http://uri"
).
setMimeType
(
MimeTypes
.
APPLICATION_SS
).
build
(),
(
handler
,
videoListener
,
audioListener
,
text
,
metadata
)
->
new
Renderer
[
0
],
/* drmSessionManager= */
null
,
DownloadHelper
.
DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORT
);
new
FakeDataSource
.
Factory
());
DownloadHelper
.
forMediaItem
(
new
MediaItem
.
Builder
().
setUri
(
"http://uri"
).
setMimeType
(
MimeTypes
.
APPLICATION_SS
).
build
(),
DownloadHelper
.
DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORT
,
(
handler
,
videoListener
,
audioListener
,
text
,
metadata
)
->
new
Renderer
[
0
],
new
FakeDataSource
.
Factory
(),
/* drmSessionManager= */
null
);
}
}
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