Chromium Code Reviews| 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); |
| -} |
| +} |