Loading android/app/src/com/android/bluetooth/audio_util/helpers/Metadata.java +18 −10 Original line number Diff line number Diff line Loading @@ -38,6 +38,16 @@ public class Metadata implements Cloneable { public String duration; public Image image; // Media ID is an implementation detail and doesn't need to be localized public static final String EMPTY_MEDIA_ID = "Not Provided"; public static final String EMPTY_TITLE = "Not Provided"; public static final String EMPTY_ARTIST = ""; public static final String EMPTY_ALBUM = ""; public static final String EMPTY_TRACK_NUM = "1"; public static final String EMPTY_NUM_TRACKS = "1"; public static final String EMPTY_GENRE = ""; public static final String EMPTY_DURATION = "0"; @Override public Metadata clone() { Metadata data = new Metadata(); Loading Loading @@ -282,21 +292,19 @@ public class Metadata implements Cloneable { */ public Builder useDefaults() { if (mMetadata.mediaId == null) { mMetadata.mediaId = mContext != null ? mContext.getString(R.string.not_provided) : "Not Provided"; mMetadata.mediaId = EMPTY_MEDIA_ID; } if (mMetadata.title == null) { mMetadata.title = mContext != null ? mContext.getString(R.string.not_provided) : "Not Provided"; } if (mMetadata.artist == null) mMetadata.artist = ""; if (mMetadata.album == null) mMetadata.album = ""; if (mMetadata.trackNum == null) mMetadata.trackNum = "1"; if (mMetadata.numTracks == null) mMetadata.numTracks = "1"; if (mMetadata.genre == null) mMetadata.genre = ""; if (mMetadata.duration == null) mMetadata.duration = "0"; : EMPTY_TITLE; } if (mMetadata.artist == null) mMetadata.artist = EMPTY_ARTIST; if (mMetadata.album == null) mMetadata.album = EMPTY_ALBUM; if (mMetadata.trackNum == null) mMetadata.trackNum = EMPTY_TRACK_NUM; if (mMetadata.numTracks == null) mMetadata.numTracks = EMPTY_NUM_TRACKS; if (mMetadata.genre == null) mMetadata.genre = EMPTY_GENRE; if (mMetadata.duration == null) mMetadata.duration = EMPTY_DURATION; // The default value chosen for an image is null. Update here if we pick something else return this; } Loading android/app/src/com/android/bluetooth/audio_util/helpers/Util.java +3 −1 Original line number Diff line number Diff line Loading @@ -50,7 +50,9 @@ class Util { */ public static final boolean isEmptyData(Metadata data) { if (data == null) return true; return (empty_data().equals(data) && data.mediaId.equals("Not Provided")); // Note: We need both equals() and an explicit media id check because equals() does // not check for the media ID. return (empty_data().equals(data) && data.mediaId.equals(Metadata.EMPTY_MEDIA_ID)); } /** Loading android/app/tests/unit/src/com/android/bluetooth/audio_util/MetadataTest.java +18 −27 Original line number Diff line number Diff line Loading @@ -73,15 +73,6 @@ public class MetadataTest { .appendQueryParameter("handle", IMAGE_HANDLE_1) .build(); private static final String IMAGE_STRING_1 = IMAGE_URI_1.toString(); private static final String DEFAULT_MEDIA_ID = "Not Provided"; private static final String DEFAULT_TITLE = "Not Provided"; private static final String DEFAULT_ARTIST = ""; private static final String DEFAULT_ALBUM = ""; private static final String DEFAULT_TRACK_NUM = "1"; private static final String DEFAULT_NUM_TRACKS = "1"; private static final String DEFAULT_GENRE = ""; private static final String DEFAULT_DURATION = "0"; private static final Image DEFAULT_IMAGE = null; private static final String SONG_MEDIA_ID = "abc123"; Loading Loading @@ -791,9 +782,9 @@ public class MetadataTest { @Test public void testBuildMetadataUseDefaults() { Metadata metadata = new Metadata.Builder().useDefaults().build(); assertMetadata(DEFAULT_MEDIA_ID, DEFAULT_TITLE, DEFAULT_ARTIST, DEFAULT_ALBUM, DEFAULT_TRACK_NUM, DEFAULT_NUM_TRACKS, DEFAULT_GENRE, DEFAULT_DURATION, DEFAULT_IMAGE, metadata); assertMetadata(Metadata.EMPTY_MEDIA_ID, Metadata.EMPTY_TITLE, Metadata.EMPTY_ARTIST, Metadata.EMPTY_ALBUM, Metadata.EMPTY_TRACK_NUM, Metadata.EMPTY_NUM_TRACKS, Metadata.EMPTY_GENRE, Metadata.EMPTY_DURATION, DEFAULT_IMAGE, metadata); } /** Loading @@ -808,8 +799,8 @@ public class MetadataTest { .fromMediaDescription(description) .build(); assertMetadata(SONG_MEDIA_ID, SONG_TITLE, SONG_ARTIST, SONG_ALBUM, DEFAULT_TRACK_NUM, DEFAULT_NUM_TRACKS, DEFAULT_GENRE, DEFAULT_DURATION, DEFAULT_IMAGE, metadata); Metadata.EMPTY_TRACK_NUM, Metadata.EMPTY_NUM_TRACKS, Metadata.EMPTY_GENRE, Metadata.EMPTY_DURATION, DEFAULT_IMAGE, metadata); } /** Loading Loading @@ -837,9 +828,9 @@ public class MetadataTest { bundle.putString(MediaMetadata.METADATA_KEY_GENRE, SONG_GENRE); bundle.putParcelable(MediaMetadata.METADATA_KEY_ART, mTestBitmap); Metadata metadata = new Metadata.Builder().useDefaults().fromBundle(bundle).build(); assertMetadata(DEFAULT_MEDIA_ID, SONG_TITLE, DEFAULT_ARTIST, DEFAULT_ALBUM, DEFAULT_TRACK_NUM, SONG_NUM_TRACKS, SONG_GENRE, DEFAULT_DURATION, mSongImage, metadata); assertMetadata(Metadata.EMPTY_MEDIA_ID, SONG_TITLE, Metadata.EMPTY_ARTIST, Metadata.EMPTY_ALBUM, Metadata.EMPTY_TRACK_NUM, SONG_NUM_TRACKS, SONG_GENRE, Metadata.EMPTY_DURATION, mSongImage, metadata); } /** Loading @@ -857,12 +848,12 @@ public class MetadataTest { bundle.putParcelable(MediaMetadata.METADATA_KEY_ART, mTestBitmap); Metadata metadata = new Metadata.Builder().fromBundle(bundle).useDefaults().build(); Metadata metadata2 = new Metadata.Builder().useDefaults().fromBundle(bundle).build(); assertMetadata(DEFAULT_MEDIA_ID, SONG_TITLE, DEFAULT_ARTIST, DEFAULT_ALBUM, DEFAULT_TRACK_NUM, SONG_NUM_TRACKS, SONG_GENRE, DEFAULT_DURATION, mSongImage, metadata); assertMetadata(DEFAULT_MEDIA_ID, SONG_TITLE, DEFAULT_ARTIST, DEFAULT_ALBUM, DEFAULT_TRACK_NUM, SONG_NUM_TRACKS, SONG_GENRE, DEFAULT_DURATION, mSongImage, metadata2); assertMetadata(Metadata.EMPTY_MEDIA_ID, SONG_TITLE, Metadata.EMPTY_ARTIST, Metadata.EMPTY_ALBUM, Metadata.EMPTY_TRACK_NUM, SONG_NUM_TRACKS, SONG_GENRE, Metadata.EMPTY_DURATION, mSongImage, metadata); assertMetadata(Metadata.EMPTY_MEDIA_ID, SONG_TITLE, Metadata.EMPTY_ARTIST, Metadata.EMPTY_ALBUM, Metadata.EMPTY_TRACK_NUM, SONG_NUM_TRACKS, SONG_GENRE, Metadata.EMPTY_DURATION, mSongImage, metadata2); } /** Loading Loading @@ -908,7 +899,7 @@ public class MetadataTest { getMediaMetadataWithBitmap(MediaMetadata.METADATA_KEY_ART, mTestBitmap); Metadata metadata = new Metadata.Builder().fromMediaMetadata(m).build(); Metadata metadata2 = metadata.clone(); metadata2.artist = DEFAULT_ARTIST; metadata2.artist = Metadata.EMPTY_ARTIST; assertThat(metadata).isNotEqualTo(metadata2); } Loading @@ -921,7 +912,7 @@ public class MetadataTest { getMediaMetadataWithBitmap(MediaMetadata.METADATA_KEY_ART, mTestBitmap); Metadata metadata = new Metadata.Builder().fromMediaMetadata(m).build(); Metadata metadata2 = metadata.clone(); metadata2.album = DEFAULT_ALBUM; metadata2.album = Metadata.EMPTY_ALBUM; assertThat(metadata).isNotEqualTo(metadata2); } Loading @@ -934,7 +925,7 @@ public class MetadataTest { getMediaMetadataWithBitmap(MediaMetadata.METADATA_KEY_ART, mTestBitmap); Metadata metadata = new Metadata.Builder().fromMediaMetadata(m).build(); Metadata metadata2 = metadata.clone(); metadata2.trackNum = DEFAULT_TRACK_NUM; metadata2.trackNum = Metadata.EMPTY_TRACK_NUM; assertThat(metadata).isNotEqualTo(metadata2); } Loading @@ -947,7 +938,7 @@ public class MetadataTest { getMediaMetadataWithBitmap(MediaMetadata.METADATA_KEY_ART, mTestBitmap); Metadata metadata = new Metadata.Builder().fromMediaMetadata(m).build(); Metadata metadata2 = metadata.clone(); metadata2.numTracks = DEFAULT_NUM_TRACKS; metadata2.numTracks = Metadata.EMPTY_NUM_TRACKS; assertThat(metadata).isNotEqualTo(metadata2); } Loading Loading
android/app/src/com/android/bluetooth/audio_util/helpers/Metadata.java +18 −10 Original line number Diff line number Diff line Loading @@ -38,6 +38,16 @@ public class Metadata implements Cloneable { public String duration; public Image image; // Media ID is an implementation detail and doesn't need to be localized public static final String EMPTY_MEDIA_ID = "Not Provided"; public static final String EMPTY_TITLE = "Not Provided"; public static final String EMPTY_ARTIST = ""; public static final String EMPTY_ALBUM = ""; public static final String EMPTY_TRACK_NUM = "1"; public static final String EMPTY_NUM_TRACKS = "1"; public static final String EMPTY_GENRE = ""; public static final String EMPTY_DURATION = "0"; @Override public Metadata clone() { Metadata data = new Metadata(); Loading Loading @@ -282,21 +292,19 @@ public class Metadata implements Cloneable { */ public Builder useDefaults() { if (mMetadata.mediaId == null) { mMetadata.mediaId = mContext != null ? mContext.getString(R.string.not_provided) : "Not Provided"; mMetadata.mediaId = EMPTY_MEDIA_ID; } if (mMetadata.title == null) { mMetadata.title = mContext != null ? mContext.getString(R.string.not_provided) : "Not Provided"; } if (mMetadata.artist == null) mMetadata.artist = ""; if (mMetadata.album == null) mMetadata.album = ""; if (mMetadata.trackNum == null) mMetadata.trackNum = "1"; if (mMetadata.numTracks == null) mMetadata.numTracks = "1"; if (mMetadata.genre == null) mMetadata.genre = ""; if (mMetadata.duration == null) mMetadata.duration = "0"; : EMPTY_TITLE; } if (mMetadata.artist == null) mMetadata.artist = EMPTY_ARTIST; if (mMetadata.album == null) mMetadata.album = EMPTY_ALBUM; if (mMetadata.trackNum == null) mMetadata.trackNum = EMPTY_TRACK_NUM; if (mMetadata.numTracks == null) mMetadata.numTracks = EMPTY_NUM_TRACKS; if (mMetadata.genre == null) mMetadata.genre = EMPTY_GENRE; if (mMetadata.duration == null) mMetadata.duration = EMPTY_DURATION; // The default value chosen for an image is null. Update here if we pick something else return this; } Loading
android/app/src/com/android/bluetooth/audio_util/helpers/Util.java +3 −1 Original line number Diff line number Diff line Loading @@ -50,7 +50,9 @@ class Util { */ public static final boolean isEmptyData(Metadata data) { if (data == null) return true; return (empty_data().equals(data) && data.mediaId.equals("Not Provided")); // Note: We need both equals() and an explicit media id check because equals() does // not check for the media ID. return (empty_data().equals(data) && data.mediaId.equals(Metadata.EMPTY_MEDIA_ID)); } /** Loading
android/app/tests/unit/src/com/android/bluetooth/audio_util/MetadataTest.java +18 −27 Original line number Diff line number Diff line Loading @@ -73,15 +73,6 @@ public class MetadataTest { .appendQueryParameter("handle", IMAGE_HANDLE_1) .build(); private static final String IMAGE_STRING_1 = IMAGE_URI_1.toString(); private static final String DEFAULT_MEDIA_ID = "Not Provided"; private static final String DEFAULT_TITLE = "Not Provided"; private static final String DEFAULT_ARTIST = ""; private static final String DEFAULT_ALBUM = ""; private static final String DEFAULT_TRACK_NUM = "1"; private static final String DEFAULT_NUM_TRACKS = "1"; private static final String DEFAULT_GENRE = ""; private static final String DEFAULT_DURATION = "0"; private static final Image DEFAULT_IMAGE = null; private static final String SONG_MEDIA_ID = "abc123"; Loading Loading @@ -791,9 +782,9 @@ public class MetadataTest { @Test public void testBuildMetadataUseDefaults() { Metadata metadata = new Metadata.Builder().useDefaults().build(); assertMetadata(DEFAULT_MEDIA_ID, DEFAULT_TITLE, DEFAULT_ARTIST, DEFAULT_ALBUM, DEFAULT_TRACK_NUM, DEFAULT_NUM_TRACKS, DEFAULT_GENRE, DEFAULT_DURATION, DEFAULT_IMAGE, metadata); assertMetadata(Metadata.EMPTY_MEDIA_ID, Metadata.EMPTY_TITLE, Metadata.EMPTY_ARTIST, Metadata.EMPTY_ALBUM, Metadata.EMPTY_TRACK_NUM, Metadata.EMPTY_NUM_TRACKS, Metadata.EMPTY_GENRE, Metadata.EMPTY_DURATION, DEFAULT_IMAGE, metadata); } /** Loading @@ -808,8 +799,8 @@ public class MetadataTest { .fromMediaDescription(description) .build(); assertMetadata(SONG_MEDIA_ID, SONG_TITLE, SONG_ARTIST, SONG_ALBUM, DEFAULT_TRACK_NUM, DEFAULT_NUM_TRACKS, DEFAULT_GENRE, DEFAULT_DURATION, DEFAULT_IMAGE, metadata); Metadata.EMPTY_TRACK_NUM, Metadata.EMPTY_NUM_TRACKS, Metadata.EMPTY_GENRE, Metadata.EMPTY_DURATION, DEFAULT_IMAGE, metadata); } /** Loading Loading @@ -837,9 +828,9 @@ public class MetadataTest { bundle.putString(MediaMetadata.METADATA_KEY_GENRE, SONG_GENRE); bundle.putParcelable(MediaMetadata.METADATA_KEY_ART, mTestBitmap); Metadata metadata = new Metadata.Builder().useDefaults().fromBundle(bundle).build(); assertMetadata(DEFAULT_MEDIA_ID, SONG_TITLE, DEFAULT_ARTIST, DEFAULT_ALBUM, DEFAULT_TRACK_NUM, SONG_NUM_TRACKS, SONG_GENRE, DEFAULT_DURATION, mSongImage, metadata); assertMetadata(Metadata.EMPTY_MEDIA_ID, SONG_TITLE, Metadata.EMPTY_ARTIST, Metadata.EMPTY_ALBUM, Metadata.EMPTY_TRACK_NUM, SONG_NUM_TRACKS, SONG_GENRE, Metadata.EMPTY_DURATION, mSongImage, metadata); } /** Loading @@ -857,12 +848,12 @@ public class MetadataTest { bundle.putParcelable(MediaMetadata.METADATA_KEY_ART, mTestBitmap); Metadata metadata = new Metadata.Builder().fromBundle(bundle).useDefaults().build(); Metadata metadata2 = new Metadata.Builder().useDefaults().fromBundle(bundle).build(); assertMetadata(DEFAULT_MEDIA_ID, SONG_TITLE, DEFAULT_ARTIST, DEFAULT_ALBUM, DEFAULT_TRACK_NUM, SONG_NUM_TRACKS, SONG_GENRE, DEFAULT_DURATION, mSongImage, metadata); assertMetadata(DEFAULT_MEDIA_ID, SONG_TITLE, DEFAULT_ARTIST, DEFAULT_ALBUM, DEFAULT_TRACK_NUM, SONG_NUM_TRACKS, SONG_GENRE, DEFAULT_DURATION, mSongImage, metadata2); assertMetadata(Metadata.EMPTY_MEDIA_ID, SONG_TITLE, Metadata.EMPTY_ARTIST, Metadata.EMPTY_ALBUM, Metadata.EMPTY_TRACK_NUM, SONG_NUM_TRACKS, SONG_GENRE, Metadata.EMPTY_DURATION, mSongImage, metadata); assertMetadata(Metadata.EMPTY_MEDIA_ID, SONG_TITLE, Metadata.EMPTY_ARTIST, Metadata.EMPTY_ALBUM, Metadata.EMPTY_TRACK_NUM, SONG_NUM_TRACKS, SONG_GENRE, Metadata.EMPTY_DURATION, mSongImage, metadata2); } /** Loading Loading @@ -908,7 +899,7 @@ public class MetadataTest { getMediaMetadataWithBitmap(MediaMetadata.METADATA_KEY_ART, mTestBitmap); Metadata metadata = new Metadata.Builder().fromMediaMetadata(m).build(); Metadata metadata2 = metadata.clone(); metadata2.artist = DEFAULT_ARTIST; metadata2.artist = Metadata.EMPTY_ARTIST; assertThat(metadata).isNotEqualTo(metadata2); } Loading @@ -921,7 +912,7 @@ public class MetadataTest { getMediaMetadataWithBitmap(MediaMetadata.METADATA_KEY_ART, mTestBitmap); Metadata metadata = new Metadata.Builder().fromMediaMetadata(m).build(); Metadata metadata2 = metadata.clone(); metadata2.album = DEFAULT_ALBUM; metadata2.album = Metadata.EMPTY_ALBUM; assertThat(metadata).isNotEqualTo(metadata2); } Loading @@ -934,7 +925,7 @@ public class MetadataTest { getMediaMetadataWithBitmap(MediaMetadata.METADATA_KEY_ART, mTestBitmap); Metadata metadata = new Metadata.Builder().fromMediaMetadata(m).build(); Metadata metadata2 = metadata.clone(); metadata2.trackNum = DEFAULT_TRACK_NUM; metadata2.trackNum = Metadata.EMPTY_TRACK_NUM; assertThat(metadata).isNotEqualTo(metadata2); } Loading @@ -947,7 +938,7 @@ public class MetadataTest { getMediaMetadataWithBitmap(MediaMetadata.METADATA_KEY_ART, mTestBitmap); Metadata metadata = new Metadata.Builder().fromMediaMetadata(m).build(); Metadata metadata2 = metadata.clone(); metadata2.numTracks = DEFAULT_NUM_TRACKS; metadata2.numTracks = Metadata.EMPTY_NUM_TRACKS; assertThat(metadata).isNotEqualTo(metadata2); } Loading