bromite/build/patches/Remove-dependency-on-com.google.android.gms.gcm.patch
2021-01-26 01:12:38 +01:00

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