Chromium Code Reviews| Index: chrome/android/java_staging/src/org/chromium/chrome/browser/tab/ChromeTab.java |
| diff --git a/chrome/android/java_staging/src/org/chromium/chrome/browser/tab/ChromeTab.java b/chrome/android/java_staging/src/org/chromium/chrome/browser/tab/ChromeTab.java |
| index 6dfc91faf32ececb5d716fed66408a0f5b97dc10..60acf36e0078b6b48c17e2e638bcccfd7c1e6470 100644 |
| --- a/chrome/android/java_staging/src/org/chromium/chrome/browser/tab/ChromeTab.java |
| +++ b/chrome/android/java_staging/src/org/chromium/chrome/browser/tab/ChromeTab.java |
| @@ -37,6 +37,7 @@ import org.chromium.chrome.browser.TabState; |
| import org.chromium.chrome.browser.TabUma; |
| import org.chromium.chrome.browser.TabUma.TabCreationState; |
| import org.chromium.chrome.browser.UrlConstants; |
| +import org.chromium.chrome.browser.UrlUtilities; |
| import org.chromium.chrome.browser.contextmenu.ChromeContextMenuPopulator; |
| import org.chromium.chrome.browser.contextmenu.ContextMenuParams; |
| import org.chromium.chrome.browser.contextmenu.ContextMenuPopulator; |
| @@ -50,6 +51,9 @@ import org.chromium.chrome.browser.externalnav.ExternalNavigationHandler.Overrid |
| import org.chromium.chrome.browser.externalnav.ExternalNavigationParams; |
| import org.chromium.chrome.browser.fullscreen.FullscreenManager; |
| import org.chromium.chrome.browser.media.MediaNotificationService; |
| +import org.chromium.chrome.browser.media.ui.MediaInfo; |
| +import org.chromium.chrome.browser.media.ui.MediaPlaybackControls; |
| +import org.chromium.chrome.browser.media.ui.NotificationMediaPlaybackControls; |
| import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings; |
| import org.chromium.chrome.browser.ntp.NativePageAssassin; |
| import org.chromium.chrome.browser.ntp.NativePageFactory; |
| @@ -86,6 +90,8 @@ import org.chromium.ui.WindowOpenDisposition; |
| import org.chromium.ui.base.PageTransition; |
| import org.chromium.ui.base.WindowAndroid; |
| +import java.net.URI; |
| +import java.net.URISyntaxException; |
| import java.util.Locale; |
| /** |
| @@ -95,7 +101,7 @@ import java.util.Locale; |
| public class ChromeTab extends Tab { |
| public static final int NTP_TAB_ID = -2; |
| - private static final String TAG = "ChromeTab"; |
| + private static final String TAG = "cr.ChromeTab"; |
| // URL didFailLoad error code. Should match the value in net_error_list.h. |
| public static final int BLOCKED_BY_ADMINISTRATOR = -22; |
| @@ -360,6 +366,29 @@ public class ChromeTab extends Tab { |
| */ |
| public class TabChromeWebContentsDelegateAndroidImpl |
| extends TabChromeWebContentsDelegateAndroid { |
| + private MediaPlaybackControls.Listener mControlsListener = |
| + new MediaPlaybackControls.Listener() { |
| + @Override |
| + public void onPlay() { |
| + TabChromeWebContentsDelegateAndroidImpl |
| + .nativeOnMediaControlsResume(getWebContents()); |
| + NotificationMediaPlaybackControls notificationControls = |
| + NotificationMediaPlaybackControls.getOrCreate(getApplicationContext()); |
| + notificationControls.onPlaybackStateChanged( |
| + MediaInfo.PAUSED, MediaInfo.PLAYING); |
| + } |
| + |
| + @Override |
| + public void onPause() { |
| + TabChromeWebContentsDelegateAndroidImpl |
| + .nativeOnMediaControlsPause(getWebContents()); |
| + NotificationMediaPlaybackControls notificationControls = |
| + NotificationMediaPlaybackControls.getOrCreate(getApplicationContext()); |
| + notificationControls.onPlaybackStateChanged( |
| + MediaInfo.PLAYING, MediaInfo.PAUSED); |
| + } |
| + }; |
| + |
| /** |
| * This method is meant to be overridden by DocumentTab because the |
| * TabModelSelector returned by the activity is not correct. |
| @@ -492,6 +521,32 @@ public class ChromeTab extends Tab { |
| handleMediaKey(event); |
| } |
| + @Override |
| + public void showMediaControls(boolean isPaused) { |
| + NotificationMediaPlaybackControls notificationControls = |
| + NotificationMediaPlaybackControls.getOrCreate(getApplicationContext()); |
| + notificationControls.addListener(mControlsListener); |
| + String originForDisplay = getUrl(); |
|
mlamouri (slow - plz ping)
2015/06/18 16:43:22
That means that we show the origin of the top fram
mlamouri (slow - plz ping)
2015/06/22 14:34:17
You didn't address that, did you? Maybe we should
whywhat
2015/06/23 19:39:10
It would be confusing for the user to see "youtube
|
| + try { |
| + originForDisplay = UrlUtilities.getOriginForDisplay(new URI(getUrl()), true); |
| + } catch (URISyntaxException e) { |
| + Log.e(TAG, "Wrong syntax for the tab URL when playing media. Showing the URL."); |
| + } |
| + notificationControls.show(new MediaInfo( |
| + getTitle(), |
| + isPaused ? MediaInfo.PAUSED : MediaInfo.PLAYING, |
| + originForDisplay, |
| + getId())); |
| + } |
| + |
| + @Override |
| + public void hideMediaControls() { |
| + NotificationMediaPlaybackControls notificationControls = |
| + NotificationMediaPlaybackControls.getOrCreate(getApplicationContext()); |
| + notificationControls.hide(getId()); |
| + notificationControls.removeListener(mControlsListener); |
| + } |
| + |
| /** |
| * Redispatches unhandled media keys. This allows bluetooth headphones with play/pause or |
| * other buttons to function correctly. |
| @@ -543,7 +598,6 @@ public class ChromeTab extends Tab { |
| private boolean hasAudibleAudio() { |
| return !isClosing() && super.nativeHasAudibleAudio(getWebContents()); |
| } |
| - |
| } |
| /** |
| @@ -888,6 +942,9 @@ public class ChromeTab extends Tab { |
| public void destroy() { |
| MediaNotificationService.updateMediaNotificationForTab( |
| getApplicationContext(), getId(), false, false, false, getUrl()); |
| + NotificationMediaPlaybackControls notificationControls = |
| + NotificationMediaPlaybackControls.getOrCreate(getApplicationContext()); |
| + notificationControls.hide(getId()); |
| super.destroy(); |
| } |
| }; |