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://") |