| Index: chrome/android/java/src/org/chromium/chrome/browser/tab/ChromeTab.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/ChromeTab.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/ChromeTab.java
|
| index 93777eeda077b15c2d6bbd6c9d4d78e2fcaa4d71..2f16256664d7295a75c8b84dd72d2d70ce310f57 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/ChromeTab.java
|
| +++ b/chrome/android/java/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.MediaPlaybackListener;
|
| +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;
|
| @@ -359,6 +365,21 @@ public class ChromeTab extends Tab {
|
| */
|
| public class TabChromeWebContentsDelegateAndroidImpl
|
| extends TabChromeWebContentsDelegateAndroid {
|
| + private MediaPlaybackListener mControlsListener =
|
| + new MediaPlaybackListener() {
|
| + @Override
|
| + public void onPlay() {
|
| + TabChromeWebContentsDelegateAndroidImpl
|
| + .nativeOnMediaControlsResume(getWebContents());
|
| + }
|
| +
|
| + @Override
|
| + public void onPause() {
|
| + TabChromeWebContentsDelegateAndroidImpl
|
| + .nativeOnMediaControlsPause(getWebContents());
|
| + }
|
| + };
|
| +
|
| /**
|
| * This method is meant to be overridden by DocumentTab because the
|
| * TabModelSelector returned by the activity is not correct.
|
| @@ -491,6 +512,22 @@ public class ChromeTab extends Tab {
|
| handleMediaKey(event);
|
| }
|
|
|
| + @Override
|
| + public void updateMediaControls(boolean isControllable, boolean isPaused) {
|
| + if (!isControllable) {
|
| + NotificationMediaPlaybackControls.hide(getId());
|
| + return;
|
| + }
|
| + 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.");
|
| + }
|
| + NotificationMediaPlaybackControls.show(getApplicationContext(), new MediaInfo(
|
| + getTitle(), isPaused, origin, getId(), mControlsListener));
|
| + }
|
| +
|
| /**
|
| * Redispatches unhandled media keys. This allows bluetooth headphones with play/pause or
|
| * other buttons to function correctly.
|
| @@ -892,6 +929,7 @@ public class ChromeTab extends Tab {
|
| public void destroy() {
|
| MediaNotificationService.updateMediaNotificationForTab(
|
| getApplicationContext(), getId(), false, false, false, getUrl());
|
| + NotificationMediaPlaybackControls.hide(getId());
|
| super.destroy();
|
| }
|
| };
|
| @@ -1101,7 +1139,7 @@ public class ChromeTab extends Tab {
|
| * Checks if spdy proxy is enabled for input url.
|
| * @param url Input url to check for spdy setting.
|
| * @return true if url is enabled for spdy proxy.
|
| - */
|
| + */
|
| protected boolean isSpdyProxyEnabledForUrl(String url) {
|
| if (DataReductionProxySettings.getInstance().isDataReductionProxyEnabled()
|
| && url != null && !url.toLowerCase(Locale.US).startsWith("https://")
|
|
|