Commit f5a171b9 authored by Nick Burris's avatar Nick Burris Committed by Chromium LUCI CQ

Create ExternalAuthGoogleDelegate

* Create ExternalAuthGoogleDelegate, owned by ExternalAuthUtils, which
  will be used to implement isGoogleSigned downstream, rather than doing
  so with an overriding subclass.
* This is patch 1/5 for providing ExternalAuthUtils as a singleton
  instead of from AppHooks.

Change-Id: I13c8d972f8ca1a4d2dac1bdda4ad8911ae8c275b
Bug: 1154371
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2587429
Commit-Queue: Nick Burris <nburris@chromium.org>
Reviewed-by: default avatarAndrew Grieve <agrieve@chromium.org>
Reviewed-by: default avatarTed Choc <tedchoc@chromium.org>
Cr-Commit-Position: refs/heads/master@{#836817}
parent e7f54385
...@@ -883,6 +883,7 @@ junit_binary("chrome_junit_tests") { ...@@ -883,6 +883,7 @@ junit_binary("chrome_junit_tests") {
"//components/embedder_support/android:context_menu_java", "//components/embedder_support/android:context_menu_java",
"//components/embedder_support/android:junit_test_support", "//components/embedder_support/android:junit_test_support",
"//components/embedder_support/android:util_java", "//components/embedder_support/android:util_java",
"//components/externalauth/android:google_delegate_public_impl_java",
"//components/externalauth/android:java", "//components/externalauth/android:java",
"//components/externalauth/android:junit", "//components/externalauth/android:junit",
"//components/favicon/android:java", "//components/favicon/android:java",
...@@ -1155,6 +1156,7 @@ android_library("chrome_test_java") { ...@@ -1155,6 +1156,7 @@ android_library("chrome_test_java") {
"//components/embedder_support/android:web_contents_delegate_java", "//components/embedder_support/android:web_contents_delegate_java",
"//components/external_intents/android:java", "//components/external_intents/android:java",
"//components/external_intents/android:javatests", "//components/external_intents/android:javatests",
"//components/externalauth/android:google_delegate_public_impl_java",
"//components/externalauth/android:java", "//components/externalauth/android:java",
"//components/favicon/android:java", "//components/favicon/android:java",
"//components/feature_engagement:feature_engagement_java", "//components/feature_engagement:feature_engagement_java",
...@@ -1940,6 +1942,7 @@ java_group("chrome_public_base_module_java") { ...@@ -1940,6 +1942,7 @@ java_group("chrome_public_base_module_java") {
deps = [ deps = [
":app_hooks_java", ":app_hooks_java",
":chrome_all_java", ":chrome_all_java",
"//components/externalauth/android:google_delegate_public_impl_java",
] ]
} }
...@@ -2349,7 +2352,10 @@ template("monochrome_public_apk_or_module_tmpl") { ...@@ -2349,7 +2352,10 @@ template("monochrome_public_apk_or_module_tmpl") {
if (_enable_chrome_module) { if (_enable_chrome_module) {
deps += [ "//chrome/android:chrome_base_module_resources" ] deps += [ "//chrome/android:chrome_base_module_resources" ]
} else { } else {
deps += [ "//chrome/android:app_hooks_java" ] deps += [
"//chrome/android:app_hooks_java",
"//components/externalauth/android:google_delegate_public_impl_java",
]
} }
if (!_is_trichrome) { if (!_is_trichrome) {
deps += [ deps += [
...@@ -3002,7 +3008,10 @@ template("monochrome_or_trichrome_public_bundle_tmpl") { ...@@ -3002,7 +3008,10 @@ template("monochrome_or_trichrome_public_bundle_tmpl") {
module_descs = _module_descs module_descs = _module_descs
version_code = _version_code version_code = _version_code
if (enable_chrome_module) { if (enable_chrome_module) {
chrome_deps = [ "//chrome/android:app_hooks_java" ] chrome_deps = [
"//chrome/android:app_hooks_java",
"//components/externalauth/android:google_delegate_public_impl_java",
]
if (!_is_trichrome) { if (!_is_trichrome) {
chrome_deps += [ "//chrome/android:monochrome_java" ] chrome_deps += [ "//chrome/android:monochrome_java" ]
} }
......
...@@ -546,6 +546,7 @@ if (is_android) { ...@@ -546,6 +546,7 @@ if (is_android) {
"//chrome/browser/profiling_host:profiling_browsertests", "//chrome/browser/profiling_host:profiling_browsertests",
"//components/browser_ui/widget/android:java", "//components/browser_ui/widget/android:java",
"//components/crash/android:crashpad_main", "//components/crash/android:crashpad_main",
"//components/externalauth/android:google_delegate_public_impl_java",
"//components/games/core/test:test_support", "//components/games/core/test:test_support",
"//components/metrics/demographics:test_support", "//components/metrics/demographics:test_support",
"//components/page_load_metrics/browser:test_support", "//components/page_load_metrics/browser:test_support",
...@@ -4376,6 +4377,7 @@ test("unit_tests") { ...@@ -4376,6 +4377,7 @@ test("unit_tests") {
"//chrome/browser/updates:unit_tests", "//chrome/browser/updates:unit_tests",
"//chrome/services/media_gallery_util:unit_tests", "//chrome/services/media_gallery_util:unit_tests",
"//components/download/internal/common:internal_java", "//components/download/internal/common:internal_java",
"//components/externalauth/android:google_delegate_public_impl_java",
"//components/favicon/core/test:test_support", "//components/favicon/core/test:test_support",
"//components/gcm_driver/instance_id/android:instance_id_driver_java", "//components/gcm_driver/instance_id/android:instance_id_driver_java",
"//components/gcm_driver/instance_id/android:instance_id_driver_test_support_java", "//components/gcm_driver/instance_id/android:instance_id_driver_test_support_java",
......
...@@ -4,8 +4,29 @@ ...@@ -4,8 +4,29 @@
import("//build/config/android/rules.gni") import("//build/config/android/rules.gni")
# Separate target to allow for a dependency on GmsCore. It compiles the abstract class;
# implementations are compiled separately.
android_library("google_delegate_java") {
sources = [
"java/src/org/chromium/components/externalauth/ExternalAuthGoogleDelegate.java",
"java/src/org/chromium/components/externalauth/ExternalAuthGoogleDelegateImpl.java",
]
# Add the actual implementation where necessary so that downstream targets
# can provide their own implementations.
jar_excluded_patterns = [ "*/ExternalAuthGoogleDelegateImpl.class" ]
}
# This target compiles the implementation of ExternalAuthGoogleDelegate for
# public targets.
android_library("google_delegate_public_impl_java") {
sources = [ "java/src/org/chromium/components/externalauth/ExternalAuthGoogleDelegateImpl.java" ]
deps = [ ":google_delegate_java" ]
}
android_library("java") { android_library("java") {
deps = [ deps = [
":google_delegate_java",
"$google_play_services_package:google_play_services_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_basement_java",
"//base:base_java", "//base:base_java",
......
// Copyright 2020 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.externalauth;
/**
* Base class for defining methods where different behavior is required by downstream targets.
* The correct version of {@link ExternalAuthGoogleDelegateImpl} will be determined at compile time
* via build rules.
*/
public class ExternalAuthGoogleDelegate {
/**
* Returns whether the call is originating from a Google-signed package.
* @param packageName The package name to inquire about.
*/
public boolean isGoogleSigned(String packageName) {
return false;
}
}
// Copyright 2020 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.externalauth;
/**
* Instantiable version of {@link ExternalAuthGoogleDelegate}, don't add anything to this class!
* Downstream targets may provide a different implementation. In GN, we specify that
* {@link ExternalAuthGoogleDelegate} is compiled separately from its implementation; other
* projects may specify a different ExternalAuthGoogleDelegateImpl via GN.
*/
public class ExternalAuthGoogleDelegateImpl extends ExternalAuthGoogleDelegate {}
...@@ -36,6 +36,12 @@ public class ExternalAuthUtils { ...@@ -36,6 +36,12 @@ public class ExternalAuthUtils {
public static final int FLAG_SHOULD_BE_SYSTEM = 1 << 1; public static final int FLAG_SHOULD_BE_SYSTEM = 1 << 1;
private static final String TAG = "ExternalAuthUtils"; private static final String TAG = "ExternalAuthUtils";
private final ExternalAuthGoogleDelegate mGoogleDelegate;
public ExternalAuthUtils() {
mGoogleDelegate = new ExternalAuthGoogleDelegateImpl();
}
/** /**
* Gets the calling package names for the current transaction. * Gets the calling package names for the current transaction.
* @param context The context to use for accessing the package manager. * @param context The context to use for accessing the package manager.
...@@ -84,8 +90,7 @@ public class ExternalAuthUtils { ...@@ -84,8 +90,7 @@ public class ExternalAuthUtils {
* @param packageName The package name to inquire about. * @param packageName The package name to inquire about.
*/ */
public boolean isGoogleSigned(String packageName) { public boolean isGoogleSigned(String packageName) {
// This is overridden in a subclass. return mGoogleDelegate.isGoogleSigned(packageName);
return false;
} }
/** /**
...@@ -231,6 +236,14 @@ public class ExternalAuthUtils { ...@@ -231,6 +236,14 @@ public class ExternalAuthUtils {
return canUseFirstPartyGooglePlayServices(new UserRecoverableErrorHandler.Silent()); return canUseFirstPartyGooglePlayServices(new UserRecoverableErrorHandler.Silent());
} }
/**
* @return this object's {@link ExternalAuthGoogleDelegate} instance.
*/
@VisibleForTesting
public ExternalAuthGoogleDelegate getGoogleDelegateForTesting() {
return mGoogleDelegate;
}
/** /**
* Invokes whatever external code is necessary to check if Google Play Services is available * 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 * and returns the code produced by the attempt. Subclasses can override to force the behavior
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment