Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/media/ui/MediaSessionTabHelper.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/media/ui/MediaSessionTabHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/media/ui/MediaSessionTabHelper.java |
| index feb704d17d5457251f6fbb8673c90261de2f7cbb..cb2f9c783824a39bd8150bfef8e0beb046923825 100644 |
| --- a/chrome/android/java/src/org/chromium/chrome/browser/media/ui/MediaSessionTabHelper.java |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/media/ui/MediaSessionTabHelper.java |
| @@ -28,6 +28,8 @@ import org.chromium.ui.base.WindowAndroid; |
| import java.net.URI; |
| import java.net.URISyntaxException; |
| +import java.util.HashSet; |
| +import java.util.Set; |
| import javax.annotation.Nullable; |
| @@ -56,6 +58,7 @@ public class MediaSessionTabHelper implements MediaImageCallback { |
| // The currently showing metadata. |
| private MediaMetadata mCurrentMetadata = null; |
| private MediaImageManager mMediaImageManager = null; |
| + private Set<Integer> mMediaSessionActions = new HashSet<Integer>(); |
| @VisibleForTesting |
| @Nullable |
| @@ -87,6 +90,13 @@ public class MediaSessionTabHelper implements MediaImageCallback { |
| if (mMediaSessionObserver != null) mMediaSessionObserver.getMediaSession().stop(); |
| } |
| + |
| + @Override |
| + public void onMediaSessionAction(int action) { |
| + if (mMediaSessionObserver != null) { |
|
whywhat
2016/10/28 16:38:02
can it be null?
Zhiqiang Zhang (Slow)
2016/11/01 14:55:25
Checking mMediaSessionObserver.getMediaSession() n
|
| + mMediaSessionObserver.getMediaSession().didReceiveAction(action); |
| + } |
| + } |
| }; |
| void hideNotification() { |
| @@ -138,7 +148,8 @@ public class MediaSessionTabHelper implements MediaImageCallback { |
| | MediaNotificationInfo.ACTION_SWIPEAWAY) |
| .setContentIntent(contentIntent) |
| .setId(R.id.media_playback_notification) |
| - .setListener(mControlsListener); |
| + .setListener(mControlsListener) |
| + .setMediaSessionActions(mMediaSessionActions); |
| MediaNotificationManager.show(ContextUtils.getApplicationContext(), |
| mNotificationInfoBuilder.build()); |
| @@ -158,6 +169,18 @@ public class MediaSessionTabHelper implements MediaImageCallback { |
| } |
| updateNotificationMetadata(); |
| } |
| + |
| + @Override |
| + public void mediaSessionEnabledAction(int action) { |
| + mMediaSessionActions.add(action); |
| + updateNotificationActions(); |
| + } |
| + |
| + @Override |
| + public void mediaSessionDisabledAction(int action) { |
| + mMediaSessionActions.remove(action); |
| + updateNotificationActions(); |
| + } |
| }; |
| } |
| @@ -181,6 +204,7 @@ public class MediaSessionTabHelper implements MediaImageCallback { |
| MediaSession mediaSession = mMediaSessionObserver.getMediaSession(); |
| if (mediaSession != null) mediaSession.removeObserver(mMediaSessionObserver); |
| mMediaSessionObserver = null; |
| + mMediaSessionActions.clear(); |
| } |
| private final TabObserver mTabObserver = new EmptyTabObserver() { |
| @@ -365,6 +389,14 @@ public class MediaSessionTabHelper implements MediaImageCallback { |
| return new MediaMetadata(title, artist, album); |
| } |
| + private void updateNotificationActions() { |
| + if (mNotificationInfoBuilder == null) return; |
| + |
| + mNotificationInfoBuilder.setMediaSessionActions(mMediaSessionActions); |
| + MediaNotificationManager.show( |
| + ContextUtils.getApplicationContext(), mNotificationInfoBuilder.build()); |
| + } |
| + |
| @Override |
| public void onImageDownloaded(Bitmap image) { |
| mPageMediaImage = image; |