Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(306)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/tab/ChromeTab.java

Issue 1159113006: [Android] A prototype of the interactive media notification. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased the change Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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://")

Powered by Google App Engine
This is Rietveld 408576698