Index: components/background_task_scheduler/android/junit/src/org/chromium/components/background_task_scheduler/ShadowGcmNetworkManager.java |
diff --git a/components/background_task_scheduler/android/junit/src/org/chromium/components/background_task_scheduler/ShadowGcmNetworkManager.java b/components/background_task_scheduler/android/junit/src/org/chromium/components/background_task_scheduler/ShadowGcmNetworkManager.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..1bb216c67622851ebad9ee91f8204646cb00c11d |
--- /dev/null |
+++ b/components/background_task_scheduler/android/junit/src/org/chromium/components/background_task_scheduler/ShadowGcmNetworkManager.java |
@@ -0,0 +1,50 @@ |
+// Copyright 2017 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+package org.chromium.components.background_task_scheduler; |
+ |
+import com.google.android.gms.gcm.GcmNetworkManager; |
+import com.google.android.gms.gcm.GcmTaskService; |
+import com.google.android.gms.gcm.Task; |
+ |
+import org.robolectric.annotation.Implementation; |
+import org.robolectric.annotation.Implements; |
+ |
+/** |
+ * Custom shadow for the OS's GcmNetworkManager. We use this to hook the call to GcmNetworkManager |
+ * to make sure it was invoked as we expect. |
+ */ |
+@Implements(GcmNetworkManager.class) |
+public class ShadowGcmNetworkManager { |
+ private Task mTask; |
+ private Task mCanceledTask; |
+ |
+ @Implementation |
+ public void schedule(Task task) { |
+ mTask = task; |
+ mCanceledTask = null; |
+ } |
+ |
+ @Implementation |
+ public void cancelTask(String tag, Class<? extends GcmTaskService> gcmTaskService) { |
+ if (mTask != null && mTask.getTag().equals(tag) |
+ && mTask.getServiceName().equals(gcmTaskService.getName())) { |
+ mCanceledTask = mTask; |
+ mTask = null; |
+ } |
+ } |
+ |
+ public Task getScheduledTask() { |
+ return mTask; |
+ } |
+ |
+ public Task getCanceledTask() { |
+ return mCanceledTask; |
+ } |
+ |
+ public void clear() { |
+ mTask = null; |
+ mCanceledTask = null; |
+ } |
+} |