From a9135e2eff51a40c4892c12a729044a08f07dbf0 Mon Sep 17 00:00:00 2001 From: tofunmi Date: Wed, 11 Jan 2023 14:36:02 +0000 Subject: [PATCH] Move BitmapLoader to common. The migration strategy is to deprecate `androidx.media3.session.BitmapLoader` and copy the file into common since BitmapLoader is a public interface that apps could be relying on. PiperOrigin-RevId: 501266521 --- .../media3/common/util}/BitmapLoader.java | 6 +-- .../androidx/media3/effect/BitmapOverlay.java | 1 + .../media3/effect/SimpleBitmapLoader.java | 1 + .../androidx/media3/session/BitmapLoader.java | 40 +++---------------- .../media3/session/CacheBitmapLoader.java | 1 + .../androidx/media3/session/MediaBrowser.java | 1 + .../session/MediaBrowserImplLegacy.java | 1 + .../media3/session/MediaController.java | 1 + .../session/MediaControllerImplLegacy.java | 1 + .../media3/session/MediaLibraryService.java | 1 + .../session/MediaLibrarySessionImpl.java | 1 + .../androidx/media3/session/MediaSession.java | 1 + .../media3/session/MediaSessionImpl.java | 1 + .../media3/session/SimpleBitmapLoader.java | 1 + .../DefaultMediaNotificationProviderTest.java | 1 + ...aSessionCompatCallbackAggregationTest.java | 1 + ...aControllerWithMediaSessionCompatTest.java | 1 + .../media3/session/MediaUtilsTest.java | 1 + 18 files changed, 22 insertions(+), 40 deletions(-) rename libraries/{effect/src/main/java/androidx/media3/effect => common/src/main/java/androidx/media3/common/util}/BitmapLoader.java (90%) diff --git a/libraries/effect/src/main/java/androidx/media3/effect/BitmapLoader.java b/libraries/common/src/main/java/androidx/media3/common/util/BitmapLoader.java similarity index 90% rename from libraries/effect/src/main/java/androidx/media3/effect/BitmapLoader.java rename to libraries/common/src/main/java/androidx/media3/common/util/BitmapLoader.java index 834fad536e..44b7cadb28 100644 --- a/libraries/effect/src/main/java/androidx/media3/effect/BitmapLoader.java +++ b/libraries/common/src/main/java/androidx/media3/common/util/BitmapLoader.java @@ -13,18 +13,14 @@ * See the License for the specific language governing permissions and * limitations under the License */ -package androidx.media3.effect; +package androidx.media3.common.util; import android.graphics.Bitmap; import android.net.Uri; import androidx.annotation.Nullable; import androidx.media3.common.MediaMetadata; -import androidx.media3.common.util.UnstableApi; import com.google.common.util.concurrent.ListenableFuture; -// TODO(b/258685047): delete this copy once session/BitmapLoader.java is moved to common -// (b/194284041, b/258658893). - /** Loads images. */ @UnstableApi public interface BitmapLoader { diff --git a/libraries/effect/src/main/java/androidx/media3/effect/BitmapOverlay.java b/libraries/effect/src/main/java/androidx/media3/effect/BitmapOverlay.java index bf0025b311..0066d05a2d 100644 --- a/libraries/effect/src/main/java/androidx/media3/effect/BitmapOverlay.java +++ b/libraries/effect/src/main/java/androidx/media3/effect/BitmapOverlay.java @@ -22,6 +22,7 @@ import android.net.Uri; import android.opengl.GLES20; import android.opengl.GLUtils; import androidx.media3.common.FrameProcessingException; +import androidx.media3.common.util.BitmapLoader; import androidx.media3.common.util.GlUtil; import androidx.media3.common.util.Size; import androidx.media3.common.util.UnstableApi; diff --git a/libraries/effect/src/main/java/androidx/media3/effect/SimpleBitmapLoader.java b/libraries/effect/src/main/java/androidx/media3/effect/SimpleBitmapLoader.java index 257b78c20b..ca89666cfd 100644 --- a/libraries/effect/src/main/java/androidx/media3/effect/SimpleBitmapLoader.java +++ b/libraries/effect/src/main/java/androidx/media3/effect/SimpleBitmapLoader.java @@ -22,6 +22,7 @@ import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.Uri; import androidx.annotation.Nullable; +import androidx.media3.common.util.BitmapLoader; import androidx.media3.common.util.UnstableApi; import com.google.common.base.Supplier; import com.google.common.base.Suppliers; diff --git a/libraries/session/src/main/java/androidx/media3/session/BitmapLoader.java b/libraries/session/src/main/java/androidx/media3/session/BitmapLoader.java index d0142c1df1..1aad3d72a0 100644 --- a/libraries/session/src/main/java/androidx/media3/session/BitmapLoader.java +++ b/libraries/session/src/main/java/androidx/media3/session/BitmapLoader.java @@ -15,41 +15,11 @@ */ package androidx.media3.session; -import android.graphics.Bitmap; -import android.net.Uri; -import androidx.annotation.Nullable; -import androidx.media3.common.MediaMetadata; import androidx.media3.common.util.UnstableApi; -import com.google.common.util.concurrent.ListenableFuture; -/** Loads images. */ +/** + * @deprecated Use {@link androidx.media3.common.util.BitmapLoader} instead. + */ +@Deprecated @UnstableApi -public interface BitmapLoader { - /** Decodes an image from compressed binary data. */ - ListenableFuture decodeBitmap(byte[] data); - - /** Loads an image from {@code uri}. */ - ListenableFuture loadBitmap(Uri uri); - - /** - * Loads an image from {@link MediaMetadata}. Returns null if {@code metadata} doesn't contain - * bitmap information. - * - *

By default, the method will try to decode an image from {@link MediaMetadata#artworkData} if - * it is present. Otherwise, the method will try to load an image from {@link - * MediaMetadata#artworkUri} if it is present. The method will return null if neither {@link - * MediaMetadata#artworkData} nor {@link MediaMetadata#artworkUri} is present. - */ - @Nullable - default ListenableFuture loadBitmapFromMetadata(MediaMetadata metadata) { - @Nullable ListenableFuture future; - if (metadata.artworkData != null) { - future = decodeBitmap(metadata.artworkData); - } else if (metadata.artworkUri != null) { - future = loadBitmap(metadata.artworkUri); - } else { - future = null; - } - return future; - } -} +public interface BitmapLoader extends androidx.media3.common.util.BitmapLoader {} diff --git a/libraries/session/src/main/java/androidx/media3/session/CacheBitmapLoader.java b/libraries/session/src/main/java/androidx/media3/session/CacheBitmapLoader.java index 5c99bd1256..4fc3f5717f 100644 --- a/libraries/session/src/main/java/androidx/media3/session/CacheBitmapLoader.java +++ b/libraries/session/src/main/java/androidx/media3/session/CacheBitmapLoader.java @@ -20,6 +20,7 @@ import static androidx.media3.common.util.Assertions.checkStateNotNull; import android.graphics.Bitmap; import android.net.Uri; import androidx.annotation.Nullable; +import androidx.media3.common.util.BitmapLoader; import androidx.media3.common.util.UnstableApi; import com.google.common.util.concurrent.ListenableFuture; import java.util.Arrays; diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaBrowser.java b/libraries/session/src/main/java/androidx/media3/session/MediaBrowser.java index ffe84bb11e..8bdacfbcee 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaBrowser.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaBrowser.java @@ -31,6 +31,7 @@ import androidx.annotation.IntRange; import androidx.annotation.Nullable; import androidx.media3.common.MediaItem; import androidx.media3.common.Player; +import androidx.media3.common.util.BitmapLoader; import androidx.media3.common.util.Consumer; import androidx.media3.common.util.UnstableApi; import androidx.media3.common.util.Util; diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaBrowserImplLegacy.java b/libraries/session/src/main/java/androidx/media3/session/MediaBrowserImplLegacy.java index 8b3fb24eef..1c3243a7d1 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaBrowserImplLegacy.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaBrowserImplLegacy.java @@ -30,6 +30,7 @@ import android.text.TextUtils; import androidx.annotation.Nullable; import androidx.media3.common.MediaItem; import androidx.media3.common.MediaMetadata; +import androidx.media3.common.util.BitmapLoader; import androidx.media3.common.util.Log; import androidx.media3.session.MediaLibraryService.LibraryParams; import com.google.common.collect.ImmutableList; diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaController.java b/libraries/session/src/main/java/androidx/media3/session/MediaController.java index e9855421d6..a6a1401ae1 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaController.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaController.java @@ -52,6 +52,7 @@ import androidx.media3.common.TrackSelectionParameters; import androidx.media3.common.Tracks; import androidx.media3.common.VideoSize; import androidx.media3.common.text.CueGroup; +import androidx.media3.common.util.BitmapLoader; import androidx.media3.common.util.Consumer; import androidx.media3.common.util.Log; import androidx.media3.common.util.Size; diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaControllerImplLegacy.java b/libraries/session/src/main/java/androidx/media3/session/MediaControllerImplLegacy.java index 489997beb8..b7b52bc16b 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaControllerImplLegacy.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaControllerImplLegacy.java @@ -65,6 +65,7 @@ import androidx.media3.common.TrackSelectionParameters; import androidx.media3.common.Tracks; import androidx.media3.common.VideoSize; import androidx.media3.common.text.CueGroup; +import androidx.media3.common.util.BitmapLoader; import androidx.media3.common.util.Clock; import androidx.media3.common.util.ListenerSet; import androidx.media3.common.util.Log; diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaLibraryService.java b/libraries/session/src/main/java/androidx/media3/session/MediaLibraryService.java index 6a96d47a7d..4fe5be7828 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaLibraryService.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaLibraryService.java @@ -33,6 +33,7 @@ import androidx.media3.common.Bundleable; import androidx.media3.common.MediaItem; import androidx.media3.common.MediaMetadata; import androidx.media3.common.Player; +import androidx.media3.common.util.BitmapLoader; import androidx.media3.common.util.UnstableApi; import androidx.media3.common.util.Util; import androidx.media3.session.MediaSession.ControllerInfo; diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaLibrarySessionImpl.java b/libraries/session/src/main/java/androidx/media3/session/MediaLibrarySessionImpl.java index 2bed390949..e8287f65c0 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaLibrarySessionImpl.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaLibrarySessionImpl.java @@ -34,6 +34,7 @@ import androidx.annotation.Nullable; import androidx.collection.ArrayMap; import androidx.media3.common.MediaItem; import androidx.media3.common.Player; +import androidx.media3.common.util.BitmapLoader; import androidx.media3.common.util.Log; import androidx.media3.session.MediaLibraryService.LibraryParams; import androidx.media3.session.MediaLibraryService.MediaLibrarySession; diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaSession.java b/libraries/session/src/main/java/androidx/media3/session/MediaSession.java index d03f24e0bf..c8a1a80597 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaSession.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaSession.java @@ -54,6 +54,7 @@ import androidx.media3.common.Timeline; import androidx.media3.common.TrackSelectionParameters; import androidx.media3.common.Tracks; import androidx.media3.common.VideoSize; +import androidx.media3.common.util.BitmapLoader; import androidx.media3.common.util.UnstableApi; import androidx.media3.common.util.Util; import androidx.media3.session.MediaLibraryService.LibraryParams; diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaSessionImpl.java b/libraries/session/src/main/java/androidx/media3/session/MediaSessionImpl.java index 4e075c18bd..5782dec04d 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaSessionImpl.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaSessionImpl.java @@ -68,6 +68,7 @@ import androidx.media3.common.TrackSelectionParameters; import androidx.media3.common.Tracks; import androidx.media3.common.VideoSize; import androidx.media3.common.text.CueGroup; +import androidx.media3.common.util.BitmapLoader; import androidx.media3.common.util.Log; import androidx.media3.common.util.Util; import androidx.media3.session.MediaSession.ControllerCb; diff --git a/libraries/session/src/main/java/androidx/media3/session/SimpleBitmapLoader.java b/libraries/session/src/main/java/androidx/media3/session/SimpleBitmapLoader.java index dd7c07b692..5a74e4ae38 100644 --- a/libraries/session/src/main/java/androidx/media3/session/SimpleBitmapLoader.java +++ b/libraries/session/src/main/java/androidx/media3/session/SimpleBitmapLoader.java @@ -22,6 +22,7 @@ import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.Uri; import androidx.annotation.Nullable; +import androidx.media3.common.util.BitmapLoader; import androidx.media3.common.util.UnstableApi; import com.google.common.base.Supplier; import com.google.common.base.Suppliers; diff --git a/libraries/session/src/test/java/androidx/media3/session/DefaultMediaNotificationProviderTest.java b/libraries/session/src/test/java/androidx/media3/session/DefaultMediaNotificationProviderTest.java index fe7616bce3..8b54ccca87 100644 --- a/libraries/session/src/test/java/androidx/media3/session/DefaultMediaNotificationProviderTest.java +++ b/libraries/session/src/test/java/androidx/media3/session/DefaultMediaNotificationProviderTest.java @@ -41,6 +41,7 @@ import androidx.core.app.NotificationCompat; import androidx.media3.common.MediaMetadata; import androidx.media3.common.Player; import androidx.media3.common.Player.Commands; +import androidx.media3.common.util.BitmapLoader; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; import com.google.common.collect.ImmutableList; diff --git a/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaControllerMediaSessionCompatCallbackAggregationTest.java b/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaControllerMediaSessionCompatCallbackAggregationTest.java index 6f5697fc34..3b714a7c00 100644 --- a/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaControllerMediaSessionCompatCallbackAggregationTest.java +++ b/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaControllerMediaSessionCompatCallbackAggregationTest.java @@ -45,6 +45,7 @@ import androidx.media3.common.Player.Events; import androidx.media3.common.Player.PositionInfo; import androidx.media3.common.Timeline; import androidx.media3.common.Timeline.Window; +import androidx.media3.common.util.BitmapLoader; import androidx.media3.common.util.Util; import androidx.media3.test.session.common.HandlerThreadTestRule; import androidx.test.core.app.ApplicationProvider; diff --git a/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaControllerWithMediaSessionCompatTest.java b/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaControllerWithMediaSessionCompatTest.java index e07afb4422..23dcca5164 100644 --- a/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaControllerWithMediaSessionCompatTest.java +++ b/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaControllerWithMediaSessionCompatTest.java @@ -68,6 +68,7 @@ import androidx.media3.common.Player.PositionInfo; import androidx.media3.common.Player.RepeatMode; import androidx.media3.common.Player.State; import androidx.media3.common.Timeline; +import androidx.media3.common.util.BitmapLoader; import androidx.media3.common.util.Util; import androidx.media3.test.session.common.HandlerThreadTestRule; import androidx.media3.test.session.common.MainLooperTestRule; diff --git a/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaUtilsTest.java b/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaUtilsTest.java index 9511124a5b..e7e3b394e8 100644 --- a/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaUtilsTest.java +++ b/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaUtilsTest.java @@ -58,6 +58,7 @@ import androidx.media3.common.ThumbRating; import androidx.media3.common.Timeline; import androidx.media3.common.TrackGroup; import androidx.media3.common.Tracks; +import androidx.media3.common.util.BitmapLoader; import androidx.media3.session.PlayerInfo.BundlingExclusions; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4;