Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What is it?
Description of the changes in your PR
This PR contains 4 commits:
The non-desugared
toArray(IntFunction)
method was being used when loading download missions. The desugaring documentation reports it as "Not supported at all minSDK levels". This bug was introduced by f9fc1cd. I checked and there no other places wheretoArray(IntFunction)
is used.There were some logical flaws in the
getAudioStreamFor
function, which is used to choose the audio stream to mux with a video-only stream when downloading. Before the code correctly chose WEBMA or WEBMA_OPUS audio for WEBM videos, and M4A audio for MPEG_4 videos. But after commit 77bbbc8 the code only "prefers" choosing the correct format, but can still return an invalid audio format for a specific video format, since only Comparators are used with no filtering. This is fixed by basically restoring the previous behavior (but without discarding the improvements in 77bbbc8 related toisLimitingDataUsage
), that is:Now if there is no valid audio format corresponding to a video format, the video will be downloaded without audio:
DownloadDialog.onDismissListener
was not used anymore, so I removed itWhen
DownloadDialog.onCreate()
is called, if there is no storage permission on old Android versions, the dialog is dismissed without continuing initialization. However, for some reason, Android still callsDownloadDialog.onViewCreated()
afterwards, which obviously requires the initialization inonCreate()
to have completed, thus causing a NPE. This is fixed by adding a check to detect if the dialog was dismissed before initializing.Fixes the following issue(s)
APK testing
The APK can be found by going to the "Checks" tab below the title. On the left pane, click on "CI", scroll down to "artifacts" and click "app" to download the zip file which contains the debug APK of this PR. You can find more info and a video demonstration on this wiki page.
Due diligence