am 51ff1c93: am f9122232: am a78601dc: Merge "Ensure metadata bundles are unparceled before making them available" into lmp-dev

* commit '51ff1c937d6fe5f994f701260bc69c8b1dae3fe9':
  Ensure metadata bundles are unparceled before making them available
This commit is contained in:
RoboErik
2014-10-09 17:04:55 +00:00
committed by Android Git Automerger

View File

@@ -625,12 +625,12 @@ public class MediaSessionRecord implements IBinder.DeathRecipient {
private PlaybackState getStateWithUpdatedPosition() {
PlaybackState state;
long duration = -1;
synchronized (mLock) {
state = mPlaybackState;
}
long duration = -1;
if (mMetadata != null && mMetadata.containsKey(MediaMetadata.METADATA_KEY_DURATION)) {
duration = mMetadata.getLong(MediaMetadata.METADATA_KEY_DURATION);
if (mMetadata != null && mMetadata.containsKey(MediaMetadata.METADATA_KEY_DURATION)) {
duration = mMetadata.getLong(MediaMetadata.METADATA_KEY_DURATION);
}
}
PlaybackState result = null;
if (state != null) {
@@ -725,10 +725,14 @@ public class MediaSessionRecord implements IBinder.DeathRecipient {
@Override
public void setMetadata(MediaMetadata metadata) {
// Make a copy of the metadata as the underlying bundle may be
// modified on this thread.
synchronized (mLock) {
mMetadata = metadata == null ? null : new MediaMetadata.Builder(metadata).build();
MediaMetadata temp = metadata == null ? null : new MediaMetadata.Builder(metadata)
.build();
// This is to guarantee that the underlying bundle is unparceled
// before we set it to prevent concurrent reads from throwing an
// exception
temp.size();
mMetadata = temp;
}
mHandler.post(MessageHandler.MSG_UPDATE_METADATA);
}