Преглед на файлове

Remove-dependency-on-auth-signin-dynamic-and-tasks.patch

none преди 4 години
родител
ревизия
c3af06bc6f
променени са 1 файла, в които са добавени 343 реда и са изтрити 148 реда
  1. 343 148
      build/patches/Remove-dependency-on-auth-signin-dynamic-and-tasks.patch

+ 343 - 148
build/patches/Remove-dependency-on-auth-signin-dynamic-and-tasks.patch

@@ -3,36 +3,41 @@ Date: Sat, 2 Nov 2019 08:58:19 +0100
 Subject: Remove dependency on auth, signin, dynamic and tasks
 
 ---
- chrome/android/BUILD.gn                       |  8 --
+ chrome/android/BUILD.gn                       | 10 ---
+ .../features/cablev2_authenticator/BUILD.gn   |  2 -
  chrome/android/java/AndroidManifest.xml       |  9 --
  .../org/chromium/chrome/browser/AppHooks.java | 14 +---
  .../browser/PlayServicesVersionInfo.java      | 12 +--
  .../component_updater/UpdateScheduler.java    |  1 -
- .../externalauth/ExternalAuthUtils.java       | 18 +---
- .../UserRecoverableErrorHandler.java          |  7 --
  .../gcore/ChromeGoogleApiClientImpl.java      | 25 +-----
  .../browser/gcore/GoogleApiClientHelper.java  | 82 +------------------
  .../browser/omaha/UpdateStatusProvider.java   | 10 +--
- chrome/test/android/BUILD.gn                  |  2 -
+ chrome/test/android/BUILD.gn                  |  3 -
  components/background_task_scheduler/BUILD.gn |  4 -
- .../internal/BUILD.gn                         |  6 --
+ .../internal/BUILD.gn                         |  7 --
+ components/externalauth/android/BUILD.gn      |  4 -
+ .../externalauth/ExternalAuthUtils.java       | 40 +--------
+ .../UserRecoverableErrorHandler.java          | 22 +----
  .../media_router/BrowserMediaRouter.java      | 18 +---
- .../signin/core/browser/android/BUILD.gn      |  2 -
+ .../signin/core/browser/android/BUILD.gn      |  3 -
  .../signin/GmsAvailabilityException.java      |  4 +-
+ .../signin/SystemAccountManagerDelegate.java  |  1 -
  content/public/android/BUILD.gn               |  3 -
+ .../content/browser/sms/Wrappers.java         |  2 -
  content/test/BUILD.gn                         |  3 -
  device/BUILD.gn                               |  2 -
- remoting/android/client_java_tmpl.gni         |  3 -
- services/BUILD.gn                             |  2 -
- services/device/geolocation/BUILD.gn          |  2 -
- services/shape_detection/BUILD.gn             |  2 -
- third_party/android_deps/BUILD.gn             | 46 -----------
- 24 files changed, 15 insertions(+), 270 deletions(-)
+ remoting/android/client_java_tmpl.gni         |  2 -
+ services/BUILD.gn                             |  3 -
+ services/device/geolocation/BUILD.gn          |  3 -
+ services/shape_detection/BUILD.gn             |  3 -
+ third_party/android_deps/BUILD.gn             | 64 ---------------
+ weblayer/shell/android/BUILD.gn               |  1 -
+ 29 files changed, 15 insertions(+), 342 deletions(-)
 
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -278,9 +278,6 @@ android_library("chrome_java") {
+@@ -275,9 +275,6 @@ android_library("chrome_java") {
      ":partner_location_descriptor_proto_java",
      ":update_proto_java",
      ":usage_stats_proto_java",
@@ -41,8 +46,16 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
 -    "$google_play_services_package:google_play_services_tasks_java",
      "//base:base_java",
      "//base:jni_java",
-     "//chrome/android/features/keyboard_accessory:public_java",
-@@ -765,8 +762,6 @@ junit_binary("chrome_junit_tests") {
+     "//cc:cc_java",
+@@ -504,7 +501,6 @@ android_library("chrome_java") {
+     "//third_party/android_deps:androidx_recyclerview_recyclerview_java",
+     "//third_party/android_deps:androidx_viewpager2_viewpager2_java",
+     "//third_party/android_deps:androidx_viewpager_viewpager_java",
+-    "//third_party/android_deps:chromium_play_services_availability_java",
+     "//third_party/android_deps:com_google_code_findbugs_jsr305_java",
+     "//third_party/android_deps:com_google_guava_listenablefuture_java",
+     "//third_party/android_deps:dagger_java",
+@@ -772,8 +768,6 @@ junit_binary("chrome_junit_tests") {
      ":chrome_app_java_resources",
      ":chrome_java",
      ":partner_location_descriptor_proto_java",
@@ -51,7 +64,15 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "//base:base_java",
      "//base:base_java_test_support",
      "//base:base_junit_test_support",
-@@ -980,9 +975,6 @@ android_library("chrome_test_java") {
+@@ -929,7 +923,6 @@ junit_binary("chrome_junit_tests") {
+     "//third_party/android_deps:androidx_swiperefreshlayout_swiperefreshlayout_java",
+     "//third_party/android_deps:androidx_test_core_java",
+     "//third_party/android_deps:androidx_test_runner_java",
+-    "//third_party/android_deps:chromium_play_services_availability_shadows_java",
+     "//third_party/android_deps:com_google_guava_listenablefuture_java",
+     "//third_party/android_deps:com_googlecode_java_diff_utils_diffutils_java",
+     "//third_party/android_deps:dagger_java",
+@@ -1014,9 +1007,6 @@ android_library("chrome_test_java") {
      ":chrome_app_java_resources",
      ":chrome_test_util_java",
      ":partner_location_descriptor_proto_java",
@@ -61,10 +82,22 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
      "//base:base_java",
      "//base:base_java_test_support",
      "//base:jni_java",
+diff --git a/chrome/android/features/cablev2_authenticator/BUILD.gn b/chrome/android/features/cablev2_authenticator/BUILD.gn
+--- a/chrome/android/features/cablev2_authenticator/BUILD.gn
++++ b/chrome/android/features/cablev2_authenticator/BUILD.gn
+@@ -17,8 +17,6 @@ android_library("java") {
+ 
+   deps = [
+     ":java_resources",
+-    "$google_play_services_package:google_play_services_base_java",
+-    "$google_play_services_package:google_play_services_tasks_java",
+     "//base:base_java",
+     "//base:jni_java",
+     "//content/public/android:content_java",
 diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
 --- a/chrome/android/java/AndroidManifest.xml
 +++ b/chrome/android/java/AndroidManifest.xml
-@@ -774,15 +774,6 @@ by a child template that "extends" this file.
+@@ -764,15 +764,6 @@ by a child template that "extends" this file.
              </intent-filter>
          </activity>
  
@@ -93,7 +126,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java b
  import org.chromium.base.ContextUtils;
  import org.chromium.base.annotations.CalledByNative;
  import org.chromium.chrome.browser.banners.AppDetailsDelegate;
-@@ -327,16 +324,7 @@ public abstract class AppHooks {
+@@ -294,16 +291,7 @@ public abstract class AppHooks {
       * same as {@link GoogleApiAvailability#isGooglePlayServicesAvailable()}.
       */
      public int isGoogleApiAvailableWithMinApkVersion(int minApkVersion) {
@@ -122,7 +155,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/PlayServicesVer
 -
  import org.chromium.base.ContextUtils;
  import org.chromium.base.annotations.CalledByNative;
- import org.chromium.chrome.browser.externalauth.ExternalAuthUtils;
+ import org.chromium.components.externalauth.ExternalAuthUtils;
 @@ -29,7 +27,7 @@ public class PlayServicesVersionInfo {
      public static String getGmsInfo() {
          Context context = ContextUtils.getApplicationContext();
@@ -157,106 +190,6 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/component_updat
  
  /** Java-side implementation of the component update scheduler using the BackgroundTaskScheduler. */
  @JNINamespace("component_updater")
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/ExternalAuthUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/externalauth/ExternalAuthUtils.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/ExternalAuthUtils.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/externalauth/ExternalAuthUtils.java
-@@ -15,16 +15,12 @@ import android.text.TextUtils;
- import androidx.annotation.VisibleForTesting;
- import androidx.annotation.WorkerThread;
- 
--import com.google.android.gms.common.ConnectionResult;
--import com.google.android.gms.common.GoogleApiAvailability;
--
- import org.chromium.base.ContextUtils;
- import org.chromium.base.Log;
- import org.chromium.base.StrictModeContext;
- import org.chromium.base.task.PostTask;
- import org.chromium.components.embedder_support.util.Origin;
- import org.chromium.content_public.browser.UiThreadTaskTraits;
--import org.chromium.gms.ChromiumPlayServicesAvailability;
- 
- /**
-  * Utility class for external authentication tools.
-@@ -157,9 +153,7 @@ public class ExternalAuthUtils {
-      *         when it is updating.
-      */
-     public boolean isGooglePlayServicesMissing(final Context context) {
--        final int resultCode = checkGooglePlayServicesAvailable(context);
--        return (resultCode == ConnectionResult.SERVICE_MISSING
--                || resultCode == ConnectionResult.SERVICE_INVALID);
-+        return true;
-     }
- 
-     /**
-@@ -176,7 +170,6 @@ public class ExternalAuthUtils {
-     public boolean canUseGooglePlayServices(final UserRecoverableErrorHandler errorHandler) {
-         Context context = ContextUtils.getApplicationContext();
-         final int resultCode = checkGooglePlayServicesAvailable(context);
--        if (resultCode == ConnectionResult.SUCCESS) return true;
-         // resultCode is some kind of error.
-         Log.v(TAG, "Unable to use Google Play Services: %s", describeError(resultCode));
-         if (isUserRecoverableError(resultCode)) {
-@@ -239,10 +232,7 @@ public class ExternalAuthUtils {
-      * @return The code produced by calling the external code
-      */
-     protected int checkGooglePlayServicesAvailable(final Context context) {
--        // TODO(crbug.com/577190): Temporarily allowing disk access until more permanent fix is in.
--        try (StrictModeContext ignored = StrictModeContext.allowDiskWrites()) {
--            return ChromiumPlayServicesAvailability.getGooglePlayServicesConnectionResult(context);
--        }
-+        return 1; /*SERVICE_MISSING*/
-     }
- 
-     /**
-@@ -253,7 +243,7 @@ public class ExternalAuthUtils {
-      * @return true If the code represents a user-recoverable error
-      */
-     protected boolean isUserRecoverableError(final int errorCode) {
--        return GoogleApiAvailability.getInstance().isUserResolvableError(errorCode);
-+        return false;
-     }
- 
-     /**
-@@ -263,6 +253,6 @@ public class ExternalAuthUtils {
-      * @return a textual description of the error code
-      */
-     protected String describeError(final int errorCode) {
--        return GoogleApiAvailability.getInstance().getErrorString(errorCode);
-+        return "";
-     }
- }
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/UserRecoverableErrorHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/externalauth/UserRecoverableErrorHandler.java
---- a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/UserRecoverableErrorHandler.java
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/externalauth/UserRecoverableErrorHandler.java
-@@ -9,8 +9,6 @@ import android.app.Dialog;
- import android.content.Context;
- import android.content.DialogInterface;
- 
--import com.google.android.gms.common.GoogleApiAvailability;
--
- import org.chromium.base.ThreadUtils;
- import org.chromium.base.metrics.RecordUserAction;
- 
-@@ -90,7 +88,6 @@ public abstract class UserRecoverableErrorHandler {
-             if (!sNotificationShown.getAndSet(true)) {
-                 return;
-             }
--            GoogleApiAvailability.getInstance().showErrorNotification(context, errorCode);
-         }
-     }
- 
-@@ -183,11 +180,7 @@ public abstract class UserRecoverableErrorHandler {
-                 cancelDialog();
-             }
-             if (mDialog == null) {
--                mDialog = GoogleApiAvailability.getInstance().getErrorDialog(
--                        mActivity, errorCode, NO_RESPONSE_REQUIRED);
-                 mErrorCode = errorCode;
--
--                DialogUserActionRecorder.createAndAttachToDialog(mDialog);
-             }
-             // This can happen if |errorCode| is ConnectionResult.SERVICE_INVALID.
-             if (mDialog != null && !mDialog.isShowing()) {
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/gcore/ChromeGoogleApiClientImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/gcore/ChromeGoogleApiClientImpl.java
 --- a/chrome/android/java/src/org/chromium/chrome/browser/gcore/ChromeGoogleApiClientImpl.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/gcore/ChromeGoogleApiClientImpl.java
@@ -269,8 +202,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/gcore/ChromeGoo
 -
  import org.chromium.base.Log;
  import org.chromium.base.TraceEvent;
- import org.chromium.chrome.browser.AppHooks;
-@@ -23,7 +20,6 @@ public class ChromeGoogleApiClientImpl implements ChromeGoogleApiClient {
+ import org.chromium.components.externalauth.ExternalAuthUtils;
+@@ -22,7 +19,6 @@ public class ChromeGoogleApiClientImpl implements ChromeGoogleApiClient {
      private static final String TAG = "Icing";
  
      private final Context mApplicationContext;
@@ -278,7 +211,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/gcore/ChromeGoo
      private final ExternalAuthUtils mExternalAuthUtils;
  
      /**
-@@ -33,10 +29,9 @@ public class ChromeGoogleApiClientImpl implements ChromeGoogleApiClient {
+@@ -32,10 +28,9 @@ public class ChromeGoogleApiClientImpl implements ChromeGoogleApiClient {
       * @param requireFirstPartyBuild true if the given client can only be used in a first-party
       *            build.
       */
@@ -287,10 +220,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/gcore/ChromeGoo
              boolean requireFirstPartyBuild) {
          mApplicationContext = context.getApplicationContext();
 -        mClient = client;
-         mExternalAuthUtils = AppHooks.get().getExternalAuthUtils();
+         mExternalAuthUtils = ExternalAuthUtils.getInstance();
          if (requireFirstPartyBuild && !mExternalAuthUtils.isChromeGoogleSigned()) {
              throw new IllegalStateException("GoogleApiClient requires first-party build");
-@@ -45,7 +40,6 @@ public class ChromeGoogleApiClientImpl implements ChromeGoogleApiClient {
+@@ -44,7 +39,6 @@ public class ChromeGoogleApiClientImpl implements ChromeGoogleApiClient {
  
      @Override
      public void disconnect() {
@@ -298,7 +231,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/gcore/ChromeGoo
      }
  
      @Override
-@@ -61,24 +55,11 @@ public class ChromeGoogleApiClientImpl implements ChromeGoogleApiClient {
+@@ -60,24 +54,11 @@ public class ChromeGoogleApiClientImpl implements ChromeGoogleApiClient {
      @Override
      public boolean connectWithTimeout(long timeout) {
          TraceEvent.begin("ChromeGoogleApiClientImpl:connectWithTimeout");
@@ -503,25 +436,39 @@ diff --git a/chrome/test/android/BUILD.gn b/chrome/test/android/BUILD.gn
 -    "$google_play_services_package:google_play_services_basement_java",
      "//base:base_java",
      "//base:base_java_test_support",
-     "//chrome/android:chrome_java",
+     "//chrome/android:base_module_java",
+@@ -315,7 +313,6 @@ android_library("chrome_java_test_support") {
+     "//third_party/android_deps:androidx_fragment_fragment_java",
+     "//third_party/android_deps:androidx_lifecycle_lifecycle_common_java",
+     "//third_party/android_deps:androidx_recyclerview_recyclerview_java",
+-    "//third_party/android_deps:chromium_play_services_availability_java",
+     "//third_party/android_deps:com_google_code_findbugs_jsr305_java",
+     "//third_party/android_deps:espresso_java",
+     "//third_party/android_deps:material_design_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
-@@ -120,10 +120,6 @@ if (is_android) {
+@@ -120,16 +120,12 @@ if (is_android) {
  
      deps = [
        ":background_task_scheduler_task_ids_java",
--      "$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_tasks_java",
        "internal:internal_java",
        "internal:proto_java",
        "//base:base_java",
+       "//base:base_java_test_support",
+       "//base:base_junit_test_support",
+       "//components/background_task_scheduler:public_java",
+-      "//third_party/android_deps:chromium_play_services_availability_shadows_java",
+       "//third_party/android_deps:robolectric_all_java",
+       "//third_party/junit",
+       "//third_party/mockito:mockito_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
-@@ -25,9 +25,6 @@ if (is_android) {
+@@ -25,15 +25,11 @@ if (is_android) {
  
      deps = [
        ":proto_java",
@@ -531,7 +478,13 @@ diff --git a/components/background_task_scheduler/internal/BUILD.gn b/components
        "//base:base_java",
        "//components/background_task_scheduler:background_task_scheduler_task_ids_java",
        "//components/background_task_scheduler:public_java",
-@@ -96,9 +93,6 @@ if (is_android) {
+       "//content/public/android:content_main_dex_java",
+       "//third_party/android_deps:androidx_annotation_annotation_java",
+-      "//third_party/android_deps:chromium_play_services_availability_java",
+       "//third_party/android_deps:protobuf_lite_runtime_java",
+     ]
+   }
+@@ -96,9 +92,6 @@ if (is_android) {
  
      deps = [
        ":internal_java",
@@ -541,6 +494,169 @@ diff --git a/components/background_task_scheduler/internal/BUILD.gn b/components
        "//base:base_java",
        "//base:base_java_test_support",
        "//components/background_task_scheduler:background_task_scheduler_task_ids_java",
+diff --git a/components/externalauth/android/BUILD.gn b/components/externalauth/android/BUILD.gn
+--- a/components/externalauth/android/BUILD.gn
++++ b/components/externalauth/android/BUILD.gn
+@@ -27,14 +27,11 @@ android_library("google_delegate_public_impl_java") {
+ android_library("java") {
+   deps = [
+     ":google_delegate_java",
+-    "$google_play_services_package:google_play_services_base_java",
+-    "$google_play_services_package:google_play_services_basement_java",
+     "//base:base_java",
+     "//components/embedder_support/android:browser_context_java",
+     "//components/embedder_support/android:util_java",
+     "//content/public/android:content_java",
+     "//third_party/android_deps:androidx_annotation_annotation_java",
+-    "//third_party/android_deps:chromium_play_services_availability_java",
+   ]
+   sources = [
+     "java/src/org/chromium/components/externalauth/ExternalAuthUtils.java",
+@@ -50,7 +47,6 @@ android_library("junit") {
+ 
+   deps = [
+     ":java",
+-    "$google_play_services_package:google_play_services_basement_java",
+     "//base:base_java",
+     "//base:base_java_test_support",
+     "//base:base_junit_test_support",
+diff --git a/components/externalauth/android/java/src/org/chromium/components/externalauth/ExternalAuthUtils.java b/components/externalauth/android/java/src/org/chromium/components/externalauth/ExternalAuthUtils.java
+--- a/components/externalauth/android/java/src/org/chromium/components/externalauth/ExternalAuthUtils.java
++++ b/components/externalauth/android/java/src/org/chromium/components/externalauth/ExternalAuthUtils.java
+@@ -15,16 +15,12 @@ import android.text.TextUtils;
+ import androidx.annotation.VisibleForTesting;
+ import androidx.annotation.WorkerThread;
+ 
+-import com.google.android.gms.common.ConnectionResult;
+-import com.google.android.gms.common.GoogleApiAvailability;
+-
+ import org.chromium.base.ContextUtils;
+ import org.chromium.base.Log;
+ import org.chromium.base.StrictModeContext;
+ import org.chromium.base.task.PostTask;
+ import org.chromium.components.embedder_support.util.Origin;
+ import org.chromium.content_public.browser.UiThreadTaskTraits;
+-import org.chromium.gms.ChromiumPlayServicesAvailability;
+ 
+ /**
+  * Utility class for external authentication tools.
+@@ -170,9 +166,7 @@ public class ExternalAuthUtils {
+      *         when it is updating.
+      */
+     public boolean isGooglePlayServicesMissing(final Context context) {
+-        final int resultCode = checkGooglePlayServicesAvailable(context);
+-        return (resultCode == ConnectionResult.SERVICE_MISSING
+-                || resultCode == ConnectionResult.SERVICE_INVALID);
++        return false;
+     }
+ 
+     /**
+@@ -187,20 +181,6 @@ public class ExternalAuthUtils {
+      * @return true if and only if Google Play Services can be used
+      */
+     public boolean canUseGooglePlayServices(final UserRecoverableErrorHandler errorHandler) {
+-        Context context = ContextUtils.getApplicationContext();
+-        final int resultCode = checkGooglePlayServicesAvailable(context);
+-        if (resultCode == ConnectionResult.SUCCESS) return true;
+-        // resultCode is some kind of error.
+-        Log.v(TAG, "Unable to use Google Play Services: %s", describeError(resultCode));
+-        if (isUserRecoverableError(resultCode)) {
+-            Runnable errorHandlerTask = new Runnable() {
+-                @Override
+-                public void run() {
+-                    errorHandler.handleError(context, resultCode);
+-                }
+-            };
+-            PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, errorHandlerTask);
+-        }
+         return false;
+     }
+ 
+@@ -252,20 +232,6 @@ public class ExternalAuthUtils {
+         return mGoogleDelegate;
+     }
+ 
+-    /**
+-     * Invokes whatever external code is necessary to check if Google Play Services is available
+-     * and returns the code produced by the attempt. Subclasses can override to force the behavior
+-     * one way or another, or to change the way that the check is performed.
+-     * @param context The current context.
+-     * @return The code produced by calling the external code
+-     */
+-    protected int checkGooglePlayServicesAvailable(final Context context) {
+-        // TODO(crbug.com/577190): Temporarily allowing disk access until more permanent fix is in.
+-        try (StrictModeContext ignored = StrictModeContext.allowDiskWrites()) {
+-            return ChromiumPlayServicesAvailability.getGooglePlayServicesConnectionResult(context);
+-        }
+-    }
+-
+     /**
+      * Invokes whatever external code is necessary to check if the specified error code produced
+      * by {@link #checkGooglePlayServicesAvailable(Context)} represents a user-recoverable error.
+@@ -274,7 +240,7 @@ public class ExternalAuthUtils {
+      * @return true If the code represents a user-recoverable error
+      */
+     protected boolean isUserRecoverableError(final int errorCode) {
+-        return GoogleApiAvailability.getInstance().isUserResolvableError(errorCode);
++        return false;
+     }
+ 
+     /**
+@@ -284,7 +250,7 @@ public class ExternalAuthUtils {
+      * @return a textual description of the error code
+      */
+     protected String describeError(final int errorCode) {
+-        return GoogleApiAvailability.getInstance().getErrorString(errorCode);
++        return "";
+     }
+ 
+     /**
+diff --git a/components/externalauth/android/java/src/org/chromium/components/externalauth/UserRecoverableErrorHandler.java b/components/externalauth/android/java/src/org/chromium/components/externalauth/UserRecoverableErrorHandler.java
+--- a/components/externalauth/android/java/src/org/chromium/components/externalauth/UserRecoverableErrorHandler.java
++++ b/components/externalauth/android/java/src/org/chromium/components/externalauth/UserRecoverableErrorHandler.java
+@@ -9,8 +9,6 @@ import android.app.Dialog;
+ import android.content.Context;
+ import android.content.DialogInterface;
+ 
+-import com.google.android.gms.common.GoogleApiAvailability;
+-
+ import org.chromium.base.ThreadUtils;
+ import org.chromium.base.metrics.RecordUserAction;
+ 
+@@ -89,7 +87,6 @@ public abstract class UserRecoverableErrorHandler {
+             if (!sNotificationShown.getAndSet(true)) {
+                 return;
+             }
+-            GoogleApiAvailability.getInstance().showErrorNotification(context, errorCode);
+         }
+     }
+ 
+@@ -176,24 +173,7 @@ public abstract class UserRecoverableErrorHandler {
+          */
+         @Override
+         protected final void handle(final Context context, final int errorCode) {
+-            // Assume old dialogs generated by the same error handler are obsolete when an error
+-            // with a different error code is encountered.
+-            if (mErrorCode != errorCode) {
+-                cancelDialog();
+-            }
+-            if (mDialog == null) {
+-                mDialog = GoogleApiAvailability.getInstance().getErrorDialog(
+-                        mActivity, errorCode, NO_RESPONSE_REQUIRED);
+-                mErrorCode = errorCode;
+-
+-                DialogUserActionRecorder.createAndAttachToDialog(mDialog);
+-            }
+-            // This can happen if |errorCode| is ConnectionResult.SERVICE_INVALID.
+-            if (mDialog != null && !mDialog.isShowing()) {
+-                mDialog.setCancelable(mCancelable);
+-                mDialog.show();
+-                RecordUserAction.record("Signin_Android_GmsUserRecoverableDialogShown");
+-            }
++            cancelDialog();
+         }
+ 
+         /**
 diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/BrowserMediaRouter.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/BrowserMediaRouter.java
 --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/BrowserMediaRouter.java
 +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/BrowserMediaRouter.java
@@ -579,7 +695,7 @@ diff --git a/components/media_router/browser/android/java/src/org/chromium/compo
 diff --git a/components/signin/core/browser/android/BUILD.gn b/components/signin/core/browser/android/BUILD.gn
 --- a/components/signin/core/browser/android/BUILD.gn
 +++ b/components/signin/core/browser/android/BUILD.gn
-@@ -14,8 +14,6 @@ generate_jni("jni_headers") {
+@@ -14,14 +14,11 @@ generate_jni("jni_headers") {
  
  android_library("java") {
    deps = [
@@ -588,6 +704,12 @@ diff --git a/components/signin/core/browser/android/BUILD.gn b/components/signin
      "//base:base_java",
      "//base:jni_java",
      "//net/android:net_java",
+     "//third_party/android_deps:android_support_v4_java",
+     "//third_party/android_deps:androidx_annotation_annotation_java",
+-    "//third_party/android_deps:chromium_play_services_availability_java",
+     "//ui/android:ui_java",
+   ]
+ 
 diff --git a/components/signin/core/browser/android/java/src/org/chromium/components/signin/GmsAvailabilityException.java b/components/signin/core/browser/android/java/src/org/chromium/components/signin/GmsAvailabilityException.java
 --- a/components/signin/core/browser/android/java/src/org/chromium/components/signin/GmsAvailabilityException.java
 +++ b/components/signin/core/browser/android/java/src/org/chromium/components/signin/GmsAvailabilityException.java
@@ -608,23 +730,46 @@ diff --git a/components/signin/core/browser/android/java/src/org/chromium/compon
 +        return false;
      }
  }
+diff --git a/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java b/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
+--- a/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
++++ b/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
+@@ -35,7 +35,6 @@ import org.chromium.base.StrictModeContext;
+ import org.chromium.base.ThreadUtils;
+ import org.chromium.base.library_loader.LibraryLoader;
+ import org.chromium.base.metrics.RecordHistogram;
+-import org.chromium.gms.ChromiumPlayServicesAvailability;
+ 
+ import java.io.IOException;
+ 
 diff --git a/content/public/android/BUILD.gn b/content/public/android/BUILD.gn
 --- a/content/public/android/BUILD.gn
 +++ b/content/public/android/BUILD.gn
-@@ -75,9 +75,6 @@ action_with_pydeps("generate_sandboxed_service_srcjar") {
- android_library("content_java") {
+@@ -139,9 +139,6 @@ android_library("content_main_dex_java") {
+ android_library("content_full_java") {
    deps = [
-     ":content_java_resources",
+     ":content_main_dex_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_tasks_java",
      "//base:base_java",
      "//base:jni_java",
-     "//components/download/public/common:public_java",
+     "//build:chromeos_buildflags",
+diff --git a/content/public/android/java/src/org/chromium/content/browser/sms/Wrappers.java b/content/public/android/java/src/org/chromium/content/browser/sms/Wrappers.java
+--- a/content/public/android/java/src/org/chromium/content/browser/sms/Wrappers.java
++++ b/content/public/android/java/src/org/chromium/content/browser/sms/Wrappers.java
+@@ -10,8 +10,6 @@ import android.content.ContextWrapper;
+ import android.content.Intent;
+ import android.content.IntentFilter;
+ 
+-import com.google.android.gms.tasks.Task;
+-
+ class Wrappers {
+     // Prevent instantiation.
+     private Wrappers() {}
 diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
 --- a/content/test/BUILD.gn
 +++ b/content/test/BUILD.gn
-@@ -2609,9 +2609,6 @@ if (is_android) {
+@@ -2630,9 +2630,6 @@ if (is_android) {
      testonly = true
      sources = content_java_sources_needing_jni
      deps = [
@@ -637,7 +782,7 @@ diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
 diff --git a/device/BUILD.gn b/device/BUILD.gn
 --- a/device/BUILD.gn
 +++ b/device/BUILD.gn
-@@ -421,8 +421,6 @@ if (is_android) {
+@@ -422,8 +422,6 @@ if (is_android) {
    junit_binary("device_junit_tests") {
      sources = [ "gamepad/android/junit/src/org/chromium/device/gamepad/GamepadMappingsTest.java" ]
      deps = [
@@ -649,11 +794,10 @@ diff --git a/device/BUILD.gn b/device/BUILD.gn
 diff --git a/remoting/android/client_java_tmpl.gni b/remoting/android/client_java_tmpl.gni
 --- a/remoting/android/client_java_tmpl.gni
 +++ b/remoting/android/client_java_tmpl.gni
-@@ -104,9 +104,6 @@ template("remoting_android_client_java_tmpl") {
+@@ -104,8 +104,6 @@ template("remoting_android_client_java_tmpl") {
  
      if (defined(invoker.play_services_package)) {
        deps += [
--        "${invoker.play_services_package}:google_play_services_auth_base_java",
 -        "${invoker.play_services_package}:google_play_services_base_java",
 -        "${invoker.play_services_package}:google_play_services_basement_java",
        ]
@@ -671,10 +815,18 @@ diff --git a/services/BUILD.gn b/services/BUILD.gn
        "//base:base_java",
        "//base:base_java_test_support",
        "//mojo/public/java:base_java",
+@@ -144,7 +142,6 @@ if (is_android) {
+       "//skia/public/mojom:mojom_java",
+       "//third_party/android_deps:androidx_test_monitor_java",
+       "//third_party/android_deps:androidx_test_runner_java",
+-      "//third_party/android_deps:chromium_play_services_availability_java",
+       "//third_party/android_support_test_runner:runner_java",
+       "//third_party/junit",
+       "//ui/gfx/geometry/mojom:mojom_java",
 diff --git a/services/device/geolocation/BUILD.gn b/services/device/geolocation/BUILD.gn
 --- a/services/device/geolocation/BUILD.gn
 +++ b/services/device/geolocation/BUILD.gn
-@@ -155,8 +155,6 @@ if (is_android) {
+@@ -156,14 +156,11 @@ if (is_android) {
  
      deps = [
        ":geolocation_jni_headers",
@@ -683,6 +835,12 @@ diff --git a/services/device/geolocation/BUILD.gn b/services/device/geolocation/
        "//base:base_java",
        "//base:jni_java",
        "//components/location/android:location_java",
+       "//services/device/public/java:geolocation_java",
+       "//third_party/android_deps:androidx_annotation_annotation_java",
+-      "//third_party/android_deps:chromium_play_services_availability_java",
+     ]
+     annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
+   }
 diff --git a/services/shape_detection/BUILD.gn b/services/shape_detection/BUILD.gn
 --- a/services/shape_detection/BUILD.gn
 +++ b/services/shape_detection/BUILD.gn
@@ -695,10 +853,43 @@ diff --git a/services/shape_detection/BUILD.gn b/services/shape_detection/BUILD.
        "//base:base_java",
        "//mojo/public/java:base_java",
        "//mojo/public/java:bindings_java",
+@@ -116,7 +114,6 @@ if (is_android) {
+       "//mojo/public/java/system:system_impl_java",
+       "//services/shape_detection/public/mojom:mojom_java",
+       "//skia/public/mojom:mojom_java",
+-      "//third_party/android_deps:chromium_play_services_availability_java",
+       "//ui/gfx/geometry/mojom:mojom_java",
+     ]
+   }
 diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn
 --- a/third_party/android_deps/BUILD.gn
 +++ b/third_party/android_deps/BUILD.gn
-@@ -1135,42 +1135,6 @@ java_prebuilt("com_android_tools_build_jetifier_jetifier_processor_java") {
+@@ -87,24 +87,6 @@ java_annotation_processor("auto_service_processor") {
+   deps = [ ":com_google_auto_service_auto_service_java" ]
+ }
+ 
+-android_library("chromium_play_services_availability_java") {
+-  sources = [ "util/org/chromium/gms/ChromiumPlayServicesAvailability.java" ]
+-  deps = [ "$google_play_services_package:google_play_services_base_java" ]
+-}
+-
+-android_library("chromium_play_services_availability_shadows_java") {
+-  # Platform checks are broken for Robolectric. See https://crbug.com/1071638.
+-  bypass_platform_checks = true
+-  testonly = true
+-  sources = [
+-    "util/org/chromium/gms/shadows/ShadowChromiumPlayServicesAvailability.java",
+-  ]
+-  deps = [
+-    ":chromium_play_services_availability_java",
+-    "//third_party/android_deps:robolectric_all_java",
+-  ]
+-}
+-
+ # The section below is generated by running
+ # `//tools/android/roll/android_deps/fetch_all.py`
+ 
+@@ -1154,52 +1136,6 @@ java_prebuilt("com_android_tools_build_jetifier_jetifier_processor_java") {
    ]
  }
  
@@ -738,13 +929,6 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.
 -      "//build/android/bytecode:fragment_activity_replacer"
 -}
 -
- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
- android_aar_prebuilt("google_play_services_gcm_java") {
-   aar_path = "libs/com_google_android_gms_play_services_gcm/play-services-gcm-17.0.0.aar"
-@@ -1189,16 +1153,6 @@ android_aar_prebuilt("google_play_services_gcm_java") {
-   strip_drawables = true
- }
- 
 -# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
 -android_aar_prebuilt("google_play_services_tasks_java") {
 -  aar_path = "libs/com_google_android_gms_play_services_tasks/play-services-tasks-17.0.0.aar"
@@ -758,6 +942,17 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.
  # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  android_aar_prebuilt("com_google_android_material_material_java") {
    aar_path =
+diff --git a/weblayer/shell/android/BUILD.gn b/weblayer/shell/android/BUILD.gn
+--- a/weblayer/shell/android/BUILD.gn
++++ b/weblayer/shell/android/BUILD.gn
+@@ -40,7 +40,6 @@ android_library("weblayer_shell_java") {
+   # google_play_services_version definition in the manifest.
+   deps = [
+     ":weblayer_shell_resources",
+-    "$google_play_services_package:google_play_services_base_java",
+     "//base:base_java",
+     "//components/strictmode/android:java",
+     "//third_party/android_deps:android_support_v4_java",
 -- 
 2.17.1