Index: chrome/android/java/src/org/chromium/chrome/browser/offlinepages/BackgroundScheduler.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/BackgroundScheduler.java b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/BackgroundScheduler.java |
index 28e96617a52b2cf40ab1f2454e20e75a424b0e47..eef945bdcfd64adb46014b0bad1f12e7e34417c4 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/BackgroundScheduler.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/BackgroundScheduler.java |
@@ -7,6 +7,8 @@ package org.chromium.chrome.browser.offlinepages; |
import android.content.Context; |
import android.os.Bundle; |
+import com.google.android.gms.common.ConnectionResult; |
+import com.google.android.gms.common.GoogleApiAvailability; |
import com.google.android.gms.gcm.GcmNetworkManager; |
import com.google.android.gms.gcm.OneoffTask; |
import com.google.android.gms.gcm.Task; |
@@ -45,7 +47,8 @@ public class BackgroundScheduler { |
*/ |
public static void unschedule(Context context) { |
// Get the GCM Network Scheduler. |
- GcmNetworkManager gcmNetworkManager = GcmNetworkManager.getInstance(context); |
+ GcmNetworkManager gcmNetworkManager = getGcmNetworkManager(context); |
+ if (gcmNetworkManager == null) return; |
gcmNetworkManager.cancelTask(OfflinePageUtils.TASK_TAG, ChromeBackgroundService.class); |
} |
@@ -56,7 +59,8 @@ public class BackgroundScheduler { |
private static void schedule(Context context, TriggerConditions triggerConditions, |
long delayStartSecs, boolean overwrite) { |
// Get the GCM Network Scheduler. |
- GcmNetworkManager gcmNetworkManager = GcmNetworkManager.getInstance(context); |
+ GcmNetworkManager gcmNetworkManager = getGcmNetworkManager(context); |
+ if (gcmNetworkManager == null) return; |
Bundle taskExtras = new Bundle(); |
TaskExtrasPacker.packTimeInBundle(taskExtras); |
@@ -77,6 +81,14 @@ public class BackgroundScheduler { |
gcmNetworkManager.schedule(task); |
} |
+ private static GcmNetworkManager getGcmNetworkManager(Context context) { |
+ if (GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(context) |
+ == ConnectionResult.SUCCESS) { |
+ return GcmNetworkManager.getInstance(context); |
+ } |
+ return null; |
+ } |
+ |
/** |
* Get the latest power conditions from the android APIs. |
*/ |