| 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 a811b72477a451f946e3fcc904bfa60c3044b53e..c7a329b1a20cdbdff2518e3a67087c93aac87fcc 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
|
| @@ -35,6 +35,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;
|
| @@ -48,6 +49,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;
|
| @@ -84,6 +88,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;
|
|
|
| /**
|
| @@ -93,7 +99,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;
|
| @@ -358,6 +364,27 @@ 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(false);
|
| + }
|
| +
|
| + @Override
|
| + public void onPause() {
|
| + TabChromeWebContentsDelegateAndroidImpl
|
| + .nativeOnMediaControlsPause(getWebContents());
|
| + NotificationMediaPlaybackControls notificationControls =
|
| + NotificationMediaPlaybackControls.getOrCreate(getApplicationContext());
|
| + notificationControls.onPlaybackStateChanged(true);
|
| + }
|
| + };
|
| +
|
| /**
|
| * This method is meant to be overridden by DocumentTab because the
|
| * TabModelSelector returned by the activity is not correct.
|
| @@ -490,6 +517,28 @@ public class ChromeTab extends Tab {
|
| handleMediaKey(event);
|
| }
|
|
|
| + @Override
|
| + public void showMediaControls(boolean isPaused) {
|
| + NotificationMediaPlaybackControls notificationControls =
|
| + NotificationMediaPlaybackControls.getOrCreate(getApplicationContext());
|
| + notificationControls.addListener(mControlsListener);
|
| + String origin = getUrl();
|
| + try {
|
| + origin = 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, origin, 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.
|
| @@ -541,7 +590,6 @@ public class ChromeTab extends Tab {
|
| private boolean hasAudibleAudio() {
|
| return !isClosing() && super.nativeHasAudibleAudio(getWebContents());
|
| }
|
| -
|
| }
|
|
|
| /**
|
| @@ -886,6 +934,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();
|
| }
|
| };
|
|
|