Index: chrome/android/java/src/org/chromium/chrome/browser/media/router/ChromeMediaRouter.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/media/router/ChromeMediaRouter.java b/chrome/android/java/src/org/chromium/chrome/browser/media/router/ChromeMediaRouter.java |
index 6c71da45feef9b2ba22c822926f41b07415c9bb1..4f4c198b11afe0cbc6088eb0c246e4fce31f5f16 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/media/router/ChromeMediaRouter.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/media/router/ChromeMediaRouter.java |
@@ -4,7 +4,9 @@ |
package org.chromium.chrome.browser.media.router; |
+import android.app.ActivityManager; |
import android.content.Context; |
+import android.os.Build; |
import org.chromium.base.VisibleForTesting; |
import org.chromium.base.annotations.CalledByNative; |
@@ -27,6 +29,7 @@ public class ChromeMediaRouter implements MediaRouteManager { |
private static final String TAG = "cr.MediaRouter"; |
private final long mNativeMediaRouterAndroid; |
+ private final Context mApplicationContext; |
private final List<MediaRouteProvider> mRouteProviders = new ArrayList<MediaRouteProvider>(); |
private final Map<String, MediaRouteProvider> mSinkIdsToProviders = |
new HashMap<String, MediaRouteProvider>(); |
@@ -109,14 +112,26 @@ public class ChromeMediaRouter implements MediaRouteManager { |
/** |
* Starts background monitoring for available media sinks compatible with the given |
- * |sourceUrn| |
+ * |sourceUrn| if the device is in a state that allows it. |
* @param sourceId a URL to use for filtering of the available media sinks |
+ * @return whether the monitoring started (ie. was allowed). |
*/ |
@CalledByNative |
- public void startObservingMediaSinks(String sourceId) { |
+ public boolean startObservingMediaSinks(String sourceId) { |
+ // Do not allow observing on Low-Ram devices. |
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { |
whywhat
2015/09/29 12:29:22
Please, use org.chromium.base.SysUtils.isLowEndDev
mlamouri (slow - plz ping)
2015/09/29 14:44:52
Ok. It does simplify a few things.
|
+ ActivityManager activityManager = (ActivityManager) |
+ mApplicationContext.getSystemService(Context.ACTIVITY_SERVICE); |
+ if (activityManager.isLowRamDevice()) { |
+ return false; |
+ } |
+ } |
+ |
for (MediaRouteProvider provider : mRouteProviders) { |
provider.startObservingMediaSinks(sourceId); |
} |
+ |
+ return true; |
} |
/** |
@@ -211,6 +226,7 @@ public class ChromeMediaRouter implements MediaRouteManager { |
MediaRouteProvider provider = CastMediaRouteProvider.create(applicationContext, this); |
if (provider != null) mRouteProviders.add(provider); |
+ mApplicationContext = applicationContext; |
mNativeMediaRouterAndroid = nativeMediaRouter; |
} |
@@ -246,4 +262,4 @@ public class ChromeMediaRouter implements MediaRouteManager { |
native void nativeOnMessageSentResult( |
long nativeMediaRouterAndroid, boolean success, int callbackId); |
native void nativeOnMessage(long nativeMediaRouterAndroid, String mediaRouteId, String message); |
-} |
+} |