398 lines
19 KiB
Diff
398 lines
19 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 | 11 --
|
|
components/background_task_scheduler/BUILD.gn | 1 -
|
|
.../internal/BUILD.gn | 3 -
|
|
.../BackgroundTaskGcmTaskService.java | 160 ------------------
|
|
...ackgroundTaskSchedulerFactoryInternal.java | 6 +-
|
|
...kgroundTaskSchedulerGcmNetworkManager.java | 60 -------
|
|
.../gms/ChromiumPlayServicesAvailability.java | 10 +-
|
|
7 files changed, 3 insertions(+), 248 deletions(-)
|
|
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
|
|
@@ -283,7 +283,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",
|
|
@@ -995,7 +994,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",
|
|
@@ -1950,7 +1948,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",
|
|
@@ -2089,8 +2086,6 @@ android_library("base_monochrome_module_java") {
|
|
# enable_chrome_module is true and //chrome code is in a DFM.
|
|
android_library("base_module_java") {
|
|
sources = [
|
|
- "java/src/com/google/ipc/invalidation/ticl/android2/channel/GcmRegistrationTaskService.java",
|
|
- "java/src/org/chromium/chrome/browser/ChromeBackgroundService.java",
|
|
"java/src/org/chromium/chrome/browser/ChromeBackupAgent.java",
|
|
"java/src/org/chromium/chrome/browser/base/MainDexApplicationImpl.java",
|
|
"java/src/org/chromium/chrome/browser/base/SplitChromeApplication.java",
|
|
@@ -2098,8 +2093,6 @@ android_library("base_module_java") {
|
|
"java/src/org/chromium/chrome/browser/base/SplitCompatApplication.java",
|
|
"java/src/org/chromium/chrome/browser/base/SplitCompatBackupAgent.java",
|
|
"java/src/org/chromium/chrome/browser/base/SplitCompatCustomTabsService.java",
|
|
- "java/src/org/chromium/chrome/browser/base/SplitCompatGcmListenerService.java",
|
|
- "java/src/org/chromium/chrome/browser/base/SplitCompatGcmTaskService.java",
|
|
"java/src/org/chromium/chrome/browser/base/SplitCompatIntentService.java",
|
|
"java/src/org/chromium/chrome/browser/base/SplitCompatJobService.java",
|
|
"java/src/org/chromium/chrome/browser/base/SplitCompatMinidumpUploadJobService.java",
|
|
@@ -2121,14 +2114,10 @@ android_library("base_module_java") {
|
|
"java/src/org/chromium/chrome/browser/omaha/OmahaClient.java",
|
|
"java/src/org/chromium/chrome/browser/photo_picker/DecoderService.java",
|
|
"java/src/org/chromium/chrome/browser/prerender/ChromePrerenderService.java",
|
|
- "java/src/org/chromium/chrome/browser/services/gcm/ChromeGcmListenerService.java",
|
|
- "java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundService.java",
|
|
- "java/src/org/chromium/chrome/browser/services/gcm/InvalidationGcmUpstreamSender.java",
|
|
"java/src/org/chromium/chrome/browser/tracing/TracingNotificationService.java",
|
|
]
|
|
deps = [
|
|
":chrome_base_module_resources",
|
|
- "$google_play_services_package:google_play_services_gcm_java",
|
|
"//base:base_java",
|
|
"//components/embedder_support/android:application_java",
|
|
"//components/media_router/browser/android:cast_options_provider_java",
|
|
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",
|
|
@@ -100,7 +98,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,60 +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 com.google.android.gms.gcm.GcmNetworkManager;
|
|
-import com.google.android.gms.gcm.OneoffTask;
|
|
-import com.google.android.gms.gcm.PeriodicTask;
|
|
-import com.google.android.gms.gcm.Task;
|
|
-import com.google.android.gms.gcm.TaskParams;
|
|
-
|
|
-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 org.chromium.gms.ChromiumPlayServicesAvailability;
|
|
-
|
|
-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) {
|
|
- }
|
|
-
|
|
- private static String taskIdToTaskTag(int taskId) {
|
|
- return Integer.toString(taskId);
|
|
- }
|
|
-}
|
|
diff --git a/third_party/android_deps/util/org/chromium/gms/ChromiumPlayServicesAvailability.java b/third_party/android_deps/util/org/chromium/gms/ChromiumPlayServicesAvailability.java
|
|
--- a/third_party/android_deps/util/org/chromium/gms/ChromiumPlayServicesAvailability.java
|
|
+++ b/third_party/android_deps/util/org/chromium/gms/ChromiumPlayServicesAvailability.java
|
|
@@ -5,9 +5,6 @@ package org.chromium.gms;
|
|
|
|
import android.content.Context;
|
|
|
|
-import com.google.android.gms.common.ConnectionResult;
|
|
-import com.google.android.gms.common.GoogleApiAvailability;
|
|
-
|
|
public final class ChromiumPlayServicesAvailability {
|
|
/**
|
|
* The minimum GMS version we're requesting. isGooglePlayServicesAvailable will fail if the
|
|
@@ -30,8 +27,7 @@ public final class ChromiumPlayServicesAvailability {
|
|
* PM/UX.
|
|
*/
|
|
public static int getGooglePlayServicesConnectionResult(final Context context) {
|
|
- return GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(
|
|
- context, GMS_VERSION_NUMBER);
|
|
+ return 16; // API_UNAVAILABLE
|
|
}
|
|
|
|
/**
|
|
@@ -44,8 +40,6 @@ public final class ChromiumPlayServicesAvailability {
|
|
* PM/UX.
|
|
*/
|
|
public static boolean isGooglePlayServicesAvailable(final Context context) {
|
|
- return GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(
|
|
- context, GMS_VERSION_NUMBER)
|
|
- == ConnectionResult.SUCCESS;
|
|
+ return false;
|
|
}
|
|
}
|
|
--
|
|
2.17.1
|
|
|