Files
cromite/build/patches/Remove-dependency-on-com.google.android.gms.gcm.patch
T
2020-11-14 17:58:46 +01:00

569 lines
26 KiB
Diff

From: Wengling Chen <feiyu2817@gmail.com>
Date: Sat, 2 Nov 2019 07:56:44 +0100
Subject: Remove dependency on com.google.android.gms.gcm
It also disalbes Snippets, auto-update of offline pages and launching browser from background service.
The snippets are already disabled in native codes, this will disable it on Java level.
---
chrome/android/BUILD.gn | 3 -
.../browser/ChromeBackgroundService.java | 4 -
.../gcm/ChromeGcmListenerService.java | 220 ------------------
components/background_task_scheduler/BUILD.gn | 1 -
.../internal/BUILD.gn | 3 -
.../BackgroundTaskGcmTaskService.java | 160 -------------
...ackgroundTaskSchedulerFactoryInternal.java | 6 +-
...kgroundTaskSchedulerGcmNetworkManager.java | 55 -----
8 files changed, 1 insertion(+), 451 deletions(-)
delete mode 100644 chrome/android/java/src/org/chromium/chrome/browser/services/gcm/ChromeGcmListenerService.java
delete mode 100644 components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskGcmTaskService.java
delete mode 100644 components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerGcmNetworkManager.java
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
--- a/chrome/android/BUILD.gn
+++ b/chrome/android/BUILD.gn
@@ -287,7 +287,6 @@ android_library("chrome_java") {
"$google_play_services_package:google_play_services_cast_framework_java",
"$google_play_services_package:google_play_services_cast_java",
"$google_play_services_package:google_play_services_fido_java",
- "$google_play_services_package:google_play_services_gcm_java",
"$google_play_services_package:google_play_services_iid_java",
"$google_play_services_package:google_play_services_tasks_java",
"//base:base_java",
@@ -966,7 +965,6 @@ android_library("chrome_test_java") {
"$google_play_services_package:google_play_services_cast_framework_java",
"$google_play_services_package:google_play_services_cast_java",
"$google_play_services_package:google_play_services_fido_java",
- "$google_play_services_package:google_play_services_gcm_java",
"$google_play_services_package:google_play_services_iid_java",
"$google_play_services_package:google_play_services_tasks_java",
"//base:base_java",
@@ -1915,7 +1913,6 @@ android_library("browser_java_test_support") {
]
deps = [
":chrome_java",
- "$google_play_services_package:google_play_services_gcm_java",
"//base:base_java",
"//base:base_java_test_support",
"//chrome/browser/profiles/android:java",
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java
@@ -8,10 +8,6 @@ import android.content.Context;
import androidx.annotation.VisibleForTesting;
-import com.google.android.gms.gcm.GcmNetworkManager;
-import com.google.android.gms.gcm.GcmTaskService;
-import com.google.android.gms.gcm.TaskParams;
-
import org.chromium.base.Log;
import org.chromium.base.task.PostTask;
import org.chromium.chrome.browser.background_sync.BackgroundSyncBackgroundTaskScheduler;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/ChromeGcmListenerService.java b/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/ChromeGcmListenerService.java
deleted file mode 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/ChromeGcmListenerService.java
+++ /dev/null
@@ -1,220 +0,0 @@
-// Copyright 2015 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.chrome.browser.services.gcm;
-
-import android.content.Context;
-import android.content.Intent;
-import android.os.Build;
-import android.os.Bundle;
-import android.text.TextUtils;
-
-import com.google.android.gms.gcm.GcmListenerService;
-
-import org.chromium.base.ContextUtils;
-import org.chromium.base.Log;
-import org.chromium.base.ThreadUtils;
-import org.chromium.base.task.PostTask;
-import org.chromium.chrome.browser.device.DeviceConditions;
-import org.chromium.chrome.browser.init.ChromeBrowserInitializer;
-import org.chromium.chrome.browser.init.ProcessInitializationHandler;
-import org.chromium.components.background_task_scheduler.BackgroundTaskSchedulerFactory;
-import org.chromium.components.background_task_scheduler.TaskIds;
-import org.chromium.components.background_task_scheduler.TaskInfo;
-import org.chromium.components.gcm_driver.GCMDriver;
-import org.chromium.components.gcm_driver.GCMMessage;
-import org.chromium.components.gcm_driver.InstanceIDFlags;
-import org.chromium.components.gcm_driver.LazySubscriptionsManager;
-import org.chromium.components.gcm_driver.SubscriptionFlagManager;
-import org.chromium.content_public.browser.UiThreadTaskTraits;
-
-/**
- * Receives Downstream messages and status of upstream messages from GCM.
- */
-public class ChromeGcmListenerService extends GcmListenerService {
- private static final String TAG = "ChromeGcmListener";
-
- @Override
- public void onCreate() {
- ProcessInitializationHandler.getInstance().initializePreNative();
- super.onCreate();
- }
-
- @Override
- public void onMessageReceived(final String from, final Bundle data) {
- boolean hasCollapseKey = !TextUtils.isEmpty(data.getString("collapse_key"));
- GcmUma.recordDataMessageReceived(ContextUtils.getApplicationContext(), hasCollapseKey);
-
- // Dispatch the message to the GCM Driver for native features.
- PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> {
- GCMMessage message = null;
- try {
- message = new GCMMessage(from, data);
- } catch (IllegalArgumentException e) {
- Log.e(TAG, "Received an invalid GCM Message", e);
- return;
- }
-
- scheduleOrDispatchMessageToDriver(message);
- });
- }
-
- @Override
- public void onMessageSent(String msgId) {
- Log.d(TAG, "Message sent successfully. Message id: " + msgId);
- GcmUma.recordGcmUpstreamHistogram(
- ContextUtils.getApplicationContext(), GcmUma.UMA_UPSTREAM_SUCCESS);
- }
-
- @Override
- public void onSendError(String msgId, String error) {
- Log.w(TAG, "Error in sending message. Message id: " + msgId + " Error: " + error);
- GcmUma.recordGcmUpstreamHistogram(
- ContextUtils.getApplicationContext(), GcmUma.UMA_UPSTREAM_SEND_FAILED);
- }
-
- @Override
- public void onDeletedMessages() {
- // TODO(johnme): Ask GCM to include the subtype in this event.
- Log.w(TAG, "Push messages were deleted, but we can't tell the Service Worker as we don't"
- + "know what subtype (app ID) it occurred for.");
- GcmUma.recordDeletedMessages(ContextUtils.getApplicationContext());
- }
-
- /**
- * Returns if we deliver the GCMMessage with a background service by calling
- * Context#startService. This will only work if Android has put us in a whitelist to allow
- * background services to be started.
- */
- private static boolean maybeBypassScheduler(GCMMessage message) {
- // Android only puts us on a whitelist for high priority messages.
- if (message.getOriginalPriority() != GCMMessage.Priority.HIGH) {
- return false;
- }
-
- final String subscriptionId = SubscriptionFlagManager.buildSubscriptionUniqueId(
- message.getAppId(), message.getSenderId());
- if (!SubscriptionFlagManager.hasFlags(subscriptionId, InstanceIDFlags.BYPASS_SCHEDULER)) {
- return false;
- }
-
- try {
- Context context = ContextUtils.getApplicationContext();
- Intent intent = new Intent(context, GCMBackgroundService.class);
- intent.putExtras(message.toBundle());
- context.startService(intent);
- return true;
- } catch (IllegalStateException e) {
- // Failed to start service, maybe we're not whitelisted? Fallback to using
- // BackgroundTaskScheduler to start Chrome.
- // TODO(knollr): Add metrics for this.
- Log.e(TAG, "Could not start background service", e);
- return false;
- }
- }
-
- /**
- * Returns if the |message| is sent from a lazy subscription and we persist it to be delivered
- * the next time Chrome is launched into foreground.
- */
- private static boolean maybePersistLazyMessage(GCMMessage message) {
- if (isFullBrowserLoaded()) {
- return false;
- }
-
- final String subscriptionId = LazySubscriptionsManager.buildSubscriptionUniqueId(
- message.getAppId(), message.getSenderId());
-
- boolean isSubscriptionLazy = LazySubscriptionsManager.isSubscriptionLazy(subscriptionId);
- boolean isHighPriority = message.getOriginalPriority() == GCMMessage.Priority.HIGH;
- // TODO(crbug.com/945402): Add metrics for the new high priority message logic.
- boolean shouldPersistMessage = isSubscriptionLazy && !isHighPriority;
- if (shouldPersistMessage) {
- LazySubscriptionsManager.persistMessage(subscriptionId, message);
- }
-
- return shouldPersistMessage;
- }
-
- /**
- * Schedules a background task via Job Scheduler to deliver the |message|. Delivery might get
- * delayed by Android if the device is currently in doze mode.
- */
- private static void scheduleBackgroundTask(GCMMessage message) {
- // TODO(peter): Add UMA for measuring latency introduced by the BackgroundTaskScheduler.
- TaskInfo backgroundTask =
- TaskInfo.createOneOffTask(TaskIds.GCM_BACKGROUND_TASK_JOB_ID, 0 /* immediately */)
- .setExtras(message.toBundle())
- .build();
- BackgroundTaskSchedulerFactory.getScheduler().schedule(
- ContextUtils.getApplicationContext(), backgroundTask);
- }
-
- private static void recordWebPushMetrics(GCMMessage message) {
- Context context = ContextUtils.getApplicationContext();
- boolean inIdleMode = DeviceConditions.isCurrentlyInIdleMode(context);
- boolean isHighPriority = message.getOriginalPriority() == GCMMessage.Priority.HIGH;
-
- @GcmUma.WebPushDeviceState
- int state;
- if (inIdleMode) {
- state = isHighPriority ? GcmUma.WebPushDeviceState.IDLE_HIGH_PRIORITY
- : GcmUma.WebPushDeviceState.IDLE_NOT_HIGH_PRIORITY;
- } else {
- state = isHighPriority ? GcmUma.WebPushDeviceState.NOT_IDLE_HIGH_PRIORITY
- : GcmUma.WebPushDeviceState.NOT_IDLE_NOT_HIGH_PRIORITY;
- }
- GcmUma.recordWebPushReceivedDeviceState(state);
- }
-
- /**
- * If Chrome is backgrounded, messages coming from lazy subscriptions are
- * persisted on disk and replayed next time Chrome is forgrounded. If Chrome is forgrounded or
- * if the message isn't coming from a lazy subscription, this method either schedules |message|
- * to be dispatched through the Job Scheduler, which we use on Android N and beyond, or
- * immediately dispatches the message on other versions of Android. Some subscriptions bypass
- * the Job Scheduler and use Context#startService instead if the |message| has a high priority.
- * Must be called on the UI thread both for the BackgroundTaskScheduler and for dispatching the
- * |message| to the GCMDriver.
- */
- static void scheduleOrDispatchMessageToDriver(GCMMessage message) {
- ThreadUtils.assertOnUiThread();
-
- // GCMMessage#getAppId never returns null.
- if (message.getAppId().startsWith("wp:")) {
- recordWebPushMetrics(message);
- }
-
- // Check if we should only persist the message for now.
- if (maybePersistLazyMessage(message)) {
- return;
- }
-
- // Dispatch message immediately on pre N versions of Android.
- if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
- dispatchMessageToDriver(message);
- return;
- }
-
- // Check if we should bypass the scheduler for high priority messages.
- if (!maybeBypassScheduler(message)) {
- scheduleBackgroundTask(message);
- }
- }
-
- /**
- * To be called when a GCM message is ready to be dispatched. Will initialise the native code
- * of the browser process, and forward the message to the GCM Driver. Must be called on the UI
- * thread.
- */
- static void dispatchMessageToDriver(GCMMessage message) {
- ThreadUtils.assertOnUiThread();
- ChromeBrowserInitializer.getInstance().handleSynchronousStartup();
- GCMDriver.dispatchMessage(message);
- }
-
- private static boolean isFullBrowserLoaded() {
- return ChromeBrowserInitializer.getInstance().isFullBrowserInitialized();
- }
-}
diff --git a/components/background_task_scheduler/BUILD.gn b/components/background_task_scheduler/BUILD.gn
--- a/components/background_task_scheduler/BUILD.gn
+++ b/components/background_task_scheduler/BUILD.gn
@@ -123,7 +123,6 @@ if (is_android) {
"$google_play_services_package:google_play_services_auth_base_java",
"$google_play_services_package:google_play_services_base_java",
"$google_play_services_package:google_play_services_basement_java",
- "$google_play_services_package:google_play_services_gcm_java",
"$google_play_services_package:google_play_services_tasks_java",
"internal:internal_java",
"internal:proto_java",
diff --git a/components/background_task_scheduler/internal/BUILD.gn b/components/background_task_scheduler/internal/BUILD.gn
--- a/components/background_task_scheduler/internal/BUILD.gn
+++ b/components/background_task_scheduler/internal/BUILD.gn
@@ -11,7 +11,6 @@ if (is_android) {
android_library("internal_java") {
sources = [
"android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskBroadcastReceiver.java",
- "android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskGcmTaskService.java",
"android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskJobService.java",
"android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerAlarmManager.java",
"android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerDelegate.java",
@@ -28,7 +27,6 @@ if (is_android) {
":proto_java",
"$google_play_services_package:google_play_services_base_java",
"$google_play_services_package:google_play_services_basement_java",
- "$google_play_services_package:google_play_services_gcm_java",
"$google_play_services_package:google_play_services_tasks_java",
"//base:base_java",
"//components/background_task_scheduler:background_task_scheduler_task_ids_java",
@@ -99,7 +97,6 @@ if (is_android) {
":internal_java",
"$google_play_services_package:google_play_services_base_java",
"$google_play_services_package:google_play_services_basement_java",
- "$google_play_services_package:google_play_services_gcm_java",
"$google_play_services_package:google_play_services_tasks_java",
"//base:base_java",
"//base:base_java_test_support",
diff --git a/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskGcmTaskService.java b/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskGcmTaskService.java
deleted file mode 100644
--- a/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskGcmTaskService.java
+++ /dev/null
@@ -1,160 +0,0 @@
-// 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.internal;
-
-import android.os.Build;
-
-import androidx.annotation.VisibleForTesting;
-
-import com.google.android.gms.gcm.GcmNetworkManager;
-import com.google.android.gms.gcm.GcmTaskService;
-import com.google.android.gms.gcm.TaskParams;
-
-import org.chromium.base.ContextUtils;
-import org.chromium.base.Log;
-import org.chromium.base.ThreadUtils;
-import org.chromium.components.background_task_scheduler.BackgroundTask;
-import org.chromium.components.background_task_scheduler.TaskParameters;
-
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-/** Delegates calls out to various tasks that need to run in the background. */
-public class BackgroundTaskGcmTaskService extends GcmTaskService {
- private static final String TAG = "BkgrdTaskGcmTS";
-
- private BackgroundTaskSchedulerGcmNetworkManager.Clock mClock = System::currentTimeMillis;
-
- @VisibleForTesting
- void setClockForTesting(BackgroundTaskSchedulerGcmNetworkManager.Clock clock) {
- mClock = clock;
- }
-
- /** Class that waits for the processing to be done. */
- private static class Waiter {
- // Wakelock is only held for 3 minutes by default for GcmTaskService.
- private static final long MAX_TIMEOUT_SECONDS = 179;
- private final CountDownLatch mLatch;
- private long mWaiterTimeoutSeconds;
- private boolean mIsRescheduleNeeded;
- private boolean mHasTaskTimedOut;
-
- public Waiter(long waiterTimeoutSeconds) {
- mLatch = new CountDownLatch(1);
- mWaiterTimeoutSeconds = Math.min(waiterTimeoutSeconds, MAX_TIMEOUT_SECONDS);
- }
-
- /** Start waiting for the processing to finish. */
- public void startWaiting() {
- try {
- mHasTaskTimedOut = !mLatch.await(mWaiterTimeoutSeconds, TimeUnit.SECONDS);
- } catch (InterruptedException e) {
- Log.d(TAG, "Waiter interrupted while waiting.");
- }
- }
-
- /** Called to finish waiting. */
- public void onWaitDone(boolean needsRescheduling) {
- mIsRescheduleNeeded = needsRescheduling;
- mLatch.countDown();
- }
-
- /** @return Whether last task timed out. */
- public boolean hasTaskTimedOut() {
- return mHasTaskTimedOut;
- }
-
- /** @return Whether task needs to be rescheduled. */
- public boolean isRescheduleNeeded() {
- return mIsRescheduleNeeded;
- }
- }
-
- private static class TaskFinishedCallbackGcmTaskService
- implements BackgroundTask.TaskFinishedCallback {
- private final Waiter mWaiter;
-
- public TaskFinishedCallbackGcmTaskService(Waiter waiter) {
- mWaiter = waiter;
- }
-
- @Override
- public void taskFinished(final boolean needsReschedule) {
- ThreadUtils.runOnUiThreadBlocking(new Runnable() {
- @Override
- public void run() {
- mWaiter.onWaitDone(needsReschedule);
- }
- });
- }
- }
-
- @Override
- public int onRunTask(TaskParams params) {
- final TaskParameters taskParams =
- BackgroundTaskSchedulerGcmNetworkManager.getTaskParametersFromTaskParams(params);
-
- final BackgroundTask backgroundTask =
- BackgroundTaskSchedulerFactoryInternal.getBackgroundTaskFromTaskId(
- taskParams.getTaskId());
- if (backgroundTask == null) {
- Log.w(TAG, "Failed to start task. Could not instantiate BackgroundTask class.");
- // Cancel task if the BackgroundTask class is not found anymore. We assume this means
- // that the task has been deprecated.
- BackgroundTaskSchedulerFactoryInternal.getScheduler().cancel(
- ContextUtils.getApplicationContext(), taskParams.getTaskId());
- return GcmNetworkManager.RESULT_FAILURE;
- }
-
- if (BackgroundTaskSchedulerGcmNetworkManager.didTaskExpire(
- params, mClock.currentTimeMillis())) {
- BackgroundTaskSchedulerUma.getInstance().reportTaskExpired(taskParams.getTaskId());
- return GcmNetworkManager.RESULT_FAILURE;
- }
-
- final Waiter waiter = new Waiter(Waiter.MAX_TIMEOUT_SECONDS);
-
- final AtomicBoolean taskNeedsBackgroundProcessing = new AtomicBoolean();
- ThreadUtils.runOnUiThreadBlocking(new Runnable() {
- @Override
- public void run() {
- BackgroundTaskSchedulerUma.getInstance().reportTaskStarted(taskParams.getTaskId());
- taskNeedsBackgroundProcessing.set(
- backgroundTask.onStartTask(ContextUtils.getApplicationContext(), taskParams,
- new TaskFinishedCallbackGcmTaskService(waiter)));
- }
- });
-
- if (!taskNeedsBackgroundProcessing.get()) return GcmNetworkManager.RESULT_SUCCESS;
-
- waiter.startWaiting();
-
- if (waiter.isRescheduleNeeded()) return GcmNetworkManager.RESULT_RESCHEDULE;
- if (!waiter.hasTaskTimedOut()) return GcmNetworkManager.RESULT_SUCCESS;
-
- final AtomicBoolean taskNeedsRescheduling = new AtomicBoolean();
- ThreadUtils.runOnUiThreadBlocking(new Runnable() {
- @Override
- public void run() {
- BackgroundTaskSchedulerUma.getInstance().reportTaskStopped(taskParams.getTaskId());
- taskNeedsRescheduling.set(backgroundTask.onStopTask(
- ContextUtils.getApplicationContext(), taskParams));
- }
- });
-
- if (taskNeedsRescheduling.get()) return GcmNetworkManager.RESULT_RESCHEDULE;
-
- return GcmNetworkManager.RESULT_SUCCESS;
- }
-
- @Override
- public void onInitializeTasks() {
- // Ignore the event on OSs supporting JobScheduler.
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) return;
- BackgroundTaskSchedulerFactoryInternal.getScheduler().reschedule(
- ContextUtils.getApplicationContext());
- }
-}
diff --git a/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerFactoryInternal.java b/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerFactoryInternal.java
--- a/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerFactoryInternal.java
+++ b/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerFactoryInternal.java
@@ -21,11 +21,7 @@ public final class BackgroundTaskSchedulerFactoryInternal {
private static BackgroundTaskFactory sBackgroundTaskFactory;
static BackgroundTaskSchedulerDelegate getSchedulerDelegateForSdk(int sdkInt) {
- if (sdkInt >= Build.VERSION_CODES.M) {
- return new BackgroundTaskSchedulerJobService();
- } else {
- return new BackgroundTaskSchedulerGcmNetworkManager();
- }
+ return new BackgroundTaskSchedulerJobService();
}
/**
diff --git a/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerGcmNetworkManager.java b/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerGcmNetworkManager.java
deleted file mode 100644
--- a/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerGcmNetworkManager.java
+++ /dev/null
@@ -1,55 +0,0 @@
-// 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.internal;
-
-import android.content.Context;
-import android.os.Bundle;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.VisibleForTesting;
-
-import org.chromium.base.Log;
-import org.chromium.base.ThreadUtils;
-import org.chromium.components.background_task_scheduler.TaskInfo;
-import org.chromium.components.background_task_scheduler.TaskParameters;
-
-import java.util.concurrent.TimeUnit;
-
-/**
- * An implementation of {@link BackgroundTaskSchedulerDelegate} that uses the Play Services
- * {@link GcmNetworkManager} to schedule jobs.
- */
-class BackgroundTaskSchedulerGcmNetworkManager implements BackgroundTaskSchedulerDelegate {
- private static final String TAG = "BkgrdTaskSchedGcmNM";
-
- /** Delta time for expiration checks, after the end time. */
- static final long DEADLINE_DELTA_MS = 1000;
-
- /** Clock to use so we can mock time in tests. */
- public interface Clock { long currentTimeMillis(); }
-
- private static Clock sClock = System::currentTimeMillis;
-
- @VisibleForTesting
- static void setClockForTesting(Clock clock) {
- sClock = clock;
- }
-
- @Override
- public boolean schedule(Context context, @NonNull TaskInfo taskInfo) {
- ThreadUtils.assertOnUiThread();
-
- return false;
- }
-
- @Override
- public void cancel(Context context, int taskId) {
- ThreadUtils.assertOnUiThread();
- }
-
- private static String taskIdToTaskTag(int taskId) {
- return Integer.toString(taskId);
- }
-}
--
2.17.1