Extract browse tree into BrowseTreeProvider#5142
Extract browse tree into BrowseTreeProvider#5142sztomek wants to merge 3 commits intomedia3/02-standalone-componentsfrom
Conversation
Generated by 🚫 Danger |
There was a problem hiding this comment.
Pull request overview
This PR is part of the Media3 migration and extracts media browsing tree construction/search into a reusable BrowseTreeProvider, shifting the internal browse representation to Media3 MediaItem while still serving legacy MediaBrowserCompat clients (notably Automotive).
Changes:
- Introduces
BrowseTreeProviderto own root selection, child loading, and search logic (previously inPlaybackService/AutoPlaybackService). - Updates
AutoConverterto produce Media3MediaItem/MediaMetadata, and addsMediaItemCompatConverterto convert back toMediaBrowserCompat.MediaItemfor MediaBrowserServiceCompat APIs. - Adds unit tests for
BrowseTreeProviderbehavior and for Media3→Compat conversion.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| modules/services/repositories/src/main/java/au/com/shiftyjelly/pocketcasts/repositories/playback/BrowseTreeProvider.kt | New extracted provider for browse tree loading + search, returning Media3 MediaItem. |
| modules/services/repositories/src/main/java/au/com/shiftyjelly/pocketcasts/repositories/playback/PlaybackService.kt | Delegates browse/search to BrowseTreeProvider and converts results back to compat items. |
| automotive/src/main/java/au/com/shiftyjelly/pocketcasts/AutoPlaybackService.kt | Delegates browse loading to BrowseTreeProvider and converts results back to compat items. |
| modules/services/repositories/src/main/java/au/com/shiftyjelly/pocketcasts/repositories/playback/auto/AutoConverter.kt | Migrates converter outputs from compat media items to Media3 MediaItem/MediaMetadata. |
| modules/services/repositories/src/main/java/au/com/shiftyjelly/pocketcasts/repositories/playback/auto/MediaItemCompatConverter.kt | New utility converting Media3 MediaItem to MediaBrowserCompat.MediaItem. |
| modules/services/repositories/src/test/java/au/com/shiftyjelly/pocketcasts/repositories/playback/BrowseTreeProviderTest.kt | New tests for root selection and recent/suggested/up-next browse results. |
| modules/services/repositories/src/test/java/au/com/shiftyjelly/pocketcasts/repositories/playback/auto/MediaItemCompatConverterTest.kt | New tests validating Media3→Compat conversion correctness. |
You can also share your feedback on Copilot code review. Take the survey.
...ies/src/main/java/au/com/shiftyjelly/pocketcasts/repositories/playback/BrowseTreeProvider.kt
Show resolved
Hide resolved
...ies/src/main/java/au/com/shiftyjelly/pocketcasts/repositories/playback/BrowseTreeProvider.kt
Show resolved
Hide resolved
f2c4c68 to
9e355b1
Compare
6d0e4b8 to
1ad148d
Compare
|
Version |
9e355b1 to
c4375a8
Compare
1ad148d to
3ef0f55
Compare
There was a problem hiding this comment.
Pull request overview
Extracts Media3 browse-tree/content-browsing logic out of PlaybackService into a reusable BrowseTreeProvider, primarily to support the ongoing Media3 migration and automotive browsing.
Changes:
- Introduces
BrowseTreeProviderto centralize root selection, child loading, and search, and wires it intoPlaybackServiceandAutoPlaybackService. - Migrates browse item creation to Media3
MediaItem/MediaMetadata, adding aMediaItemCompatConverterto bridge back toMediaBrowserCompat.MediaItem. - Adds unit tests for
BrowseTreeProvider(recent/up-next/suggested) andMediaItemCompatConverter.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| modules/services/repositories/src/main/java/au/com/shiftyjelly/pocketcasts/repositories/playback/PlaybackService.kt | Replaces inline browse/search implementations with calls into BrowseTreeProvider, converting results back to compat items. |
| modules/services/repositories/src/main/java/au/com/shiftyjelly/pocketcasts/repositories/playback/BrowseTreeProvider.kt | New provider encapsulating browse-tree routing, root construction, and search (including automotive-specific roots). |
| modules/services/repositories/src/main/java/au/com/shiftyjelly/pocketcasts/repositories/playback/auto/MediaItemCompatConverter.kt | New adapter converting Media3 MediaItem into MediaBrowserCompat.MediaItem. |
| modules/services/repositories/src/main/java/au/com/shiftyjelly/pocketcasts/repositories/playback/auto/AutoConverter.kt | Updates auto converters to return Media3 MediaItem/MediaMetadata and preserves browse extras. |
| automotive/src/main/java/au/com/shiftyjelly/pocketcasts/AutoPlaybackService.kt | Switches automotive browsing to use BrowseTreeProvider + compat conversion. |
| modules/services/repositories/src/test/java/au/com/shiftyjelly/pocketcasts/repositories/playback/BrowseTreeProviderTest.kt | New tests for root selection and recent/up-next/suggested children behavior. |
| modules/services/repositories/src/test/java/au/com/shiftyjelly/pocketcasts/repositories/playback/auto/MediaItemCompatConverterTest.kt | New tests for Media3→compat conversion basics. |
...ies/src/main/java/au/com/shiftyjelly/pocketcasts/repositories/playback/BrowseTreeProvider.kt
Show resolved
Hide resolved
...n/java/au/com/shiftyjelly/pocketcasts/repositories/playback/auto/MediaItemCompatConverter.kt
Show resolved
Hide resolved
...ies/src/main/java/au/com/shiftyjelly/pocketcasts/repositories/playback/BrowseTreeProvider.kt
Show resolved
Hide resolved
c4375a8 to
9d63c2a
Compare
3ef0f55 to
952392b
Compare
952392b to
d19918c
Compare
automotive/src/main/java/au/com/shiftyjelly/pocketcasts/AutoPlaybackService.kt
Show resolved
Hide resolved
d19918c to
fc7b947
Compare
This test references methods (loadSuggestedChildren, loadRecentChildren) and fields (upNextQueue, podcastManager, episodeManager, playlistManager) that were extracted from PlaybackService into BrowseTreeProvider. The same functionality is now covered by BrowseTreeProviderTest. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Description
This is the 3rd step of the media3 migration.
Its extracts content browsing logic to
BrowseTreeProviderso it can be reused later. This PR mostly impacts automotive platform.Testing Instructions
Test if the app is still functional on automotive
Checklist
./gradlew spotlessApplyto automatically apply formatting/linting)modules/services/localization/src/main/res/values/strings.xml