From: csagan5 <32685696+csagan5@users.noreply.github.com> Date: Mon, 5 Apr 2021 21:37:12 +0200 Subject: Remove binary blob integrations Remove dependency on com.google.android.gms.auth kill GCM Remove dependency on com.google.android.gcm Remove dependency on com.google.android.gms.gcm It also disables 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. Remove dependency on com.google.android.play Remove dependency on vision, clearcut and phenotype Remove dependency on flags, places and stats Remove dependency on fido, iid, instantapps, location Remove dependency on com.google.android.gms.cast Remove dependency on auth, signin, dynamic and tasks Remove google_services_gcm ungoogled-chromium: Disable GCM Disable Google Cloud Messaging (GCM) client Disable web authentication phone support Parts of this patch were developed by csagan5, uazo and others. License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- ...em_webview_bundle.AndroidManifest.expected | 5 - build/config/android/config.gni | 4 +- chrome/android/BUILD.gn | 21 +- chrome/android/chrome_java_sources.gni | 4 - chrome/android/java/AndroidManifest.xml | 33 - .../browser/PlayServicesVersionInfo.java | 12 +- .../ChromeBackgroundTaskFactory.java | 3 - chrome/android/javatests/BUILD.gn | 7 - chrome/android/junit/BUILD.gn | 6 - chrome/browser/language/android/BUILD.gn | 3 - .../language/AppLanguagePromoDialog.java | 31 - .../language/settings/LanguageSettings.java | 6 - chrome/browser/omaha/android/BUILD.gn | 1 - .../browser/password_manager/android/BUILD.gn | 5 - .../password_manager/GmsUpdateLauncher.java | 28 - .../PasswordManagerAndroidBackendUtil.java | 38 +- .../PasswordManagerHelper.java | 9 - ...swordSyncControllerDelegateBridgeImpl.java | 7 - .../push_messaging_service_factory.cc | 8 +- .../notification_telemetry_service.cc | 1 + chrome/browser/ui/BUILD.gn | 3 - chrome/browser/ui/android/omnibox/BUILD.gn | 4 - .../browser/ui/webui/chrome_web_ui_configs.cc | 1 - chrome/browser/webauthn/android/BUILD.gn | 1 - .../CableAuthenticatorModuleProvider.java | 35 +- chrome/browser/webid/BUILD.gn | 3 - .../DigitalCredentialsCreationDelegate.java | 172 +--- ...igitalCredentialsPresentationDelegate.java | 144 +-- chrome/test/android/BUILD.gn | 2 - .../ExternalNavigationHandler.java | 8 - components/externalauth/android/BUILD.gn | 3 - .../externalauth/ExternalAuthUtils.java | 34 +- .../UserRecoverableErrorHandler.java | 8 - .../gcm_driver/GoogleCloudMessagingV2.java | 2 + components/gcm_driver/gcm_client_impl.cc | 4 + .../gcm_driver/instance_id/android/BUILD.gn | 3 - .../instance_id/InstanceIDBridge.java | 56 +- .../InstalledAppProviderImpl.java | 2 +- .../media_router/browser/android/BUILD.gn | 11 - .../media_router/BrowserMediaRouter.java | 21 +- .../components/media_router/MediaSink.java | 44 +- .../media_router/MediaStatusBridge.java | 40 +- .../caf/BaseNotificationController.java | 59 -- .../caf/BaseSessionController.java | 112 +-- .../caf/CafBaseMediaRouteProvider.java | 113 +-- .../caf/CafMediaRouteProvider.java | 21 - .../media_router/caf/CafMessageHandler.java | 106 +-- .../media_router/caf/CastMediaSource.java | 10 +- .../media_router/caf/CastOptionsProvider.java | 21 +- .../caf/CastSessionController.java | 87 -- .../media_router/caf/CastUtils.java | 8 - .../CafExpandedControllerActivity.java | 46 +- .../CafRemotingMediaRouteProvider.java | 4 +- .../remoting/FlingingControllerAdapter.java | 96 -- .../caf/remoting/RemotingMediaSource.java | 8 +- .../remoting/RemotingSessionController.java | 31 - .../test/android/cast_emulator/BUILD.gn | 1 - components/module_installer/android/BUILD.gn | 4 - components/omnibox/common/BUILD.gn | 1 - .../components/omnibox/OmniboxFeatures.java | 8 - .../android/backend/common/BUILD.gn | 2 - .../backend/OneTimeTokensMetricsRecorder.java | 16 - .../android/backend/sms/BUILD.gn | 3 - .../sms/AndroidSmsOtpFetchReceiverBridge.java | 11 +- components/signin/public/android/BUILD.gn | 3 - components/webauthn/android/BUILD.gn | 12 +- .../webauthn/ConditionalUiState.java | 15 + .../webauthn/Fido2CredentialRequest.java | 113 +-- .../webauthn/GmsCoreGetCredentialsHelper.java | 79 +- .../components/webauthn/GmsCoreUtils.java | 76 +- .../webauthn/IdentityCredentialsHelper.java | 144 +-- .../webauthn/WebauthnModeProvider.java | 15 - .../cred_man/CredManMetricsHelper.java | 17 +- .../push_messaging/push_messaging_manager.cc | 2 +- content/public/android/BUILD.gn | 4 - content/test/BUILD.gn | 4 - device/BUILD.gn | 3 - services/BUILD.gn | 10 - services/device/geolocation/BUILD.gn | 4 - services/shape_detection/BUILD.gn | 2 - third_party/android_deps/BUILD.gn | 11 - third_party/android_deps/autorolled/BUILD.gn | 882 ------------------ .../preconditions/javatests/BUILD.gn | 1 - .../gms/ChromiumPlayServicesAvailability.java | 17 +- third_party/androidx/customizations.gni | 14 +- third_party/cardboard/BUILD.gn | 4 - 86 files changed, 135 insertions(+), 2898 deletions(-) create mode 100644 components/webauthn/android/java/src/org/chromium/components/webauthn/ConditionalUiState.java diff --git a/android_webview/expectations/system_webview_bundle.AndroidManifest.expected b/android_webview/expectations/system_webview_bundle.AndroidManifest.expected --- a/android_webview/expectations/system_webview_bundle.AndroidManifest.expected +++ b/android_webview/expectations/system_webview_bundle.AndroidManifest.expected @@ -22,10 +22,6 @@ android:label="Android System WebView" android:multiArch="true" android:use32bitAbi="true"> - # DIFF-ANCHOR: ea1a94af # DIFF-ANCHOR: b7cc06e9 - - - - - @@ -817,16 +812,6 @@ by a child template that "extends" this file. - - - - - - - - - - - - @@ -1367,12 +1340,6 @@ by a child template that "extends" this file. {% endif %} - - - { - if (success) { - if (!isSelectedCurrentUi) { - // Only restart if the new language is different than the current UI. - mRestartAction.restart(); - } - } else { - // The loading language modal will always already be shown if a download - // fails. - CharSequence failedText = - mActivity - .getResources() - .getString( - R.string.languages_split_failed, - selectedLanguage.getDisplayName()); - messageView.setText(failedText); - mLoadingModal.set( - ModalDialogProperties.POSITIVE_BUTTON_TEXT, - mActivity.getText(R.string.ok).toString()); - } - }); } /** diff --git a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguageSettings.java b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguageSettings.java --- a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguageSettings.java +++ b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguageSettings.java @@ -26,7 +26,6 @@ import org.chromium.build.annotations.Nullable; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.language.AppLocaleUtils; import org.chromium.chrome.browser.language.GlobalAppLocaleController; -import org.chromium.chrome.browser.language.LanguageSplitInstaller; import org.chromium.chrome.browser.language.R; import org.chromium.chrome.browser.preferences.Pref; import org.chromium.chrome.browser.preferences.PrefServiceUtil; @@ -150,11 +149,6 @@ public class LanguageSettings extends ChromeBaseSettingsFragment * translate target language, and detailed translate preferences. */ private void createDetailedPreferences() { - // Log currently installed language splits. - String installedLanguages = - TextUtils.join(",", LanguageSplitInstaller.getInstance().getInstalledLanguages()); - Log.i(TAG, TextUtils.concat("Installed Languages: ", installedLanguages).toString()); - SettingsUtils.addPreferencesFromResource(this, R.xml.languages_detailed_preferences); setupAppLanguageSection(); diff --git a/chrome/browser/omaha/android/BUILD.gn b/chrome/browser/omaha/android/BUILD.gn --- a/chrome/browser/omaha/android/BUILD.gn +++ b/chrome/browser/omaha/android/BUILD.gn @@ -21,7 +21,6 @@ android_library("java") { ] deps = [ ":update_proto_java", - "$google_play_services_package:google_play_services_base_java", "//base:base_java", "//base:base_shared_preferences_java", "//base/version_info/android:version_constants_java", diff --git a/chrome/browser/password_manager/android/BUILD.gn b/chrome/browser/password_manager/android/BUILD.gn --- a/chrome/browser/password_manager/android/BUILD.gn +++ b/chrome/browser/password_manager/android/BUILD.gn @@ -116,8 +116,6 @@ android_library("java") { ":java_resources", ":settings_interface_java", ":utils_java", - "$google_play_services_package:google_play_services_base_java", - "$google_play_services_package:google_play_services_basement_java", "//base:base_java", "//build/android:build_java", "//chrome/browser/device_reauth/android:java", @@ -247,7 +245,6 @@ android_library("utils_java") { deps = [ ":java_resources", - "$google_play_services_package:google_play_services_base_java", "//base:base_java", "//base:resetters_java", "//base:tasks_java", @@ -323,8 +320,6 @@ robolectric_binary("password_manager_junit_tests") { ":test_support_java", ":unified_password_manager_proto_java", ":utils_java", - "$google_play_services_package:google_play_services_base_java", - "$google_play_services_package:google_play_services_basement_java", "add_username_dialog:junit", "bottom_sheet:junit", "grouped_affiliations:junit", diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/GmsUpdateLauncher.java b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/GmsUpdateLauncher.java --- a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/GmsUpdateLauncher.java +++ b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/GmsUpdateLauncher.java @@ -9,8 +9,6 @@ import android.content.Context; import android.content.Intent; import android.net.Uri; -import com.google.android.gms.common.GoogleApiAvailability; - import org.chromium.build.annotations.NullMarked; /** Launches the UI through which the user can update Google Play Services/ */ @@ -25,31 +23,5 @@ public class GmsUpdateLauncher { * @param context to start the new store Activity from. */ public static void launch(Context context) { - Intent intent = new Intent(Intent.ACTION_VIEW); - String deepLinkUrl = - "market://details?id=" - + GoogleApiAvailability.GOOGLE_PLAY_SERVICES_PACKAGE - + "&referrer=" - + STORE_REFERER; - - intent.setPackage("com.android.vending"); - intent.setData(Uri.parse(deepLinkUrl)); - intent.putExtra("callerId", context.getPackageName()); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - - // Request for overlay flow, Play Store will fallback to the default - // behaviour if overlay is not available. - // TODO(crbug.com/40855336): Use AlleyOop v3 overlay UI after fixing Chrome restart - // during the GMS Core installation. - // intent.putExtra("overlay", true); - try { - context.startActivity(intent); - } catch (ActivityNotFoundException e) { - // In case that Google Play Store isn't present on the device, its activity could not - // have been started. - // TODO: b/334051261 - Instead of silently failing to open Google Play Store to offer - // updating GMS Core, either don't offer the option at all or indicate why the update - // button didn't work. - } } } diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerAndroidBackendUtil.java b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerAndroidBackendUtil.java --- a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerAndroidBackendUtil.java +++ b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerAndroidBackendUtil.java @@ -5,10 +5,6 @@ package org.chromium.chrome.browser.password_manager; import android.app.PendingIntent; -import com.google.android.gms.common.ConnectionResult; -import com.google.android.gms.common.api.ApiException; -import com.google.android.gms.common.api.ResolvableApiException; - import org.chromium.base.Log; import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; @@ -28,9 +24,6 @@ class PasswordManagerAndroidBackendUtil { if (exception instanceof PasswordStoreAndroidBackend.BackendException) { return ((PasswordStoreAndroidBackend.BackendException) exception).errorCode; } - if (exception instanceof ApiException) { - return AndroidBackendErrorType.EXTERNAL_ERROR; - } return AndroidBackendErrorType.UNCATEGORIZED; } @@ -38,41 +31,14 @@ class PasswordManagerAndroidBackendUtil { if (exception instanceof PasswordCheckupClientHelper.PasswordManagerUnavailableException) { return CredentialManagerError.PASSWORD_MANAGER_NOT_AVAILABLE; } - if (exception instanceof ApiException) { - return CredentialManagerError.API_EXCEPTION; - } return CredentialManagerError.OTHER_API_ERROR; } static int getApiErrorCode(Exception exception) { - if (exception instanceof ApiException) { - return ((ApiException) exception).getStatusCode(); - } - return 0; // '0' means SUCCESS. + return 13; // '13' means ERROR } static @Nullable Integer getConnectionResultCode(Exception exception) { - if (!(exception instanceof ApiException)) return null; - - ConnectionResult connectionResult = - ((ApiException) exception).getStatus().getConnectionResult(); - if (connectionResult == null) return null; - - return connectionResult.getErrorCode(); - } - - static void handleResolvableApiException(ResolvableApiException exception) { - // No special resolution for the authentication errors is needed since the user has already - // been prompted to reauthenticate by Google services and Sync in Chrome. - if (exception.getStatusCode() == ChromeSyncStatusCode.AUTH_ERROR_RESOLVABLE) return; - - // For all other resolvable errors, an intent is launched allowing the user to fix the - // broken state. - PendingIntent pendingIntent = exception.getResolution(); - try { - pendingIntent.send(); - } catch (PendingIntent.CanceledException e) { - Log.e(TAG, "Can not launch error resolution intent", e); - } + return null; } } diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelper.java b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelper.java --- a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelper.java +++ b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelper.java @@ -16,8 +16,6 @@ import androidx.annotation.IntDef; import androidx.annotation.VisibleForTesting; import androidx.fragment.app.FragmentActivity; -import com.google.android.gms.common.api.ApiException; - import org.jni_zero.JniType; import org.jni_zero.NativeMethods; @@ -489,13 +487,6 @@ public class PasswordManagerHelper { // If the exception is not a Chrome-defined one, it means that the call failed at the // API call level. It could have either failed with a known ApiException or because of a // different error (e.g. a different exception thrown by the implementation of the API). - if (!(exception instanceof ApiException)) { - RecordHistogram.recordEnumeratedHistogram( - kGetIntentErrorHistogram, - CredentialManagerError.OTHER_API_ERROR, - CredentialManagerError.COUNT); - return; - } RecordHistogram.recordEnumeratedHistogram( kGetIntentErrorHistogram, diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordSyncControllerDelegateBridgeImpl.java b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordSyncControllerDelegateBridgeImpl.java --- a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordSyncControllerDelegateBridgeImpl.java +++ b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordSyncControllerDelegateBridgeImpl.java @@ -4,8 +4,6 @@ package org.chromium.chrome.browser.password_manager; -import com.google.android.gms.common.api.ApiException; - import org.jni_zero.CalledByNative; import org.jni_zero.NativeMethods; @@ -78,11 +76,6 @@ class PasswordSyncControllerDelegateBridgeImpl { error = ((PasswordStoreAndroidBackend.BackendException) exception).errorCode; } - if (exception instanceof ApiException) { - error = AndroidBackendErrorType.EXTERNAL_ERROR; - apiErrorCode = ((ApiException) exception).getStatusCode(); - } - PasswordSyncControllerDelegateBridgeImplJni.get() .onCredentialManagerError(mNativeDelegateBridgeImpl, error, apiErrorCode); } diff --git a/chrome/browser/push_messaging/push_messaging_service_factory.cc b/chrome/browser/push_messaging/push_messaging_service_factory.cc --- a/chrome/browser/push_messaging/push_messaging_service_factory.cc +++ b/chrome/browser/push_messaging/push_messaging_service_factory.cc @@ -28,13 +28,7 @@ // static PushMessagingServiceImpl* PushMessagingServiceFactory::GetForProfile( content::BrowserContext* context) { - // The Push API is not currently supported in incognito mode. - // See https://crbug.com/41124656. - if (context->IsOffTheRecord()) - return nullptr; - - return static_cast( - GetInstance()->GetServiceForBrowserContext(context, true)); + return nullptr; } // static diff --git a/chrome/browser/safe_browsing/notification_telemetry/notification_telemetry_service.cc b/chrome/browser/safe_browsing/notification_telemetry/notification_telemetry_service.cc --- a/chrome/browser/safe_browsing/notification_telemetry/notification_telemetry_service.cc +++ b/chrome/browser/safe_browsing/notification_telemetry/notification_telemetry_service.cc @@ -127,6 +127,7 @@ NotificationTelemetryService::NotificationTelemetryService( // Notification Telemetry Service is a keyed service and will outlive // any invocations of the callback being registered with the push messaging // service (also a keyed service). + if (push_messaging_service) push_messaging_service->SetSubscribeFromWorkerCallback(base::BindRepeating( &NotificationTelemetryService::OnNewNotificationServiceWorkerSubscription, base::Unretained(this))); diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn @@ -126,8 +126,6 @@ static_library("ui") { "webui/flags/flags_ui.h", "webui/flags/flags_ui_handler.cc", "webui/flags/flags_ui_handler.h", - "webui/gcm_internals_ui.cc", - "webui/gcm_internals_ui.h", "webui/history_clusters/history_clusters_internals_ui_config.cc", "webui/history_clusters/history_clusters_internals_ui_config.h", "webui/interstitials/interstitial_ui.cc", @@ -510,7 +508,6 @@ static_library("ui") { "//components/feedback/content", "//components/feedback/redaction_tool", "//components/find_in_page", - "//components/gcm_driver", "//components/google/core/common", "//components/heap_profiling/multi_process", "//components/history/content/browser", diff --git a/chrome/browser/ui/android/omnibox/BUILD.gn b/chrome/browser/ui/android/omnibox/BUILD.gn --- a/chrome/browser/ui/android/omnibox/BUILD.gn +++ b/chrome/browser/ui/android/omnibox/BUILD.gn @@ -191,8 +191,6 @@ android_library("java") { deps = [ ":java_resources", - "$google_play_services_package:google_play_services_location_java", - "$google_play_services_package:google_play_services_tasks_java", "//base:base_java", "//base:supplier_java", "//base/version_info/android:version_constants_java", @@ -554,8 +552,6 @@ robolectric_library("junit") { deps = [ ":java", ":java_resources", - "$google_play_services_package:google_play_services_location_java", - "$google_play_services_package:google_play_services_tasks_java", "//base:base_java", "//base:base_java_test_support", "//base:base_junit_test_support", diff --git a/chrome/browser/ui/webui/chrome_web_ui_configs.cc b/chrome/browser/ui/webui/chrome_web_ui_configs.cc --- a/chrome/browser/ui/webui/chrome_web_ui_configs.cc +++ b/chrome/browser/ui/webui/chrome_web_ui_configs.cc @@ -262,7 +262,6 @@ void RegisterChromeWebUIConfigs() { map.AddWebUIConfig(std::make_unique()); map.AddWebUIConfig(std::make_unique()); map.AddWebUIConfig(std::make_unique()); - map.AddWebUIConfig(std::make_unique()); map.AddWebUIConfig( std::make_unique< history_clusters_internals::HistoryClustersInternalsUIConfig>()); diff --git a/chrome/browser/webauthn/android/BUILD.gn b/chrome/browser/webauthn/android/BUILD.gn --- a/chrome/browser/webauthn/android/BUILD.gn +++ b/chrome/browser/webauthn/android/BUILD.gn @@ -16,7 +16,6 @@ android_library("java") { deps = [ ":java_resources", - "$google_play_services_package:google_play_services_tasks_java", "//base:base_java", "//build/android:build_java", "//chrome/android:chrome_app_java_resources", diff --git a/chrome/browser/webauthn/android/java/src/org/chromium/chrome/browser/webauthn/CableAuthenticatorModuleProvider.java b/chrome/browser/webauthn/android/java/src/org/chromium/chrome/browser/webauthn/CableAuthenticatorModuleProvider.java --- a/chrome/browser/webauthn/android/java/src/org/chromium/chrome/browser/webauthn/CableAuthenticatorModuleProvider.java +++ b/chrome/browser/webauthn/android/java/src/org/chromium/chrome/browser/webauthn/CableAuthenticatorModuleProvider.java @@ -9,8 +9,6 @@ import android.bluetooth.BluetoothAdapter; import android.content.Context; import android.os.Parcel; -import com.google.android.gms.tasks.Task; - import org.jni_zero.CalledByNative; import org.jni_zero.NativeMethods; @@ -23,7 +21,6 @@ import org.chromium.build.annotations.Nullable; import org.chromium.chrome.browser.enterprise.util.EnterpriseInfo; import org.chromium.components.browser_ui.notifications.NotificationProxyUtils; import org.chromium.components.externalauth.ExternalAuthUtils; -import org.chromium.components.webauthn.Fido2ApiCall; /** * Provides linking information to the native side. @@ -83,37 +80,7 @@ public class CableAuthenticatorModuleProvider { ok = false; } - if (!ok) { - CableAuthenticatorModuleProviderJni.get().onHaveLinkingInformation(pointer, null); - return; - } - - Fido2ApiCall call = - new Fido2ApiCall( - ContextUtils.getApplicationContext(), Fido2ApiCall.FIRST_PARTY_API); - Parcel args = call.start(); - Fido2ApiCall.ByteArrayResult result = new Fido2ApiCall.ByteArrayResult(); - args.writeStrongBinder(result); - Task task = - call.run( - Fido2ApiCall.METHOD_GET_LINK_INFO, - Fido2ApiCall.TRANSACTION_GET_LINK_INFO, - args, - result); - task.addOnSuccessListener( - linkInfo -> { - CableAuthenticatorModuleProviderJni.get() - .onHaveLinkingInformation(pointer, linkInfo); - }) - .addOnFailureListener( - exception -> { - Log.e( - TAG, - "Call to get linking information from Play Services failed", - exception); - CableAuthenticatorModuleProviderJni.get() - .onHaveLinkingInformation(pointer, null); - }); + CableAuthenticatorModuleProviderJni.get().onHaveLinkingInformation(pointer, null); } @NativeMethods diff --git a/chrome/browser/webid/BUILD.gn b/chrome/browser/webid/BUILD.gn --- a/chrome/browser/webid/BUILD.gn +++ b/chrome/browser/webid/BUILD.gn @@ -16,8 +16,6 @@ if (is_android) { "android/java/src/org/chromium/chrome/browser/webid/TestIdP.java", ] deps = [ - "$google_play_services_package:google_play_services_identity_credentials_java", - "$google_play_services_package:google_play_services_tasks_java", "//base:base_java", "//base:service_loader_java", "//content/public/android:content_java", @@ -49,7 +47,6 @@ if (is_android) { deps = [ ":java", - "$google_play_services_package:google_play_services_identity_credentials_java", "//base:base_junit_test_support", "//content/public/android:content_java", "//third_party/androidx:androidx_credentials_credentials_java", diff --git a/chrome/browser/webid/android/java/src/org/chromium/chrome/browser/webid/DigitalCredentialsCreationDelegate.java b/chrome/browser/webid/android/java/src/org/chromium/chrome/browser/webid/DigitalCredentialsCreationDelegate.java --- a/chrome/browser/webid/android/java/src/org/chromium/chrome/browser/webid/DigitalCredentialsCreationDelegate.java +++ b/chrome/browser/webid/android/java/src/org/chromium/chrome/browser/webid/DigitalCredentialsCreationDelegate.java @@ -19,10 +19,6 @@ import androidx.credentials.exceptions.CreateCredentialInterruptedException; import androidx.credentials.exceptions.CreateCredentialUnknownException; import androidx.credentials.provider.PendingIntentHandler; -import com.google.android.gms.identitycredentials.CreateCredentialRequest; -import com.google.android.gms.identitycredentials.IdentityCredentialClient; -import com.google.android.gms.identitycredentials.IdentityCredentialManager; - import org.json.JSONException; import org.json.JSONObject; @@ -52,173 +48,7 @@ public class DigitalCredentialsCreationDelegate { @OptIn(markerClass = androidx.credentials.ExperimentalDigitalCredentialApi.class) public Promise create( WindowAndroid windowAndroid, String origin, String request) { - Activity window = windowAndroid.getActivity().get(); - if (window == null) return Promise.rejected(); - - final IdentityCredentialClient client; - try { - client = IdentityCredentialManager.Companion.getClient(window); - } catch (Exception e) { - // Thrown when running in phones without the most current GMS - // version. - return Promise.rejected(); - } - - final Promise result = new Promise<>(); - - ResultReceiver resultReceiver = - new ResultReceiver(new Handler(Looper.getMainLooper())) { - @Override - protected void onReceiveResult(int code, Bundle data) { - if (!result.isPending()) { - // Promises don't support duplicate calls to fulfill/reject. If the - // promise has been fulfilled/rejected already (e.g. due to erroneous - // exception during the API call), return immediately. - return; - } - Log.d(TAG, "Received a response"); - Intent providerData = - data == null - ? null - : IntentUtils.safeGetParcelable( - data, BUNDLE_KEY_PROVIDER_DATA); - - if (code != Activity.RESULT_OK) { - androidx.credentials.exceptions.CreateCredentialException exception = - providerData != null - ? PendingIntentHandler - .retrieveCreateCredentialException(providerData) - : null; - handleCreateCredentialException(code, exception, result); - return; - } - - if (providerData == null) { - Log.d(TAG, "Response doesn't contain providerData"); - result.reject( - new CreateCredentialUnknownException( - "Response doesn't contain providerData")); - return; - } - - var response = - PendingIntentHandler.retrieveCreateCredentialResponse( - TYPE_DIGITAL_CREDENTIAL, providerData); - if (response == null) { - androidx.credentials.exceptions.CreateCredentialException exception = - PendingIntentHandler.retrieveCreateCredentialException( - providerData); - if (exception != null) { - handleCreateCredentialException(code, exception, result); - } else { - result.reject( - new CreateCredentialUnknownException("empty response")); - } - return; - } - String responseJson = - response.getData() - .getString("androidx.credentials.BUNDLE_KEY_RESPONSE_JSON"); - if (responseJson == null) { - result.reject( - new CreateCredentialUnknownException( - "Response doesn't contain responseJson")); - return; - } - Log.d(TAG, "Response JSON: " + responseJson); - - DigitalCredential digitalCredential = parseResponse(responseJson); - if (digitalCredential == null) { - result.reject( - new CreateCredentialUnknownException( - "Failed to parse response")); - return; - } - result.fulfill(digitalCredential); - } - }; - - Bundle requestBundle = new Bundle(); - requestBundle.putString("androidx.credentials.BUNDLE_KEY_REQUEST_JSON", request); - CreateCredentialRequest createRequest = - new CreateCredentialRequest( - TYPE_DIGITAL_CREDENTIAL, - /* credentialData= */ requestBundle, - /* candidateQueryData= */ new Bundle(), - origin, - request, - resultReceiver); - - client.createCredential(createRequest) - .addOnSuccessListener( - response -> { - if (response.getPendingIntent() == null) { - Log.d(TAG, "Response doesn't contain pendingIntent"); - result.reject( - new CreateCredentialUnknownException( - "Response doesn't contain pendingIntent")); - return; - } - Log.d(TAG, "Sending an intent for sender"); - Log.d(TAG, request); - int requestCode = - windowAndroid.showCancelableIntent( - response.getPendingIntent(), - (resultCode, intent) -> { - if (resultCode != Activity.RESULT_OK - && result.isPending()) { - androidx.credentials.exceptions - .CreateCredentialException - exception = - intent != null - ? PendingIntentHandler - .retrieveCreateCredentialException( - intent) - : null; - handleCreateCredentialException( - resultCode, exception, result); - } - }, - null); - if (requestCode == WindowAndroid.START_INTENT_FAILURE) { - Log.e(TAG, "Sending an intent for sender failed"); - result.reject( - new CreateCredentialUnknownException( - "Failed to start intent")); - } - }) - .addOnFailureListener( - e -> { - if (!result.isPending()) { - return; - } - if (e - instanceof - com.google.android.gms.identitycredentials - .CreateCredentialException) { - String exceptionType = - ((com.google.android.gms.identitycredentials - .CreateCredentialException) - e) - .getType(); - if (TYPE_USER_CANCELED.equals(exceptionType)) { - result.reject( - new CreateCredentialCancellationException( - e.getMessage())); - } else if (TYPE_INTERRUPTED.equals(exceptionType)) { - result.reject( - new CreateCredentialInterruptedException( - e.getMessage())); - } else { - result.reject( - new CreateCredentialUnknownException(e.getMessage())); - } - } else { - result.reject(e); - } - }); - - return result; + return Promise.rejected(); } private static @Nullable DigitalCredential parseResponse(String responseJson) { diff --git a/chrome/browser/webid/android/java/src/org/chromium/chrome/browser/webid/DigitalCredentialsPresentationDelegate.java b/chrome/browser/webid/android/java/src/org/chromium/chrome/browser/webid/DigitalCredentialsPresentationDelegate.java --- a/chrome/browser/webid/android/java/src/org/chromium/chrome/browser/webid/DigitalCredentialsPresentationDelegate.java +++ b/chrome/browser/webid/android/java/src/org/chromium/chrome/browser/webid/DigitalCredentialsPresentationDelegate.java @@ -21,11 +21,6 @@ import androidx.credentials.exceptions.GetCredentialUnknownException; import androidx.credentials.exceptions.NoCredentialException; import androidx.credentials.provider.PendingIntentHandler; -import com.google.android.gms.identitycredentials.CredentialOption; -import com.google.android.gms.identitycredentials.GetCredentialRequest; -import com.google.android.gms.identitycredentials.IdentityCredentialClient; -import com.google.android.gms.identitycredentials.IdentityCredentialManager; - import org.json.JSONException; import org.json.JSONObject; @@ -63,141 +58,7 @@ public class DigitalCredentialsPresentationDelegate { Activity window = windowAndroid.getActivity().get(); if (window == null) return Promise.rejected(); - final IdentityCredentialClient client; - try { - client = IdentityCredentialManager.Companion.getClient(window); - } catch (Exception e) { - // Thrown when running in phones without the most current GMS - // version. - return Promise.rejected(); - } - - final Promise result = new Promise<>(); - - ResultReceiver resultReceiver = - new ResultReceiver(new Handler(Looper.getMainLooper())) { - @Override - protected void onReceiveResult(int code, Bundle data) { - if (!result.isPending()) { - return; - } - Log.d(TAG, "Received a response"); - try { - Intent providerData = - data == null - ? null - : IntentUtils.safeGetParcelable( - data, BUNDLE_KEY_PROVIDER_DATA); - if (code != Activity.RESULT_OK) { - androidx.credentials.exceptions.GetCredentialException exception = - providerData != null - ? PendingIntentHandler - .retrieveGetCredentialException( - providerData) - : null; - handleGetCredentialException(code, exception, result); - return; - } - var credential = extractDigitalCredentialFromIntent(providerData); - if (credential == null) { - result.reject( - new GetCredentialUnknownException( - "Response does not contain a credential")); - } else { - result.fulfill(credential); - } - } catch (androidx.credentials.exceptions.GetCredentialException e) { - handleGetCredentialException(code, e, result); - } catch (Exception e) { - Log.e(TAG, e.toString()); - result.reject(new GetCredentialUnknownException(e.getMessage())); - } - } - }; - - GetDigitalCredentialOption option = new GetDigitalCredentialOption(request); - client.getCredential( - new GetCredentialRequest( - Arrays.asList( - new CredentialOption( - option.getType(), - option.getRequestData(), - option.getCandidateQueryData(), - request, - "", - "")), - new Bundle(), - origin, - resultReceiver)) - .addOnSuccessListener( - response -> { - if (response.getPendingIntent() == null) { - Log.d(TAG, "Response doesn't contain pendingIntent"); - result.reject( - new GetCredentialUnknownException( - "Response doesn't contain pendingIntent")); - return; - } - Log.d(TAG, "Sending an intent for sender"); - Log.d(TAG, request); - int requestCode = - windowAndroid.showCancelableIntent( - response.getPendingIntent(), - (resultCode, intent) -> { - if (resultCode != Activity.RESULT_OK - && result.isPending()) { - androidx.credentials.exceptions - .GetCredentialException - exception = - intent != null - ? PendingIntentHandler - .retrieveGetCredentialException( - intent) - : null; - handleGetCredentialException( - resultCode, exception, result); - } - }, - null); - if (requestCode == WindowAndroid.START_INTENT_FAILURE) { - Log.e(TAG, "Sending an intent for sender failed"); - result.reject( - new GetCredentialUnknownException( - "Failed to start intent")); - } - }) - .addOnFailureListener( - e -> { - if (!result.isPending()) { - return; - } - if (e - instanceof - com.google.android.gms.identitycredentials - .GetCredentialException) { - String exceptionType = - ((com.google.android.gms.identitycredentials - .GetCredentialException) - e) - .getType(); - if (TYPE_USER_CANCELED.equals(exceptionType)) { - result.reject( - new GetCredentialCancellationException(e.getMessage())); - } else if (TYPE_NO_CREDENTIAL.equals(exceptionType)) { - result.reject(new NoCredentialException(e.getMessage())); - } else if (TYPE_INTERRUPTED.equals(exceptionType)) { - result.reject( - new GetCredentialInterruptedException(e.getMessage())); - } else { - result.reject( - new GetCredentialUnknownException(e.getMessage())); - } - } else { - result.reject(e); - } - }); - - return result; + return Promise.rejected(); } /** @@ -210,9 +71,10 @@ public class DigitalCredentialsPresentationDelegate { * @throws JSONException If JSON parsing fails. */ @VisibleForTesting - public static @Nullable DigitalCredential extractDigitalCredentialFromIntent( + public static @Nullable DigitalCredential extractDigitalCredentialFromResponseBundle( @Nullable Intent intent) throws androidx.credentials.exceptions.GetCredentialException, JSONException { + if ((true)) throw new JSONException("not reached"); if (intent == null) { return null; } diff --git a/chrome/test/android/BUILD.gn b/chrome/test/android/BUILD.gn --- a/chrome/test/android/BUILD.gn +++ b/chrome/test/android/BUILD.gn @@ -397,8 +397,6 @@ android_library("chrome_java_integration_test_support") { deps = [ ":chrome_java_test_support_common", - "$google_play_services_package:google_play_services_base_java", - "$google_play_services_package:google_play_services_basement_java", "//base:base_java", "//base:base_java_test_support", "//base:holder_java", diff --git a/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java b/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java --- a/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java +++ b/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java @@ -2946,14 +2946,6 @@ public class ExternalNavigationHandler implements ExternalNavigationHelper { * @return Whether the given intent is going to open an Instant App. */ private static boolean isIntentToInstantApp(Intent intent) { - if (INSTANT_APP_SUPERVISOR_PKG.equals(intent.getPackage())) return true; - - String intentAction = intent.getAction(); - for (String action : INSTANT_APP_START_ACTIONS) { - if (action.equals(intentAction)) { - return true; - } - } return false; } 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 @@ -6,8 +6,6 @@ import("//build/config/android/rules.gni") android_library("java") { deps = [ - "$google_play_services_package:google_play_services_base_java", - "$google_play_services_package:google_play_services_basement_java", "//base:base_java", "//base:service_loader_java", "//components/embedder_support/android:util_java", @@ -25,7 +23,6 @@ android_library("java") { robolectric_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 @@ -17,9 +17,6 @@ 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.ResettersForTesting; @@ -31,7 +28,6 @@ import org.chromium.base.task.TaskTraits; import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; import org.chromium.components.embedder_support.util.Origin; -import org.chromium.gms.ChromiumPlayServicesAvailability; /** * Utility class for external authentication tools. @@ -176,9 +172,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; } /** @@ -193,21 +187,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(TaskTraits.UI_DEFAULT, errorHandlerTask); - } return false; } @@ -260,12 +239,7 @@ public class ExternalAuthUtils { * @return The code produced by calling the external code */ protected int checkGooglePlayServicesAvailable(final Context context) { - // TODO(crbug.com/41233964): Temporarily allowing disk access until more permanent fix is - // in. - try (StrictModeContext ignored = StrictModeContext.allowDiskWrites(); - TraceEvent e = TraceEvent.scoped("checkGooglePlayServicesAvailable")) { - return ChromiumPlayServicesAvailability.getGooglePlayServicesConnectionResult(context); - } + return 1; /*SERVICE_MISSING*/ } /** @@ -276,7 +250,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; } /** @@ -286,7 +260,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; import org.chromium.build.annotations.NullMarked; @@ -90,7 +88,6 @@ public abstract class UserRecoverableErrorHandler { if (!sNotificationShown.getAndSet(true)) { return; } - GoogleApiAvailability.getInstance().showErrorNotification(context, errorCode); } } @@ -178,14 +175,9 @@ public abstract class UserRecoverableErrorHandler { } Dialog dialog = mDialog; if (dialog == null) { - dialog = - GoogleApiAvailability.getInstance() - .getErrorDialog(mActivity, errorCode, NO_RESPONSE_REQUIRED); assert dialog != null : "code was " + errorCode; mDialog = dialog; mErrorCode = errorCode; - - DialogUserActionRecorder.createAndAttachToDialog(dialog); } // This can happen if |errorCode| is ConnectionResult.SERVICE_INVALID. if (!dialog.isShowing()) { diff --git a/components/gcm_driver/android/java/src/org/chromium/components/gcm_driver/GoogleCloudMessagingV2.java b/components/gcm_driver/android/java/src/org/chromium/components/gcm_driver/GoogleCloudMessagingV2.java --- a/components/gcm_driver/android/java/src/org/chromium/components/gcm_driver/GoogleCloudMessagingV2.java +++ b/components/gcm_driver/android/java/src/org/chromium/components/gcm_driver/GoogleCloudMessagingV2.java @@ -136,6 +136,8 @@ public class GoogleCloudMessagingV2 implements GoogleCloudMessagingSubscriber { } private Intent registerRpc(Bundle data) throws IOException { + if ((true)) + throw new IOException("Google Play Services missing"); if (Looper.getMainLooper() == Looper.myLooper()) { throw new IOException(ERROR_MAIN_THREAD); } diff --git a/components/gcm_driver/gcm_client_impl.cc b/components/gcm_driver/gcm_client_impl.cc --- a/components/gcm_driver/gcm_client_impl.cc +++ b/components/gcm_driver/gcm_client_impl.cc @@ -431,6 +431,7 @@ void GCMClientImpl::StartGCM() { void GCMClientImpl::InitializeMCSClient() { DCHECK(network_connection_tracker_); + if ((true)) return; std::vector endpoints; endpoints.push_back(gservices_settings_.GetMCSMainEndpoint()); GURL fallback_endpoint = gservices_settings_.GetMCSFallbackEndpoint(); @@ -599,6 +600,7 @@ void GCMClientImpl::AddHeartbeatInterval(const std::string& scope, int interval_ms) { DCHECK(io_task_runner_->RunsTasksInCurrentSequence()); DCHECK(mcs_client_); + if ((true)) return; mcs_client_->AddHeartbeatInterval(scope, interval_ms); } @@ -610,6 +612,7 @@ void GCMClientImpl::RemoveHeartbeatInterval(const std::string& scope) { void GCMClientImpl::StartCheckin() { DCHECK(io_task_runner_->RunsTasksInCurrentSequence()); + if ((true)) return; // Make sure no checkin is in progress. if (checkin_request_) @@ -683,6 +686,7 @@ void GCMClientImpl::SetGServicesSettingsCallback(bool success) { void GCMClientImpl::SchedulePeriodicCheckin() { DCHECK(io_task_runner_->RunsTasksInCurrentSequence()); + if ((true)) return; // Make sure no checkin is in progress. if (checkin_request_.get() || !device_checkin_info_.accounts_set) diff --git a/components/gcm_driver/instance_id/android/BUILD.gn b/components/gcm_driver/instance_id/android/BUILD.gn --- a/components/gcm_driver/instance_id/android/BUILD.gn +++ b/components/gcm_driver/instance_id/android/BUILD.gn @@ -16,7 +16,6 @@ generate_jni("test_support_jni_headers") { android_library("instance_id_driver_java") { deps = [ - "$google_play_services_package:google_play_services_iid_java", "//base:base_java", "//build/android:build_java", "//components/gcm_driver/android:gcm_driver_java", @@ -31,14 +30,12 @@ android_library("instance_id_driver_java") { sources = [ "java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java", - "java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDWithSubtype.java", ] } android_library("instance_id_driver_test_support_java") { deps = [ ":instance_id_driver_java", - "$google_play_services_package:google_play_services_iid_java", "//third_party/jni_zero:jni_zero_java", ] diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java b/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java --- a/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java +++ b/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java @@ -31,8 +31,6 @@ public class InstanceIDBridge { * Underlying InstanceIDWithSubtype. May be shared by multiple InstanceIDBridges. Must be * initialized on a background thread. */ - @SuppressWarnings("NullAway.Init") - private InstanceIDWithSubtype mInstanceID; private static boolean sBlockOnAsyncTasksForTesting; @@ -78,7 +76,7 @@ public class InstanceIDBridge { new BridgeAsyncTask() { @Override protected String doBackgroundWork() { - return mInstanceID.getId(); + return ""; } @Override @@ -94,7 +92,7 @@ public class InstanceIDBridge { new BridgeAsyncTask() { @Override protected Long doBackgroundWork() { - return mInstanceID.getCreationTime(); + return 0L; } @Override @@ -119,21 +117,7 @@ public class InstanceIDBridge { new BridgeAsyncTask() { @Override protected String doBackgroundWork() { - try { - // TODO(crbug.com/40789764): Migrate stored LazySubscriptionsManager data to - // SubscriptionFlagManager. - LazySubscriptionsManager.storeLazinessInformation( - LazySubscriptionsManager.buildSubscriptionUniqueId( - mSubtype, authorizedEntity), - (flags & InstanceIDFlags.IS_LAZY) == InstanceIDFlags.IS_LAZY); - SubscriptionFlagManager.setFlags( - SubscriptionFlagManager.buildSubscriptionUniqueId( - mSubtype, authorizedEntity), - flags); - return mInstanceID.getToken(authorizedEntity, scope); - } catch (IOException ex) { return ""; - } } @Override @@ -152,22 +136,7 @@ public class InstanceIDBridge { new BridgeAsyncTask() { @Override protected Boolean doBackgroundWork() { - try { - mInstanceID.deleteToken(authorizedEntity, scope); - String subscriptionId = - LazySubscriptionsManager.buildSubscriptionUniqueId( - mSubtype, authorizedEntity); - if (LazySubscriptionsManager.isSubscriptionLazy(subscriptionId)) { - LazySubscriptionsManager.deletePersistedMessagesForSubscriptionId( - subscriptionId); - } - SubscriptionFlagManager.clearFlags( - SubscriptionFlagManager.buildSubscriptionUniqueId( - mSubtype, authorizedEntity)); - return true; - } catch (IOException ex) { - return false; - } + return false; } @Override @@ -184,12 +153,7 @@ public class InstanceIDBridge { new BridgeAsyncTask() { @Override protected Boolean doBackgroundWork() { - try { - mInstanceID.deleteInstanceID(); - return true; - } catch (IOException ex) { - return false; - } + return true; } @Override @@ -220,24 +184,12 @@ public class InstanceIDBridge { protected abstract void sendResultToNative(Result result); public void execute() { - if (sBlockOnAsyncTasksForTesting) { - if (mInstanceID == null) { - mInstanceID = InstanceIDWithSubtype.getInstance(mSubtype); - } - sendResultToNative(doBackgroundWork()); - return; - } AsyncTask task = new AsyncTask<>() { @Override @SuppressWarnings( "NoSynchronizedThisCheck") // Only used/accessible by native. protected Result doInBackground() { - synchronized (InstanceIDBridge.this) { - if (mInstanceID == null) { - mInstanceID = InstanceIDWithSubtype.getInstance(mSubtype); - } - } return doBackgroundWork(); } diff --git a/components/installedapp/android/java/src/org/chromium/components/installedapp/InstalledAppProviderImpl.java b/components/installedapp/android/java/src/org/chromium/components/installedapp/InstalledAppProviderImpl.java --- a/components/installedapp/android/java/src/org/chromium/components/installedapp/InstalledAppProviderImpl.java +++ b/components/installedapp/android/java/src/org/chromium/components/installedapp/InstalledAppProviderImpl.java @@ -65,7 +65,7 @@ public class InstalledAppProviderImpl implements InstalledAppProvider { // The maximum number of related apps declared in the Web Manifest taken into account when // determining whether the related app is installed and mutually related. - @VisibleForTesting static final int MAX_ALLOWED_RELATED_APPS = 3; + @VisibleForTesting static final int MAX_ALLOWED_RELATED_APPS = 0; private static final String TAG = "InstalledAppProvider"; diff --git a/components/media_router/browser/android/BUILD.gn b/components/media_router/browser/android/BUILD.gn --- a/components/media_router/browser/android/BUILD.gn +++ b/components/media_router/browser/android/BUILD.gn @@ -12,10 +12,6 @@ android_library("java") { resources_package = "org.chromium.components.media_router" deps = [ ":java_resources", - "$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_cast_framework_java", - "$google_play_services_package:google_play_services_cast_java", "//base:base_java", "//build/android:build_java", "//components/browser_ui/media/android:java", @@ -77,8 +73,6 @@ android_library("java") { android_library("cast_options_provider_java") { sources = [ "java/src/org/chromium/components/media_router/caf/CastOptionsProvider.java" ] deps = [ - "$google_play_services_package:google_play_services_cast_framework_java", - "$google_play_services_package:google_play_services_cast_java", ] } @@ -104,7 +98,6 @@ android_library("test_support_java") { ":java", ":java_resources", ":test_jni_headers", - "$google_play_services_package:google_play_services_cast_java", "//base:base_java", "//base:base_java_test_support", "//components/browser_ui/media/android:java", @@ -148,10 +141,6 @@ robolectric_library("junit") { deps = [ ":java", ":test_support_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_cast_framework_java", - "$google_play_services_package:google_play_services_cast_java", "//base:base_java", "//base:base_java_test_support", "//base:base_junit_test_support", 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 @@ -9,9 +9,6 @@ import static org.chromium.build.NullUtil.assumeNonNull; import androidx.annotation.VisibleForTesting; import androidx.mediarouter.media.MediaRouter; -import com.google.android.gms.common.ConnectionResult; -import com.google.android.gms.common.GoogleApiAvailability; - import org.jni_zero.CalledByNative; import org.jni_zero.JNINamespace; import org.jni_zero.JniType; @@ -47,23 +44,7 @@ public class BrowserMediaRouter implements MediaRouteManager { new MediaRouteProvider.Factory() { @Override public void addProviders(MediaRouteManager manager) { - int googleApiAvailabilityResult = - GoogleApiAvailability.getInstance() - .isGooglePlayServicesAvailable( - ContextUtils.getApplicationContext(), - MIN_GOOGLE_PLAY_SERVICES_APK_VERSION); - if (googleApiAvailabilityResult != ConnectionResult.SUCCESS) { - GoogleApiAvailability.getInstance() - .showErrorNotification( - ContextUtils.getApplicationContext(), - googleApiAvailabilityResult); - return; - } - MediaRouteProvider cafProvider = CafMediaRouteProvider.create(manager); - manager.addMediaRouteProvider(cafProvider); - MediaRouteProvider remotingProvider = - CafRemotingMediaRouteProvider.create(manager); - manager.addMediaRouteProvider(remotingProvider); + return; } }; diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/MediaSink.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/MediaSink.java --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/MediaSink.java +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/MediaSink.java @@ -7,8 +7,6 @@ package org.chromium.components.media_router; import androidx.mediarouter.media.MediaRouter; import androidx.mediarouter.media.MediaRouter.RouteInfo; -import com.google.android.gms.cast.CastDevice; - import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; @@ -16,30 +14,15 @@ import org.chromium.build.annotations.Nullable; @NullMarked public class MediaSink { private static final String CAST_SINK_URN_PREFIX = "urn:x-org.chromium:media:sink:cast-"; - private final String mId; - private final String mName; - private final @Nullable CastDevice mDevice; - - /** - * Constructor. - * @param id A unique identifier of the sink. - * @param name A user friendly name of the sink. - * @param device {@link CastDevice} corresponding to this sink. - */ - public MediaSink(String id, String name, @Nullable CastDevice device) { - mId = id; - mName = name; - mDevice = device; - } /** @return The unique identifier of the sink. */ public String getId() { - return mId; + return ""; } /** @return The user friendly name of the sink. */ public String getName() { - return mName; + return ""; } /** @return The valid URN representing the sink. */ @@ -47,17 +30,8 @@ public class MediaSink { return CAST_SINK_URN_PREFIX + getId(); } - public @Nullable CastDevice getDevice() { - return mDevice; - } - @Override public boolean equals(Object o) { - if (o == this) return true; - if (o instanceof MediaSink) { - MediaSink other = (MediaSink) o; - return mId.equals(other.getId()) && mName.equals(other.getName()); - } return false; } @@ -65,23 +39,15 @@ public class MediaSink { public int hashCode() { final int prime = 31; int result = 1; - result = prime * result + ((mId == null) ? 0 : mId.hashCode()); - result = prime * result + ((mName == null) ? 0 : mName.hashCode()); return result; } - @Override - public String toString() { - return String.format("MediaSink: %s, %s", getId(), getName()); - } - /** * @param route The route information provided by Android. * @return A new MediaSink instance corresponding to the specified {@link RouteInfo}. */ public static MediaSink fromRoute(MediaRouter.RouteInfo route) { - return new MediaSink( - route.getId(), route.getName(), CastDevice.getFromBundle(route.getExtras())); + return null; } /** @@ -91,10 +57,6 @@ public class MediaSink { * found, null otherwise. */ public static @Nullable MediaSink fromSinkId(String sinkId, MediaRouter router) { - for (MediaRouter.RouteInfo route : router.getRoutes()) { - MediaSink sink = MediaSink.fromRoute(route); - if (sink.getId().equals(sinkId)) return sink; - } return null; } } diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/MediaStatusBridge.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/MediaStatusBridge.java --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/MediaStatusBridge.java +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/MediaStatusBridge.java @@ -4,10 +4,6 @@ package org.chromium.components.media_router; -import com.google.android.gms.cast.MediaInfo; -import com.google.android.gms.cast.MediaMetadata; -import com.google.android.gms.cast.MediaStatus; - import org.jni_zero.CalledByNative; import org.jni_zero.JNINamespace; @@ -21,11 +17,6 @@ import org.chromium.build.annotations.Nullable; @JNINamespace("media_router") @NullMarked public class MediaStatusBridge { - private final MediaStatus mStatus; - - public MediaStatusBridge(MediaStatus status) { - mStatus = status; - } /** * Gets the play state of the stream. Return values are defined as such: @@ -38,7 +29,7 @@ public class MediaStatusBridge { */ @CalledByNative public int playerState() { - return mStatus.getPlayerState(); + return 0; } /** @@ -52,7 +43,7 @@ public class MediaStatusBridge { */ @CalledByNative public int idleReason() { - return mStatus.getIdleReason(); + return 0; } /** @@ -61,43 +52,37 @@ public class MediaStatusBridge { */ @CalledByNative public @Nullable String title() { - MediaInfo info = mStatus.getMediaInfo(); - if (info == null) return ""; - - MediaMetadata metadata = info.getMetadata(); - if (metadata == null) return ""; - - return metadata.getString(MediaMetadata.KEY_TITLE); + return ""; } /** If this is true, the media can be played and paused. */ @CalledByNative public boolean canPlayPause() { - return mStatus.isMediaCommandSupported(MediaStatus.COMMAND_PAUSE); + return false; } /** If this is true, the media can be muted and unmuted. */ @CalledByNative public boolean canMute() { - return mStatus.isMediaCommandSupported(MediaStatus.COMMAND_TOGGLE_MUTE); + return false; } /** If this is true, the media's volume can be changed. */ @CalledByNative public boolean canSetVolume() { - return mStatus.isMediaCommandSupported(MediaStatus.COMMAND_SET_VOLUME); + return false; } /** If this is true, the media's current playback position can be chaxnged. */ @CalledByNative public boolean canSeek() { - return mStatus.isMediaCommandSupported(MediaStatus.COMMAND_SEEK); + return false; } /** Returns the stream's mute state. */ @CalledByNative public boolean isMuted() { - return mStatus.isMute(); + return false; } /** @@ -107,7 +92,7 @@ public class MediaStatusBridge { */ @CalledByNative public double volume() { - return mStatus.getStreamVolume(); + return 0.0; } /** @@ -116,15 +101,12 @@ public class MediaStatusBridge { */ @CalledByNative public long duration() { - MediaInfo info = mStatus.getMediaInfo(); - if (info == null) return 0; - - return info.getStreamDuration(); + return 0; } /** Current playback position, in ms. Must be less than or equal to |duration|. */ @CalledByNative public long currentTime() { - return mStatus.getStreamPosition(); + return 0; } } diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/BaseNotificationController.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/BaseNotificationController.java --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/BaseNotificationController.java +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/BaseNotificationController.java @@ -8,10 +8,6 @@ import static org.chromium.build.NullUtil.assumeNonNull; import android.content.Intent; -import com.google.android.gms.cast.CastDevice; -import com.google.android.gms.cast.MediaStatus; -import com.google.android.gms.cast.framework.media.RemoteMediaClient; - import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; import org.chromium.build.annotations.RequiresNonNull; @@ -68,22 +64,6 @@ public abstract class BaseNotificationController public void onStatusUpdated() { if (mNotificationBuilder == null) return; if (!mSessionController.isConnected()) return; - assumeNonNull(mSessionController.getRemoteMediaClient()); - - MediaStatus mediaStatus = mSessionController.getRemoteMediaClient().getMediaStatus(); - if (mediaStatus == null) return; - - int playerState = mediaStatus.getPlayerState(); - if (playerState == MediaStatus.PLAYER_STATE_PAUSED - || playerState == MediaStatus.PLAYER_STATE_PLAYING) { - mNotificationBuilder.setPaused(playerState != MediaStatus.PLAYER_STATE_PLAYING); - mNotificationBuilder.setActions( - MediaNotificationInfo.ACTION_STOP | MediaNotificationInfo.ACTION_PLAY_PAUSE); - } else { - mNotificationBuilder.setActions(MediaNotificationInfo.ACTION_STOP); - } - assumeNonNull(MediaRouterClient.getInstance()); - MediaRouterClient.getInstance().showNotification(mNotificationBuilder.build()); } /** Called when media metadata updated. */ @@ -103,37 +83,6 @@ public abstract class BaseNotificationController mNotificationBuilder.setMetadata(notificationMetadata); if (!mSessionController.isConnected()) return; - assumeNonNull(mSessionController.getSession()); - - CastDevice castDevice = mSessionController.getSession().getCastDevice(); - if (castDevice != null) { - String friendlyName = castDevice.getFriendlyName(); - if (friendlyName != null && !friendlyName.isEmpty()) { - notificationMetadata.setTitle(friendlyName); - } - } - - RemoteMediaClient remoteMediaClient = mSessionController.getRemoteMediaClient(); - assumeNonNull(remoteMediaClient); - - com.google.android.gms.cast.MediaInfo info = remoteMediaClient.getMediaInfo(); - if (info == null) return; - - com.google.android.gms.cast.MediaMetadata metadata = info.getMetadata(); - if (metadata == null) return; - - String title = metadata.getString(com.google.android.gms.cast.MediaMetadata.KEY_TITLE); - if (title != null && !title.isEmpty()) notificationMetadata.setTitle(title); - - String artist = metadata.getString(com.google.android.gms.cast.MediaMetadata.KEY_ARTIST); - if (artist == null) { - artist = metadata.getString(com.google.android.gms.cast.MediaMetadata.KEY_ALBUM_ARTIST); - } - if (artist != null) notificationMetadata.setArtist(artist); - - String album = - metadata.getString(com.google.android.gms.cast.MediaMetadata.KEY_ALBUM_TITLE); - if (album != null) notificationMetadata.setAlbum(album); } ///////////////////////////////////////////////////////////////////////////////////////////// @@ -141,18 +90,10 @@ public abstract class BaseNotificationController @Override public void onPlay(int actionSource) { - if (!mSessionController.isConnected()) return; - assumeNonNull(mSessionController.getRemoteMediaClient()); - - mSessionController.getRemoteMediaClient().play(); } @Override public void onPause(int actionSource) { - if (!mSessionController.isConnected()) return; - assumeNonNull(mSessionController.getRemoteMediaClient()); - - mSessionController.getRemoteMediaClient().pause(); } @Override diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/BaseSessionController.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/BaseSessionController.java --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/BaseSessionController.java +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/BaseSessionController.java @@ -6,15 +6,10 @@ package org.chromium.components.media_router.caf; import static org.chromium.build.NullUtil.assumeNonNull; -import com.google.android.gms.cast.CastDevice; -import com.google.android.gms.cast.framework.CastSession; -import com.google.android.gms.cast.framework.media.RemoteMediaClient; - import org.chromium.base.Log; import org.chromium.build.annotations.EnsuresNonNullIf; import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; -import org.chromium.components.media_router.CastSessionUtil; import org.chromium.components.media_router.FlingingController; import org.chromium.components.media_router.MediaSink; import org.chromium.components.media_router.MediaSource; @@ -47,15 +42,12 @@ public abstract class BaseSessionController { void onMetadataUpdated(); } - private @Nullable CastSession mCastSession; private final CafBaseMediaRouteProvider mProvider; private @Nullable CreateRouteRequestInfo mRouteCreationInfo; - private final RemoteMediaClient.Callback mRemoteMediaClientCallback; private final List mCallbacks = new ArrayList<>(); public BaseSessionController(CafBaseMediaRouteProvider provider) { mProvider = provider; - mRemoteMediaClientCallback = new RemoteMediaClientCallback(); } public void addCallback(Callback callback) { @@ -68,10 +60,6 @@ public abstract class BaseSessionController { public void requestSessionLaunch() { mRouteCreationInfo = mProvider.getPendingCreateRouteRequestInfo(); - assumeNonNull(mRouteCreationInfo); - CastUtils.getCastContext() - .setReceiverApplicationId(mRouteCreationInfo.getMediaSource().getApplicationId()); - // When the user clicks a route on the MediaRouteChooserDialog, we intercept the click event // and do not select the route. Instead the route selection is postponed to here. This will // trigger CAF to launch the session. @@ -90,137 +78,43 @@ public abstract class BaseSessionController { return mRouteCreationInfo; } - public @Nullable CastSession getSession() { - return mCastSession; - } - - public @Nullable RemoteMediaClient getRemoteMediaClient() { - return isConnected() ? mCastSession.getRemoteMediaClient() : null; - } - public abstract BaseNotificationController getNotificationController(); public void endSession() { - CastUtils.getCastContext().getSessionManager().endCurrentSession(/* stopCasting= */ true); - CastUtils.getCastContext().setReceiverApplicationId(null); } public List getCapabilities() { List capabilities = new ArrayList<>(); - if (mCastSession == null || !mCastSession.isConnected()) return capabilities; - CastDevice device = mCastSession.getCastDevice(); - assumeNonNull(device); - if (device.hasCapability(CastDevice.CAPABILITY_AUDIO_IN)) { - capabilities.add("audio_in"); - } - if (device.hasCapability(CastDevice.CAPABILITY_AUDIO_OUT)) { - capabilities.add("audio_out"); - } - if (device.hasCapability(CastDevice.CAPABILITY_VIDEO_IN)) { - capabilities.add("video_in"); - } - if (device.hasCapability(CastDevice.CAPABILITY_VIDEO_OUT)) { - capabilities.add("video_out"); - } return capabilities; } @EnsuresNonNullIf("mCastSession") public boolean isConnected() { - return mCastSession != null && mCastSession.isConnected(); + return false; } private void updateRemoteMediaClient(String message) { if (!isConnected()) return; - assumeNonNull(mCastSession.getRemoteMediaClient()); - - mCastSession - .getRemoteMediaClient() - .onMessageReceived( - mCastSession.getCastDevice(), CastSessionUtil.MEDIA_NAMESPACE, message); - } - - /** Attaches the controller to the current {@link CastSession}. */ - public void attachToCastSession(CastSession session) { - mCastSession = session; - RemoteMediaClient uncheckedRemoteMediaClient = mCastSession.getRemoteMediaClient(); - if (uncheckedRemoteMediaClient != null) { - uncheckedRemoteMediaClient.registerCallback(mRemoteMediaClientCallback); - } - } - - /** Detaches the controller from any {@link CastSession}. */ - public void detachFromCastSession() { - if (mCastSession == null) return; - - RemoteMediaClient uncheckedRemoteMediaClient = mCastSession.getRemoteMediaClient(); - if (uncheckedRemoteMediaClient != null) { - uncheckedRemoteMediaClient.unregisterCallback(mRemoteMediaClientCallback); - } - mCastSession = null; } /** Called when session started. */ public void onSessionStarted() { - notifyCallback((Callback callback) -> callback.onSessionStarted()); } /** Called when session ended. */ public void onSessionEnded() { - notifyCallback((Callback callback) -> callback.onSessionEnded()); } protected final CafBaseMediaRouteProvider getProvider() { return mProvider; } - /** - * All sub-classes need to register this method to listen to messages of the namespaces they are - * interested in. - */ - protected void onMessageReceived(CastDevice castDevice, String namespace, String message) { - Log.d( - TAG, - "Received message from Cast device: namespace=\"" - + namespace - + "\" message=\"" - + message - + "\""); - if (CastSessionUtil.MEDIA_NAMESPACE.equals(namespace)) { - updateRemoteMediaClient(message); - } - } - - private class RemoteMediaClientCallback extends RemoteMediaClient.Callback { - @Override - public void onStatusUpdated() { - BaseSessionController.this.onStatusUpdated(); - } - - @Override - public void onMetadataUpdated() { - BaseSessionController.this.onMetadataUpdated(); - } - } - - protected void onStatusUpdated() { - notifyCallback((Callback callback) -> callback.onStatusUpdated()); - } - - protected void onMetadataUpdated() { - notifyCallback((Callback callback) -> callback.onMetadataUpdated()); - } - - public @Nullable FlingingController getFlingingController() { - return null; - } - /** * Helper message to get the session ID of the attached session. For stubbing in tests as * {@link CastSession#getSessionId()} is final. */ - public @Nullable String getSessionId() { - return isConnected() ? mCastSession.getSessionId() : null; + public String getSessionId() { + return null; } private void notifyCallback(NotifyCallbackAction action) { diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CafBaseMediaRouteProvider.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CafBaseMediaRouteProvider.java --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CafBaseMediaRouteProvider.java +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CafBaseMediaRouteProvider.java @@ -12,9 +12,6 @@ import androidx.mediarouter.media.MediaRouteSelector; import androidx.mediarouter.media.MediaRouter; import androidx.mediarouter.media.MediaRouter.RouteInfo; -import com.google.android.gms.cast.framework.CastSession; -import com.google.android.gms.cast.framework.SessionManagerListener; - import org.chromium.base.Log; import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; @@ -39,7 +36,7 @@ import java.util.Set; /** A base provider containing common implementation for CAF-based {@link MediaRouteProvider}s. */ @NullMarked public abstract class CafBaseMediaRouteProvider - implements MediaRouteProvider, DiscoveryDelegate, SessionManagerListener { + implements MediaRouteProvider, DiscoveryDelegate { private static final String TAG = "CafMR"; protected static final List NO_SINKS = Collections.emptyList(); @@ -175,7 +172,6 @@ public abstract class CafBaseMediaRouteProvider // current session and clean up the routes (can't wait for session ending as the signal // might be delayed). sessionController().endSession(); - handleSessionEnd(); } if (mPendingCreateRouteRequestInfo != null) { cancelPendingRequest("Request replaced"); @@ -204,10 +200,6 @@ public abstract class CafBaseMediaRouteProvider mManager.onCreateRouteRequestError("The sink does not exist", nativeRequestId); } - CastUtils.getCastContext() - .getSessionManager() - .addSessionManagerListener(this, CastSession.class); - mPendingCreateRouteRequestInfo = new CreateRouteRequestInfo( source, @@ -242,109 +234,6 @@ public abstract class CafBaseMediaRouteProvider removeRoute(routeId, /* error= */ null); } - /////////////////////////////////////////////////////// - // SessionManagerListener implementation begin - /////////////////////////////////////////////////////// - - @Override - public final void onSessionStarting(CastSession session) { - // The session is not connected yet at this point so this is no-op. - } - - @Override - public void onSessionStartFailed(CastSession session, int error) { - removeAllRoutes("Launch error"); - cancelPendingRequest("Launch error"); - } - - @Override - public void onSessionStarted(CastSession session, String sessionId) { - Log.d(TAG, "onSessionStarted"); - - if (session != CastUtils.getCastContext().getSessionManager().getCurrentCastSession()) { - // Sometimes the session start signal might come in for an earlier launch request, which - // should be ignored. - return; - } - - if (session == sessionController().getSession() || mPendingCreateRouteRequestInfo == null) { - // Early return for any possible case that the session start signal comes in twice for - // the same session. - return; - } - handleSessionStart(session, sessionId); - } - - @Override - public final void onSessionResumed(CastSession session, boolean wasSuspended) { - sessionController().attachToCastSession(session); - } - - @Override - public final void onSessionResuming(CastSession session, String sessionId) {} - - @Override - public final void onSessionResumeFailed(CastSession session, int error) {} - - @Override - public final void onSessionEnding(CastSession session) { - handleSessionEnd(); - } - - @Override - public final void onSessionEnded(CastSession session, int error) { - Log.d(TAG, "Session ended with error code " + error); - handleSessionEnd(); - } - - @Override - public final void onSessionSuspended(CastSession session, int reason) { - sessionController().detachFromCastSession(); - } - - /////////////////////////////////////////////////////// - // SessionManagerListener implementation end - /////////////////////////////////////////////////////// - - protected void handleSessionStart(CastSession session, String sessionId) { - sessionController().attachToCastSession(session); - sessionController().onSessionStarted(); - assumeNonNull(mPendingCreateRouteRequestInfo); - - MediaSink sink = mPendingCreateRouteRequestInfo.sink; - MediaSource source = mPendingCreateRouteRequestInfo.getMediaSource(); - MediaRoute route = - new MediaRoute( - sink.getId(), - source.getSourceId(), - mPendingCreateRouteRequestInfo.presentationId); - addRoute( - route, - mPendingCreateRouteRequestInfo.origin, - mPendingCreateRouteRequestInfo.tabId, - mPendingCreateRouteRequestInfo.nativeRequestId, - /* wasLaunched= */ true); - - mPendingCreateRouteRequestInfo = null; - } - - private void handleSessionEnd() { - if (mPendingCreateRouteRequestInfo != null) { - // The Cast SDK notifies about session ending when a route is unselected, even when - // there's no current session. Because CastSessionController unselects the route to set - // the receiver app ID, this needs to be guarded by a pending request null check to make - // sure the listener is not unregistered during a session relaunch. - return; - } - sessionController().onSessionEnded(); - sessionController().detachFromCastSession(); - mAndroidMediaRouter.selectRoute(mAndroidMediaRouter.getDefaultRoute()); - terminateAllRoutes(); - CastUtils.getCastContext() - .getSessionManager() - .removeSessionManagerListener(this, CastSession.class); - } - private void cancelPendingRequest(String error) { if (mPendingCreateRouteRequestInfo == null) return; diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CafMediaRouteProvider.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CafMediaRouteProvider.java --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CafMediaRouteProvider.java +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CafMediaRouteProvider.java @@ -10,8 +10,6 @@ import static org.chromium.components.media_router.caf.CastUtils.isSameOrigin; import androidx.annotation.VisibleForTesting; import androidx.mediarouter.media.MediaRouter; -import com.google.android.gms.cast.framework.CastSession; - import org.chromium.base.Log; import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; @@ -146,25 +144,6 @@ public class CafMediaRouteProvider extends CafBaseMediaRouteProvider { return mMessageHandler; } - @Override - protected void handleSessionStart(CastSession session, String sessionId) { - super.handleSessionStart(session, sessionId); - - for (ClientRecord clientRecord : mClientIdToRecords.values()) { - // Should be exactly one instance of MediaRoute/ClientRecord at this moment. - assert sessionController().getSink() != null; - mMessageHandler.sendReceiverActionToClient( - clientRecord.routeId, - sessionController().getSink(), - clientRecord.clientId, - "cast"); - } - - mMessageHandler.onSessionStarted(); - assumeNonNull(assumeNonNull(sessionController().getSession()).getRemoteMediaClient()) - .requestStatus(); - } - @Override protected void addRoute( MediaRoute route, String origin, int tabId, int nativeRequestId, boolean wasLaunched) { diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CafMessageHandler.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CafMessageHandler.java --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CafMessageHandler.java +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CafMessageHandler.java @@ -14,10 +14,6 @@ import android.util.SparseArray; import androidx.annotation.VisibleForTesting; import androidx.collection.ArrayMap; -import com.google.android.gms.cast.ApplicationMetadata; -import com.google.android.gms.common.api.PendingResult; -import com.google.android.gms.common.api.Status; - import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; @@ -336,51 +332,7 @@ public class CafMessageHandler { throws JSONException { if (volumeMessage == null) return false; if (!mSessionController.isConnected()) return false; - assumeNonNull(mSessionController.getSession()); - boolean shouldWaitForVolumeChange = false; - try { - if (!volumeMessage.isNull("muted")) { - boolean newMuted = volumeMessage.getBoolean("muted"); - if (mSessionController.getSession().isMute() != newMuted) { - mSessionController.getSession().setMute(newMuted); - shouldWaitForVolumeChange = true; - } - } - if (!volumeMessage.isNull("level")) { - double newLevel = volumeMessage.getDouble("level"); - double currentLevel = mSessionController.getSession().getVolume(); - if (!Double.isNaN(currentLevel) - && Math.abs(currentLevel - newLevel) - > CastSessionUtil.MIN_VOLUME_LEVEL_DELTA) { - mSessionController.getSession().setVolume(newLevel); - shouldWaitForVolumeChange = true; - } - } - } catch (IOException | IllegalStateException e) { - Log.e(TAG, "Failed to send volume command: " + e); - return false; - } - - // For each successful volume message we need to respond with an empty "v2_message" so the - // Cast Web SDK can call the success callback of the page. If we expect the volume to change - // as the result of the command, we're relying on {@link Cast.CastListener#onVolumeChanged} - // to get called by the Android Cast SDK when the receiver status is updated. We keep the - // sequence number until then. If the volume doesn't change as the result of the command, we - // won't get notified by the Android SDK - if (shouldWaitForVolumeChange) { - mVolumeRequests.add(new RequestRecord(clientId, sequenceNumber)); - } else { - // It's usually bad to have request and response on the same call stack so post the - // response to the Android message loop. - mHandler.post( - new Runnable() { - @Override - public void run() { - onVolumeChanged(clientId, sequenceNumber); - } - }); - } - return true; + return false; } @VisibleForTesting @@ -674,26 +626,15 @@ public class CafMessageHandler { /** @return A message containing the information of the {@link CastSession}. */ public String buildSessionMessage() { if (!mSessionController.isConnected()) return "{}"; - assumeNonNull(mSessionController.getSession()); try { // "volume" is a part of "receiver" initialized below. JSONObject jsonVolume = new JSONObject(); - jsonVolume.put("level", mSessionController.getSession().getVolume()); - jsonVolume.put("muted", mSessionController.getSession().isMute()); // "receiver" is a part of "message" initialized below. JSONObject jsonReceiver = new JSONObject(); - jsonReceiver.put( - "label", - assumeNonNull(mSessionController.getSession().getCastDevice()).getDeviceId()); - jsonReceiver.put( - "friendlyName", - mSessionController.getSession().getCastDevice().getFriendlyName()); jsonReceiver.put("capabilities", toJSONArray(mSessionController.getCapabilities())); jsonReceiver.put("volume", jsonVolume); - jsonReceiver.put( - "isActiveInput", mSessionController.getSession().getActiveInputState()); jsonReceiver.put("displayStatus", null); jsonReceiver.put("receiverType", "cast"); @@ -706,28 +647,12 @@ public class CafMessageHandler { JSONObject jsonMessage = new JSONObject(); jsonMessage.put("sessionId", mSessionController.getSessionId()); - jsonMessage.put("statusText", mSessionController.getSession().getApplicationStatus()); jsonMessage.put("receiver", jsonReceiver); jsonMessage.put("namespaces", jsonNamespaces); jsonMessage.put("media", toJSONArray(new ArrayList<>())); jsonMessage.put("status", "connected"); jsonMessage.put("transportId", "web-4"); - ApplicationMetadata applicationMetadata = - mSessionController.getSession().getApplicationMetadata(); - if (applicationMetadata != null) { - jsonMessage.put("appId", applicationMetadata.getApplicationId()); - } else { - jsonMessage.put( - "appId", - assumeNonNull(mSessionController.getRouteCreationInfo()) - .getMediaSource() - .getApplicationId()); - } - jsonMessage.put( - "displayName", - mSessionController.getSession().getCastDevice().getFriendlyName()); - return jsonMessage.toString(); } catch (JSONException e) { Log.w(TAG, "Building session message failed", e); @@ -805,33 +730,6 @@ public class CafMessageHandler { boolean sendStringCastMessage( String message, String namespace, String clientId, int sequenceNumber) { if (!mSessionController.isConnected()) return false; - assumeNonNull(mSessionController.getSession()); - - PendingResult pendingResult = - mSessionController.getSession().sendMessage(namespace, message); - if (!TextUtils.equals(namespace, CastSessionUtil.MEDIA_NAMESPACE)) { - // Media commands wait for the media status update as a result. - pendingResult.setResultCallback( - (Status result) -> onSendAppMessageResult(result, clientId, sequenceNumber)); - } - return true; - } - - /** - * Notifies a client that an app message has been sent. - * @param clientId The client id the message is sent from. - * @param sequenceNumber The sequence number of the message. - */ - void onSendAppMessageResult(Status result, String clientId, int sequenceNumber) { - if (!result.isSuccess()) { - // TODO(avayvod): should actually report back to the page. - // See https://crbug.com/550445. - Log.e(TAG, "Failed to send the message: " + result); - return; - } - - // App messages wait for the empty message with the sequence - // number. - sendEnclosedMessageToClient(clientId, "app_message", null, sequenceNumber); + return false; } } diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastMediaSource.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastMediaSource.java --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastMediaSource.java +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastMediaSource.java @@ -8,8 +8,6 @@ import android.net.Uri; import androidx.mediarouter.media.MediaRouteSelector; -import com.google.android.gms.cast.CastMediaControlIntent; - import org.chromium.base.ResettersForTesting; import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; @@ -110,13 +108,7 @@ public class CastMediaSource implements MediaSource { */ @Override public @Nullable MediaRouteSelector buildRouteSelector() { - try { - return new MediaRouteSelector.Builder() - .addControlCategory(CastMediaControlIntent.categoryForCast(mApplicationId)) - .build(); - } catch (IllegalArgumentException e) { - return null; - } + return null; } /** @return the Cast application id corresponding to the source. */ diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastOptionsProvider.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastOptionsProvider.java --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastOptionsProvider.java +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastOptionsProvider.java @@ -6,11 +6,6 @@ package org.chromium.components.media_router.caf; import android.content.Context; -import com.google.android.gms.cast.LaunchOptions; -import com.google.android.gms.cast.framework.CastOptions; -import com.google.android.gms.cast.framework.OptionsProvider; -import com.google.android.gms.cast.framework.SessionProvider; - import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; @@ -18,19 +13,5 @@ import java.util.List; /** {@link OptionsProvider} implementation for Chrome MR. */ @NullMarked -public class CastOptionsProvider implements OptionsProvider { - @Override - public CastOptions getCastOptions(Context context) { - return new CastOptions.Builder() - .setEnableReconnectionService(false) - .setLaunchOptions(new LaunchOptions.Builder().setRelaunchIfRunning(true).build()) - .setResumeSavedSession(false) - .setStopReceiverApplicationWhenEndingSession(true) - .build(); - } - - @Override - public @Nullable List getAdditionalSessionProviders(Context context) { - return null; - } +public class CastOptionsProvider { } diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastSessionController.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastSessionController.java --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastSessionController.java +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastSessionController.java @@ -8,11 +8,6 @@ import static org.chromium.build.NullUtil.assumeNonNull; import androidx.annotation.VisibleForTesting; -import com.google.android.gms.cast.ApplicationMetadata; -import com.google.android.gms.cast.Cast; -import com.google.android.gms.cast.CastDevice; -import com.google.android.gms.cast.framework.CastSession; - import org.chromium.base.Log; import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; @@ -28,12 +23,10 @@ public class CastSessionController extends BaseSessionController { private static final String TAG = "CafSessionCtrl"; private final List mNamespaces = new ArrayList<>(); - private CastListener mCastListener; private final CafNotificationController mNotificationController; public CastSessionController(CafBaseMediaRouteProvider provider) { super(provider); - mCastListener = new CastListener(); mNotificationController = new CafNotificationController(this); } @@ -41,31 +34,6 @@ public class CastSessionController extends BaseSessionController { return mNamespaces; } - /** - * Init nested fields for testing. The reason is that nested classes are bound to the original - * instance instead of the spyed instance. - */ - void initNestedFieldsForTesting() { - mCastListener = new CastListener(); - } - - @Override - public void attachToCastSession(CastSession session) { - super.attachToCastSession(session); - assumeNonNull(getSession()); - getSession().addCastListener(mCastListener); - updateNamespaces(); - } - - @Override - public void detachFromCastSession() { - if (getSession() == null) return; - - mNamespaces.clear(); - getSession().removeCastListener(mCastListener); - super.detachFromCastSession(); - } - @Override public void onSessionEnded() { getMessageHandler().onSessionEnded(); @@ -77,24 +45,6 @@ public class CastSessionController extends BaseSessionController { return mNotificationController; } - private class CastListener extends Cast.Listener { - @Override - public void onApplicationStatusChanged() { - CastSessionController.this.onApplicationStatusChanged(); - } - - @Override - public void onApplicationMetadataChanged(@Nullable ApplicationMetadata metadata) { - CastSessionController.this.onApplicationStatusChanged(); - } - - @Override - public void onVolumeChanged() { - CastSessionController.this.onApplicationStatusChanged(); - getMessageHandler().onVolumeChanged(); - } - } - private void onApplicationStatusChanged() { updateNamespaces(); @@ -106,55 +56,18 @@ public class CastSessionController extends BaseSessionController { @VisibleForTesting void updateNamespaces() { if (!isConnected()) return; - assumeNonNull(getSession()); - - if (getSession().getApplicationMetadata() == null - || getSession().getApplicationMetadata().getSupportedNamespaces() == null) { - return; - } - - Set namespacesToAdd = - new HashSet<>(getSession().getApplicationMetadata().getSupportedNamespaces()); - Set namespacesToRemove = new HashSet<>(mNamespaces); - - namespacesToRemove.removeAll(namespacesToAdd); - namespacesToAdd.removeAll(mNamespaces); - - for (String namespace : namespacesToRemove) unregisterNamespace(namespace); - for (String namespace : namespacesToAdd) registerNamespace(namespace); } private void registerNamespace(String namespace) { assert !mNamespaces.contains(namespace); if (!isConnected()) return; - - try { - assumeNonNull(getSession()) - .setMessageReceivedCallbacks(namespace, this::onMessageReceived); - mNamespaces.add(namespace); - } catch (Exception e) { - Log.e(TAG, "Failed to register namespace listener for %s", namespace, e); - } } private void unregisterNamespace(String namespace) { assert mNamespaces.contains(namespace); if (!isConnected()) return; - - try { - assumeNonNull(getSession()).removeMessageReceivedCallbacks(namespace); - mNamespaces.remove(namespace); - } catch (Exception e) { - Log.e(TAG, "Failed to remove the namespace listener for %s", namespace, e); - } - } - - @Override - protected void onMessageReceived(CastDevice castDevice, String namespace, String message) { - super.onMessageReceived(castDevice, namespace, message); - getMessageHandler().onMessageReceived(namespace, message); } private CafMessageHandler getMessageHandler() { diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastUtils.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastUtils.java --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastUtils.java +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastUtils.java @@ -6,20 +6,12 @@ package org.chromium.components.media_router.caf; import static org.chromium.build.NullUtil.assumeNonNull; -import com.google.android.gms.cast.framework.CastContext; - import org.chromium.build.annotations.NullMarked; import org.chromium.components.media_router.MediaRouterClient; /** Utility methods for Cast. */ @NullMarked public class CastUtils { - /** Helper method to return the {@link CastContext} instance. */ - public static CastContext getCastContext() { - return CastContext.getSharedInstance( - assumeNonNull(MediaRouterClient.getInstance()).getContextForRemoting()); - } - /** * Compares two origins. Empty origin strings correspond to unique origins in * url::Origin. diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/CafExpandedControllerActivity.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/CafExpandedControllerActivity.java --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/CafExpandedControllerActivity.java +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/CafExpandedControllerActivity.java @@ -19,8 +19,6 @@ import android.widget.TextView; import androidx.fragment.app.FragmentActivity; import androidx.mediarouter.app.MediaRouteButton; -import com.google.android.gms.cast.framework.media.RemoteMediaClient; - import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; import org.chromium.components.media_router.R; @@ -43,55 +41,34 @@ public class CafExpandedControllerActivity extends FragmentActivity private TextView mTitleView; private Runnable mUpdateProgressRunnable; - private RemoteMediaClient getRemoteMediaClient() { - RemoteMediaClient ret = - assumeNonNull(mSessionController.getSession()).getRemoteMediaClient(); - assert ret != null; - return ret; - } - /** Handle actions from on-screen media controls. */ private final MediaController.Delegate mControllerDelegate = new MediaController.Delegate() { @Override public void play() { - if (!mSessionController.isConnected()) return; - - getRemoteMediaClient().play(); } @Override public void pause() { - if (!mSessionController.isConnected()) return; - - getRemoteMediaClient().pause(); } @Override public long getDuration() { - if (!mSessionController.isConnected()) return 0; - return assumeNonNull(mSessionController.getFlingingController()).getDuration(); + return 0; } @Override public long getPosition() { - if (!mSessionController.isConnected()) return 0; - return assumeNonNull(mSessionController.getFlingingController()) - .getApproximateCurrentTime(); + return 0; } @Override public void seekTo(long pos) { - if (!mSessionController.isConnected()) return; - - getRemoteMediaClient().seek(pos); } @Override public boolean isPlaying() { - if (!mSessionController.isConnected()) return false; - - return getRemoteMediaClient().isPlaying(); + return false; } @Override @@ -99,11 +76,6 @@ public class CafExpandedControllerActivity extends FragmentActivity long flags = PlaybackStateCompat.ACTION_REWIND | PlaybackStateCompat.ACTION_FAST_FORWARD; - if (mSessionController.isConnected() && getRemoteMediaClient().isPlaying()) { - flags |= PlaybackStateCompat.ACTION_PAUSE; - } else { - flags |= PlaybackStateCompat.ACTION_PLAY; - } return flags; } }; @@ -203,22 +175,10 @@ public class CafExpandedControllerActivity extends FragmentActivity private void updateUi() { if (!mSessionController.isConnected()) return; - String deviceName = - assumeNonNull(assumeNonNull(mSessionController.getSession()).getCastDevice()) - .getFriendlyName(); - String titleText = ""; - if (deviceName != null) { - titleText = getString(R.string.cast_casting_video, deviceName); - } - mTitleView.setText(titleText); - mMediaController.refresh(); mMediaController.updateProgress(); cancelProgressUpdateTask(); - if (getRemoteMediaClient().isPlaying()) { - scheduleProgressUpdateTask(); - } } private void scheduleProgressUpdateTask() { diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/CafRemotingMediaRouteProvider.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/CafRemotingMediaRouteProvider.java --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/CafRemotingMediaRouteProvider.java +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/CafRemotingMediaRouteProvider.java @@ -72,7 +72,7 @@ public class CafRemotingMediaRouteProvider extends CafBaseMediaRouteProvider { if (!mRoutes.containsKey(routeId)) return null; - return sessionController().getFlingingController(); + return null; } @Override @@ -81,7 +81,7 @@ public class CafRemotingMediaRouteProvider extends CafBaseMediaRouteProvider { var controller = sessionController(); // There is no active remote playback media route. - if (!hasSession() || controller.getFlingingController() == null) return; + if (!hasSession() || (true)) return; // Do not update media source for a detached session. if (!mRoutes.containsKey(assumeNonNull(controller.getRouteCreationInfo()).routeId)) return; diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/FlingingControllerAdapter.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/FlingingControllerAdapter.java --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/FlingingControllerAdapter.java +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/FlingingControllerAdapter.java @@ -6,11 +6,6 @@ package org.chromium.components.media_router.caf.remoting; import static org.chromium.build.NullUtil.assumeNonNull; -import com.google.android.gms.cast.MediaInfo; -import com.google.android.gms.cast.MediaStatus; -import com.google.android.gms.cast.framework.media.RemoteMediaClient; -import com.google.android.gms.common.api.Result; - import org.chromium.base.Log; import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; @@ -85,16 +80,6 @@ public class FlingingControllerAdapter implements FlingingController, MediaContr /** Starts loading the media URL, from the given position. */ public void load(long position, boolean autoplay) { if (!mSessionController.isConnected()) return; - assumeNonNull(mSessionController.getRemoteMediaClient()); - - mLoaded = true; - - MediaInfo mediaInfo = - new MediaInfo.Builder(mMediaUrl) - .setContentType("*/*") - .setStreamType(MediaInfo.STREAM_TYPE_BUFFERED) - .build(); - mSessionController.getRemoteMediaClient().load(mediaInfo, autoplay, position); } //////////////////////////////////////////// @@ -104,114 +89,33 @@ public class FlingingControllerAdapter implements FlingingController, MediaContr @Override public void play() { if (!mSessionController.isConnected()) return; - assumeNonNull(mSessionController.getRemoteMediaClient()); if (!mLoaded) { load(/* position= */ 0, /* autoplay= */ true); return; } - - mSessionController - .getRemoteMediaClient() - .play() - .setResultCallback(this::onMediaCommandResult); } @Override public void pause() { if (!mSessionController.isConnected()) return; - assumeNonNull(mSessionController.getRemoteMediaClient()); - mSessionController - .getRemoteMediaClient() - .pause() - .setResultCallback(this::onMediaCommandResult); } @Override public void setMute(boolean mute) { if (!mSessionController.isConnected()) return; - assumeNonNull(mSessionController.getRemoteMediaClient()); - mSessionController - .getRemoteMediaClient() - .setStreamMute(mute) - .setResultCallback(this::onMediaCommandResult); } @Override public void setVolume(double volume) { if (!mSessionController.isConnected()) return; - assumeNonNull(mSessionController.getRemoteMediaClient()); - mSessionController - .getRemoteMediaClient() - .setStreamVolume(volume) - .setResultCallback(this::onMediaCommandResult); } @Override public void seek(long position) { - if (!mSessionController.isConnected()) return; - assumeNonNull(mSessionController.getRemoteMediaClient()); - - if (!mLoaded) { - load(position, /* autoplay= */ true); - return; - } - - mSessionController - .getRemoteMediaClient() - .seek(position) - .setResultCallback(this::onMediaCommandResult); - mStreamPositionExtrapolator.onSeek(position); } //////////////////////////////////////////// // MediaController implementation end //////////////////////////////////////////// - - public void onStatusUpdated() { - if (mMediaStatusObserver == null) return; - - RemoteMediaClient remoteMediaClient = mSessionController.getRemoteMediaClient(); - assumeNonNull(remoteMediaClient); - - MediaStatus mediaStatus = remoteMediaClient.getMediaStatus(); - if (mediaStatus != null) { - mHasEverReceivedValidMediaSession = true; - if (mediaStatus.getPlayerState() == MediaStatus.PLAYER_STATE_IDLE - && mediaStatus.getIdleReason() == MediaStatus.IDLE_REASON_FINISHED) { - mLoaded = false; - mStreamPositionExtrapolator.onFinish(); - } else { - mStreamPositionExtrapolator.update( - remoteMediaClient.getStreamDuration(), - remoteMediaClient.getApproximateStreamPosition(), - remoteMediaClient.isPlaying(), - mediaStatus.getPlaybackRate()); - } - - mMediaStatusObserver.onMediaStatusUpdate(new MediaStatusBridge(mediaStatus)); - - } else if (mHasEverReceivedValidMediaSession) { - // We can receive a null |mediaStatus| while we are in the process of loading the video. - // We should wait until we receive one valid media status before considering the video - // unloaded. Otherwise, the first call to seek or play will reload the video. - // See b/144325733. - mLoaded = false; - mStreamPositionExtrapolator.clear(); - } - } - - private void onMediaCommandResult(Result result) { - // When multiple API calls are made in quick succession, "Results have already been set" - // IllegalStateExceptions might be thrown from GMS code. We prefer to catch the exception - // and noop it, than to crash. This might lead to some API calls never getting their - // onResult() called, so we should not rely on onResult() being called for every API call. - // See https://crbug.com/853923. - if (!result.getStatus().isSuccess()) { - Log.e( - TAG, - "Error when sending command. Status code: %d", - result.getStatus().getStatusCode()); - } - } } diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/RemotingMediaSource.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/RemotingMediaSource.java --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/RemotingMediaSource.java +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/RemotingMediaSource.java @@ -13,8 +13,6 @@ import android.util.Base64; import androidx.mediarouter.media.MediaRouteSelector; -import com.google.android.gms.cast.CastMediaControlIntent; - import org.chromium.base.ContextUtils; import org.chromium.base.Log; import org.chromium.build.annotations.NullMarked; @@ -83,9 +81,7 @@ public class RemotingMediaSource implements MediaSource { */ @Override public MediaRouteSelector buildRouteSelector() { - return new MediaRouteSelector.Builder() - .addControlCategory(CastMediaControlIntent.categoryForCast(getApplicationId())) - .build(); + return null; } /** @@ -115,7 +111,7 @@ public class RemotingMediaSource implements MediaSource { sApplicationId = (customAppId != null && !customAppId.isEmpty()) ? customAppId - : CastMediaControlIntent.DEFAULT_MEDIA_RECEIVER_APPLICATION_ID; + : "CC1AD845"; /*DEFAULT_MEDIA_RECEIVER_APPLICATION_ID*/ } return sApplicationId; diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/RemotingSessionController.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/RemotingSessionController.java --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/RemotingSessionController.java +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/RemotingSessionController.java @@ -6,8 +6,6 @@ package org.chromium.components.media_router.caf.remoting; import static org.chromium.build.NullUtil.assumeNonNull; -import com.google.android.gms.cast.framework.CastSession; - import org.chromium.base.Log; import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; @@ -51,23 +49,6 @@ public class RemotingSessionController extends BaseSessionController { getProvider().updateRouteMediaSource(getRouteCreationInfo().routeId, source.getSourceId()); } - @Override - public void attachToCastSession(CastSession session) { - super.attachToCastSession(session); - - try { - assumeNonNull(getSession()) - .setMessageReceivedCallbacks( - CastSessionUtil.MEDIA_NAMESPACE, this::onMessageReceived); - } catch (Exception e) { - Log.e( - TAG, - "Failed to register namespace listener for %s", - CastSessionUtil.MEDIA_NAMESPACE, - e); - } - } - @Override public void onSessionStarted() { super.onSessionStarted(); @@ -79,18 +60,6 @@ public class RemotingSessionController extends BaseSessionController { } } - @Override - protected void onStatusUpdated() { - assumeNonNull(mFlingingControllerAdapter); - mFlingingControllerAdapter.onStatusUpdated(); - super.onStatusUpdated(); - } - - @Override - public @Nullable FlingingControllerAdapter getFlingingController() { - return mFlingingControllerAdapter; - } - @Override public BaseNotificationController getNotificationController() { return mNotificationController; diff --git a/components/media_router/test/android/cast_emulator/BUILD.gn b/components/media_router/test/android/cast_emulator/BUILD.gn --- a/components/media_router/test/android/cast_emulator/BUILD.gn +++ b/components/media_router/test/android/cast_emulator/BUILD.gn @@ -20,7 +20,6 @@ android_library("cast_emulator_java") { "src/org/chromium/components/media_router/cast_emulator/router/DummyRoutePublisher.java", ] deps = [ - "$google_play_services_package:google_play_services_cast_java", "//base:base_java", "//third_party/androidx:androidx_mediarouter_mediarouter_java", ] diff --git a/components/module_installer/android/BUILD.gn b/components/module_installer/android/BUILD.gn --- a/components/module_installer/android/BUILD.gn +++ b/components/module_installer/android/BUILD.gn @@ -27,10 +27,8 @@ android_library("module_installer_java") { ] deps = [ - "$google_play_services_package:google_play_services_tasks_java", "//base:base_java", "//components/crash/android:java", - "//third_party/android_deps:playcore_java", "//third_party/androidx:androidx_annotation_annotation_java", "//third_party/jni_zero:jni_zero_java", ] @@ -48,11 +46,9 @@ robolectric_binary("module_installer_junit_tests") { ] deps = [ ":module_installer_java", - "$google_play_services_package:google_play_services_tasks_java", "//base:base_java", "//base:base_java_test_support", "//base:base_junit_test_support", - "//third_party/android_deps:playcore_java", "//third_party/hamcrest:hamcrest_java", ] } diff --git a/components/omnibox/common/BUILD.gn b/components/omnibox/common/BUILD.gn --- a/components/omnibox/common/BUILD.gn +++ b/components/omnibox/common/BUILD.gn @@ -62,7 +62,6 @@ if (is_android) { ":jni_headers", ] deps = [ - "$google_play_services_package:google_play_services_location_java", "//base:base_java", "//chrome/browser/feedback/android:java", "//components/cached_flags:java", diff --git a/components/omnibox/common/android/java/src/org/chromium/components/omnibox/OmniboxFeatures.java b/components/omnibox/common/android/java/src/org/chromium/components/omnibox/OmniboxFeatures.java --- a/components/omnibox/common/android/java/src/org/chromium/components/omnibox/OmniboxFeatures.java +++ b/components/omnibox/common/android/java/src/org/chromium/components/omnibox/OmniboxFeatures.java @@ -9,8 +9,6 @@ import android.text.format.DateUtils; import androidx.annotation.IntDef; -import com.google.android.gms.location.Priority; - import org.chromium.base.BaseSwitches; import org.chromium.base.CommandLine; import org.chromium.base.ContextUtils; @@ -212,12 +210,6 @@ public class OmniboxFeatures { "geolocation_request_min_update_interval_millis", (int) (9 * DateUtils.MINUTE_IN_MILLIS)); - public static final IntCachedFeatureParam sGeolocationRequestPriority = - newIntParam( - sUseFusedLocationProvider, - "geolocation_request_priority", - Priority.PRIORITY_BALANCED_POWER_ACCURACY); - public static final IntCachedFeatureParam sTouchDownTriggerMaxPrefetchesPerSession = newIntParam( sTouchDownTriggerForPrefetch, diff --git a/components/one_time_tokens/android/backend/common/BUILD.gn b/components/one_time_tokens/android/backend/common/BUILD.gn --- a/components/one_time_tokens/android/backend/common/BUILD.gn +++ b/components/one_time_tokens/android/backend/common/BUILD.gn @@ -11,7 +11,6 @@ android_library("java") { "java/src/org/chromium/components/one_time_tokens/backend/OneTimeTokensMetricsRecorder.java", ] deps = [ - "$google_play_services_package:google_play_services_basement_java", "//base:base_java", "//build/android:build_java", "//third_party/androidx:androidx_annotation_annotation_java", @@ -23,7 +22,6 @@ robolectric_library("junit") { sources = [ "java/src/org/chromium/components/one_time_tokens/backend/OneTimeTokensMetricsRecorderTest.java" ] 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/one_time_tokens/android/backend/common/java/src/org/chromium/components/one_time_tokens/backend/OneTimeTokensMetricsRecorder.java b/components/one_time_tokens/android/backend/common/java/src/org/chromium/components/one_time_tokens/backend/OneTimeTokensMetricsRecorder.java --- a/components/one_time_tokens/android/backend/common/java/src/org/chromium/components/one_time_tokens/backend/OneTimeTokensMetricsRecorder.java +++ b/components/one_time_tokens/android/backend/common/java/src/org/chromium/components/one_time_tokens/backend/OneTimeTokensMetricsRecorder.java @@ -6,9 +6,6 @@ package org.chromium.components.one_time_tokens.backend; import android.os.SystemClock; -import com.google.android.gms.common.api.ApiException; -import com.google.android.gms.common.api.CommonStatusCodes; - import org.chromium.base.metrics.RecordHistogram; import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; @@ -62,18 +59,5 @@ public class OneTimeTokensMetricsRecorder { } private void reportErrorMetrics(Exception exception) { - if (exception instanceof OneTimeTokensBackendException backendException) { - RecordHistogram.recordEnumeratedHistogram( - getHistogramName(ERROR_CODE_METRIC_NAME), - backendException.getErrorCode(), - OneTimeTokensBackendErrorCode.MAX_VALUE); - return; - } - - int errorCode = CommonStatusCodes.ERROR; - if (exception instanceof ApiException apiException) { - errorCode = apiException.getStatusCode(); - } - RecordHistogram.recordSparseHistogram(getHistogramName(API_ERROR_METRIC_NAME), errorCode); } } diff --git a/components/one_time_tokens/android/backend/sms/BUILD.gn b/components/one_time_tokens/android/backend/sms/BUILD.gn --- a/components/one_time_tokens/android/backend/sms/BUILD.gn +++ b/components/one_time_tokens/android/backend/sms/BUILD.gn @@ -48,7 +48,6 @@ android_library("java") { ] deps = [ - "$google_play_services_package:google_play_services_basement_java", "//base:base_java", "//build/android:build_java", "//components/one_time_tokens/android/backend/common:java", @@ -73,7 +72,6 @@ robolectric_binary("one_time_tokens_junit_tests") { deps = [ ":java", ":sms_otp_fetching_interface_java", - "$google_play_services_package:google_play_services_basement_java", "//base:base_java", "//base:base_java_test_support", "//base:base_junit_test_support", @@ -84,7 +82,6 @@ robolectric_binary("one_time_tokens_junit_tests") { android_library("sms_otp_fetching_interface_java") { deps = [ - "$google_play_services_package:google_play_services_basement_java", "//base:base_java", "//base:service_loader_java", ] diff --git a/components/one_time_tokens/android/backend/sms/java/src/org/chromium/components/one_time_tokens/backend/sms/AndroidSmsOtpFetchReceiverBridge.java b/components/one_time_tokens/android/backend/sms/java/src/org/chromium/components/one_time_tokens/backend/sms/AndroidSmsOtpFetchReceiverBridge.java --- a/components/one_time_tokens/android/backend/sms/java/src/org/chromium/components/one_time_tokens/backend/sms/AndroidSmsOtpFetchReceiverBridge.java +++ b/components/one_time_tokens/android/backend/sms/java/src/org/chromium/components/one_time_tokens/backend/sms/AndroidSmsOtpFetchReceiverBridge.java @@ -4,9 +4,6 @@ package org.chromium.components.one_time_tokens.backend.sms; -import com.google.android.gms.common.api.ApiException; -import com.google.android.gms.common.api.CommonStatusCodes; - import org.jni_zero.CalledByNative; import org.jni_zero.JNINamespace; import org.jni_zero.NativeClassQualifiedName; @@ -42,13 +39,7 @@ class AndroidSmsOtpFetchReceiverBridge { void onOtpValueRetrievalError(Exception exception) { if (mNativeReceiverBridge == 0) return; - int errorCode = CommonStatusCodes.ERROR; - if (exception instanceof OneTimeTokensBackendException backendException) { - errorCode = backendException.getErrorCode(); - } - if (exception instanceof ApiException apiException) { - errorCode = apiException.getStatusCode(); - } + int errorCode = /* CommonStatusCodes.ERROR */ 13; AndroidSmsOtpFetchReceiverBridgeJni.get() .onOtpValueRetrievalError(mNativeReceiverBridge, errorCode); } diff --git a/components/signin/public/android/BUILD.gn b/components/signin/public/android/BUILD.gn --- a/components/signin/public/android/BUILD.gn +++ b/components/signin/public/android/BUILD.gn @@ -3,8 +3,6 @@ import("//third_party/jni_zero/jni_zero.gni") android_library("java") { deps = [ - "$google_play_services_package:google_play_services_auth_base_java", - "$google_play_services_package:google_play_services_base_java", "//base:base_java", "//base:service_loader_java", "//build/android:build_java", @@ -195,7 +193,6 @@ robolectric_library("junit") { deps = [ ":java", ":signin_java_test_support", - "$google_play_services_package:google_play_services_auth_base_java", "//base:base_java", "//base:base_java_test_support", "//base:base_java_test_support_uncommon", diff --git a/components/webauthn/android/BUILD.gn b/components/webauthn/android/BUILD.gn --- a/components/webauthn/android/BUILD.gn +++ b/components/webauthn/android/BUILD.gn @@ -41,8 +41,6 @@ android_library("java") { "java/src/org/chromium/components/webauthn/Barrier.java", "java/src/org/chromium/components/webauthn/CreateConfirmationUiDelegate.java", "java/src/org/chromium/components/webauthn/Fido2Api.java", - "java/src/org/chromium/components/webauthn/Fido2ApiCall.java", - "java/src/org/chromium/components/webauthn/Fido2ApiCallHelper.java", "java/src/org/chromium/components/webauthn/Fido2CredentialRequest.java", "java/src/org/chromium/components/webauthn/FidoIntentSender.java", "java/src/org/chromium/components/webauthn/GetMatchingCredentialIdsDelegate.java", @@ -74,11 +72,11 @@ android_library("java") { "java/src/org/chromium/components/webauthn/cred_man/GpmCredManRequestDecorator.java", ] + sources += [ + "java/src/org/chromium/components/webauthn/ConditionalUiState.java", + ] + deps = [ - "$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_identity_credentials_java", - "$google_play_services_package:google_play_services_tasks_java", "//base:base_java", "//base:service_loader_java", "//base/version_info/android:version_constants_java", @@ -232,8 +230,6 @@ robolectric_library("junit") { deps = [ ":java", ":test_support_java", - "$google_play_services_package:google_play_services_identity_credentials_java", - "$google_play_services_package:google_play_services_tasks_java", "//base:base_java", "//base:base_java_test_support", "//base:base_junit_test_support", diff --git a/components/webauthn/android/java/src/org/chromium/components/webauthn/ConditionalUiState.java b/components/webauthn/android/java/src/org/chromium/components/webauthn/ConditionalUiState.java new file mode 100644 --- /dev/null +++ b/components/webauthn/android/java/src/org/chromium/components/webauthn/ConditionalUiState.java @@ -0,0 +1,15 @@ +// Copyright 2018 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.components.webauthn; + +public enum ConditionalUiState { + NONE, + WAITING_FOR_RP_ID_VALIDATION, + WAITING_FOR_CREDENTIAL_LIST, + WAITING_FOR_SELECTION, + REQUEST_SENT_TO_PLATFORM, + CANCEL_PENDING, + CANCEL_PENDING_RP_ID_VALIDATION_COMPLETE, +} diff --git a/components/webauthn/android/java/src/org/chromium/components/webauthn/Fido2CredentialRequest.java b/components/webauthn/android/java/src/org/chromium/components/webauthn/Fido2CredentialRequest.java --- a/components/webauthn/android/java/src/org/chromium/components/webauthn/Fido2CredentialRequest.java +++ b/components/webauthn/android/java/src/org/chromium/components/webauthn/Fido2CredentialRequest.java @@ -27,8 +27,6 @@ import androidx.annotation.IntDef; import androidx.annotation.RequiresApi; import androidx.annotation.VisibleForTesting; -import com.google.android.gms.tasks.Task; - import org.jni_zero.JNINamespace; import org.jni_zero.NativeMethods; @@ -51,7 +49,6 @@ import org.chromium.blink_public.common.BlinkFeatures; import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; import org.chromium.components.password_manager.BrowserAssistedLoginType; -import org.chromium.components.webauthn.Fido2ApiCall.Fido2ApiCallParams; import org.chromium.components.webauthn.cred_man.CredManHelper; import org.chromium.components.webauthn.cred_man.CredManSupportProvider; import org.chromium.content_public.browser.ClientDataJson; @@ -154,12 +151,7 @@ public class Fido2CredentialRequest implements WebauthnBrowserBridge.Provider { */ public Fido2CredentialRequest(AuthenticationContextProvider authenticationContextProvider) { mAuthenticationContextProvider = authenticationContextProvider; - boolean playServicesAvailable; - try { - playServicesAvailable = Fido2ApiCallHelper.getInstance().arePlayServicesAvailable(); - } catch (Exception e) { - playServicesAvailable = false; - } + boolean playServicesAvailable = false; mPlayServicesAvailable = playServicesAvailable; mCredManHelper = new CredManHelper(mAuthenticationContextProvider, this, mPlayServicesAvailable); @@ -357,29 +349,6 @@ public class Fido2CredentialRequest implements WebauthnBrowserBridge.Provider { /* credentialRequestResult= */ null); return; } - try { - Fido2ApiCallHelper.getInstance() - .invokeFido2MakeCredential( - mAuthenticationContextProvider, - options, - Uri.parse(convertOriginToString(origin)), - clientDataHash, - maybeBrowserOptions, - getMaybeResultReceiver(Fido2ApiRequestType.MAKE_CREDENTIAL), - (pendingIntent) -> - onGotPendingIntent( - pendingIntent, - Fido2ApiRequestType.MAKE_CREDENTIAL), - (e) -> - onBinderCallException( - e, Fido2ApiRequestType.MAKE_CREDENTIAL)); - } catch (NoSuchAlgorithmException e) { - returnErrorAndResetCallback( - AuthenticatorStatus.ALGORITHM_UNSUPPORTED, - MakeCredentialOutcome.ALGORITHM_NOT_SUPPORTED, - /* credentialRequestResult= */ null); - return; - } return; } int result = @@ -436,27 +405,6 @@ public class Fido2CredentialRequest implements WebauthnBrowserBridge.Provider { /* credentialRequestResult= */ null); return; } - - try { - Fido2ApiCallHelper.getInstance() - .invokeFido2MakeCredential( - mAuthenticationContextProvider, - options, - Uri.parse(convertOriginToString(origin)), - clientDataHash, - maybeBrowserOptions, - getMaybeResultReceiver(Fido2ApiRequestType.MAKE_CREDENTIAL), - (pendingIntent) -> - onGotPendingIntent( - pendingIntent, Fido2ApiRequestType.MAKE_CREDENTIAL), - (e) -> onBinderCallException(e, Fido2ApiRequestType.MAKE_CREDENTIAL)); - } catch (NoSuchAlgorithmException e) { - returnErrorAndResetCallback( - AuthenticatorStatus.ALGORITHM_UNSUPPORTED, - MakeCredentialOutcome.ALGORITHM_NOT_SUPPORTED, - /* credentialRequestResult= */ null); - return; - } } @SuppressWarnings("NewApi") @@ -911,32 +859,6 @@ public class Fido2CredentialRequest implements WebauthnBrowserBridge.Provider { callback.onIsUserVerifyingPlatformAuthenticatorAvailableResponse(false); return; } - - Fido2ApiCallParams params = - WebauthnModeProvider.getInstance() - .getFido2ApiCallParams(mAuthenticationContextProvider.getWebContents()); - assertNonNull(mAuthenticationContextProvider.getContext()); - assertNonNull(params); - Fido2ApiCall call = new Fido2ApiCall(mAuthenticationContextProvider.getContext(), params); - Fido2ApiCall.BooleanResult result = new Fido2ApiCall.BooleanResult(); - Parcel args = call.start(); - args.writeStrongBinder(result); - - Task task = - call.run( - params.mIsUserVerifyingPlatformAuthenticatorAvailableMethodId, - Fido2ApiCall.TRANSACTION_ISUVPAA, - args, - result); - task.addOnSuccessListener( - (isUvpaa) -> { - callback.onIsUserVerifyingPlatformAuthenticatorAvailableResponse(isUvpaa); - }); - task.addOnFailureListener( - (e) -> { - logError(TAG, "FIDO2 API call failed", e); - callback.onIsUserVerifyingPlatformAuthenticatorAvailableResponse(false); - }); } public void handleReportRequest(PublicKeyCredentialReportOptions options, Origin origin) { @@ -1280,16 +1202,6 @@ public class Fido2CredentialRequest implements WebauthnBrowserBridge.Provider { if (options.mediation == Mediation.CONDITIONAL) { mCancellableUiState = CancellableUiState.REQUEST_SENT_TO_PLATFORM; } - - Fido2ApiCallHelper.getInstance() - .invokeFido2GetAssertion( - mAuthenticationContextProvider, - publicKeyOptions, - Uri.parse(callerOriginString), - clientDataHash, - getMaybeResultReceiver(requestType), - (pendingIntent) -> onGotPendingIntent(pendingIntent, requestType), - (e) -> onBinderCallException(e, requestType)); } private void handleNonCredentialReturn(GetCredentialOptions options, Integer reason) { @@ -1334,29 +1246,6 @@ public class Fido2CredentialRequest implements WebauthnBrowserBridge.Provider { assert mCancellableUiState == CancellableUiState.NONE || mCancellableUiState == CancellableUiState.REQUEST_SENT_TO_PLATFORM || mCancellableUiState == CancellableUiState.WAITING_FOR_SELECTION; - - if (mCancellableUiState == CancellableUiState.REQUEST_SENT_TO_PLATFORM) { - logError( - TAG, - "Received a second credential selection while the first still in progress."); - return; - } - if (isConditional) { - mCancellableUiState = CancellableUiState.REQUEST_SENT_TO_PLATFORM; - } else { - mCancellableUiState = CancellableUiState.NONE; - } - - Fido2ApiCallHelper.getInstance() - .invokeFido2HybridGetAssertion( - mAuthenticationContextProvider, - options, - Uri.parse(callerOriginString), - clientDataHash, - (pendingIntent) -> - onGotPendingIntent( - pendingIntent, Fido2ApiRequestType.GET_ASSERTION_HYBRID), - (e) -> onBinderCallException(e, Fido2ApiRequestType.GET_ASSERTION_HYBRID)); } // Handles a PendingIntent from the GMSCore FIDO library. diff --git a/components/webauthn/android/java/src/org/chromium/components/webauthn/GmsCoreGetCredentialsHelper.java b/components/webauthn/android/java/src/org/chromium/components/webauthn/GmsCoreGetCredentialsHelper.java --- a/components/webauthn/android/java/src/org/chromium/components/webauthn/GmsCoreGetCredentialsHelper.java +++ b/components/webauthn/android/java/src/org/chromium/components/webauthn/GmsCoreGetCredentialsHelper.java @@ -8,8 +8,6 @@ import static org.chromium.components.webauthn.WebauthnLogger.log; import android.os.SystemClock; -import com.google.android.gms.tasks.OnFailureListener; - import org.chromium.base.ResettersForTesting; import org.chromium.base.metrics.RecordHistogram; import org.chromium.build.annotations.NullMarked; @@ -80,6 +78,9 @@ public class GmsCoreGetCredentialsHelper { public interface GetCredentialsCallback { void onCredentialsReceived(List credentials); } + public interface OnFailureListener { + void onFailure(Exception exception); + } public static GmsCoreGetCredentialsHelper getInstance() { if (sInstance == null) { @@ -109,79 +110,7 @@ public class GmsCoreGetCredentialsHelper { GetCredentialsCallback successCallback, OnFailureListener failureCallback) { log(TAG, "getCredentials with reason: " + reason); - final long startTimeMs = SystemClock.elapsedRealtime(); - if (reason == Reason.GET_ASSERTION_NON_GOOGLE - && GmsCoreUtils.isPasskeyCacheSupported() - && WebauthnFeatureMap.getInstance() - .isEnabled(WebauthnFeatures.WEBAUTHN_ANDROID_PASSKEY_CACHE_MIGRATION)) { - Fido2ApiCallHelper.getInstance() - .invokePasskeyCacheGetCredentials( - authenticationContextProvider, - relyingPartyId, - (credentials) -> { - recordSuccessMetrics( - credentials, - reason, - GmsCoreGetCredentialsResult.CACHE_SUCCESS, - startTimeMs); - successCallback.onCredentialsReceived(credentials); - }, - (e) -> { - log( - TAG, - "invokePasskeyCacheGetCredentials() failed. Falling back to" - + " FIDO2. ", - e); - getCredentialsFromFido2Api( - authenticationContextProvider, - relyingPartyId, - reason, - successCallback, - failureCallback, - GmsCoreGetCredentialsResult.CACHE_FAILURE_FALLBACK_SUCCESS, - GmsCoreGetCredentialsResult.CACHE_FAILURE_FALLBACK_FAILURE, - startTimeMs); - }); - } else { - recordNoCacheReason(reason); - getCredentialsFromFido2Api( - authenticationContextProvider, - relyingPartyId, - reason, - successCallback, - failureCallback, - GmsCoreGetCredentialsResult.FIDO2_SUCCESS, - GmsCoreGetCredentialsResult.FIDO2_FAILURE, - startTimeMs); - } - } - - private void getCredentialsFromFido2Api( - AuthenticationContextProvider authenticationContextProvider, - String relyingPartyId, - Reason reason, - GetCredentialsCallback successCallback, - OnFailureListener failureCallback, - @GmsCoreGetCredentialsResult int successMetric, - @GmsCoreGetCredentialsResult int failureMetric, - long startTimeMs) { - log(TAG, "getCredentialsFromFido2Api"); - Fido2ApiCallHelper.getInstance() - .invokeFido2GetCredentials( - authenticationContextProvider, - relyingPartyId, - (credentials) -> { - recordSuccessMetrics(credentials, reason, successMetric, startTimeMs); - successCallback.onCredentialsReceived(credentials); - }, - (e) -> { - log(TAG, "invokeFido2GetCredentials() failed. ", e); - RecordHistogram.recordEnumeratedHistogram( - GET_CREDENTIALS_RESULT_HISTOGRAM, - failureMetric, - GmsCoreGetCredentialsResult.NUM_ENTRIES); - failureCallback.onFailure(e); - }); + failureCallback.onFailure(new Exception()); } private void recordSuccessMetrics( diff --git a/components/webauthn/android/java/src/org/chromium/components/webauthn/GmsCoreUtils.java b/components/webauthn/android/java/src/org/chromium/components/webauthn/GmsCoreUtils.java --- a/components/webauthn/android/java/src/org/chromium/components/webauthn/GmsCoreUtils.java +++ b/components/webauthn/android/java/src/org/chromium/components/webauthn/GmsCoreUtils.java @@ -4,9 +4,6 @@ package org.chromium.components.webauthn; -import com.google.android.gms.tasks.OnFailureListener; -import com.google.android.gms.tasks.OnSuccessListener; - import org.chromium.base.PackageUtils; import org.chromium.base.ResettersForTesting; import org.chromium.base.task.PostTask; @@ -15,28 +12,13 @@ import org.chromium.build.annotations.NullMarked; @NullMarked public class GmsCoreUtils { - private static final String GMSCORE_PACKAGE_NAME = "com.google.android.gms"; - private static final int GMSCORE_MIN_VERSION_GET_MATCHING_CRED_IDS = 223300000; - private static final int GMSCORE_MIN_VERSION_HYBRID_API = 231206000; - private static final int GMSCORE_MIN_VERSION_PASSKEY_CACHE = 244400000; - private static final int GMSCORE_MIN_VERSION_RESULT_RECEIVER = 240700000; - // This version is the minimum needed for dynamic lookup of services, which - // the persistent API requires. - static final int GMSCORE_MIN_VERSION_DYNAMIC_LOOKUP = 17895000; - static final int GMSCORE_MIN_VERSION = 16890000; - - private static int sGmsCorePackageVersion; - public static int getGmsCoreVersion() { - if (sGmsCorePackageVersion == 0) { - sGmsCorePackageVersion = PackageUtils.getPackageVersion(GMSCORE_PACKAGE_NAME); - } - return sGmsCorePackageVersion; + return 0; } /** Returns whether WebAuthn APIs are supported in GMSCore. */ public static boolean isWebauthnSupported() { - return getGmsCoreVersion() >= GMSCORE_MIN_VERSION; + return false; } /** @@ -45,28 +27,22 @@ public class GmsCoreUtils { * version. */ public static boolean isGetMatchingCredentialIdsSupported() { - return getGmsCoreVersion() >= GMSCORE_MIN_VERSION_GET_MATCHING_CRED_IDS; + return false; } /** Returns whether the hybrid sign in API is supported. */ public static boolean isHybridClientApiSupported() { - return getGmsCoreVersion() >= GMSCORE_MIN_VERSION_HYBRID_API; + return false; } /** Returns whether makeCredential / getAssertion APIs support responding via ResultReceiver. */ static boolean isResultReceiverSupported() { - return getGmsCoreVersion() >= GMSCORE_MIN_VERSION_RESULT_RECEIVER; + return false; } /** Returns whether the passkey cache is supported. */ public static boolean isPasskeyCacheSupported() { - return getGmsCoreVersion() >= GMSCORE_MIN_VERSION_PASSKEY_CACHE; - } - - public static void setGmsCoreVersionForTesting(int version) { - int previousVersion = sGmsCorePackageVersion; - sGmsCorePackageVersion = version; - ResettersForTesting.register(() -> sGmsCorePackageVersion = previousVersion); + return false; } /** @@ -74,30 +50,30 @@ public class GmsCoreUtils { * inner callback's invocation to the UI thread to avoid contention over state. Intent callbacks * can be run on a different thread from the one on which they were originally invoked. */ - public static OnSuccessListener wrapSuccessCallback(OnSuccessListener callback) { - return (result) -> { - PostTask.runOrPostTask( - TaskTraits.UI_USER_VISIBLE, - () -> { - callback.onSuccess(result); - }); - }; - } + // public static OnSuccessListener wrapSuccessCallback(OnSuccessListener callback) { + // return (result) -> { + // PostTask.runOrPostTask( + // TaskTraits.UI_USER_VISIBLE, + // () -> { + // callback.onSuccess(result); + // }); + // }; + // } /** * Returns a FailureListener callback that wraps another FailureListener callback, but posts the * inner callback's invocation to the UI thread to avoid contention over state. Intent callbacks * can be run on a different thread from the one on which they were originally invoked. */ - public static OnFailureListener wrapFailureCallback(OnFailureListener callback) { - // Post callbacks to UI thread to avoid contention over state, since this can be called - // on a different thread than was originally used to invoke the Intent. - return (e) -> { - PostTask.runOrPostTask( - TaskTraits.UI_USER_VISIBLE, - () -> { - callback.onFailure(e); - }); - }; - } + // public static OnFailureListener wrapFailureCallback(OnFailureListener callback) { + // // Post callbacks to UI thread to avoid contention over state, since this can be called + // // on a different thread than was originally used to invoke the Intent. + // return (e) -> { + // PostTask.runOrPostTask( + // TaskTraits.UI_USER_VISIBLE, + // () -> { + // callback.onFailure(e); + // }); + // }; + // } } diff --git a/components/webauthn/android/java/src/org/chromium/components/webauthn/IdentityCredentialsHelper.java b/components/webauthn/android/java/src/org/chromium/components/webauthn/IdentityCredentialsHelper.java --- a/components/webauthn/android/java/src/org/chromium/components/webauthn/IdentityCredentialsHelper.java +++ b/components/webauthn/android/java/src/org/chromium/components/webauthn/IdentityCredentialsHelper.java @@ -13,12 +13,6 @@ import android.os.Bundle; import androidx.annotation.VisibleForTesting; -import com.google.android.gms.identitycredentials.CreateCredentialHandle; -import com.google.android.gms.identitycredentials.CreateCredentialRequest; -import com.google.android.gms.identitycredentials.IdentityCredentialClient; -import com.google.android.gms.identitycredentials.IdentityCredentialManager; -import com.google.android.gms.identitycredentials.SignalCredentialStateRequest; - import org.jni_zero.JNINamespace; import org.chromium.blink.mojom.AuthenticatorStatus; @@ -57,70 +51,15 @@ public class IdentityCredentialsHelper { log(TAG, "handleConditionalCreateRequest"); WebauthnRequestCallback callback = assertNonNull(mAuthenticationContextProvider.getRequestCallback()); - try { - IdentityCredentialClient client = - IdentityCredentialManager.Companion.getClient( - assertNonNull(mAuthenticationContextProvider.getContext())); - client.createCredential(buildConditionalCreateRequest(options, origin, clientDataHash)) - .addOnSuccessListener( - GmsCoreUtils.wrapSuccessCallback( - (handle) -> - onConditionalCreateSuccess( - clientDataJson, options, handle))) - .addOnFailureListener( - GmsCoreUtils.wrapFailureCallback(this::onConditionalCreateFailure)); - } catch (Exception e) { - logError(TAG, "CreateCredential failed ", e); - callback.onComplete( - WebauthnRequestResponse.forFailedMakeCredential( - AuthenticatorStatus.NOT_ALLOWED_ERROR, - new RequestMetrics.Builder() - .setMakeCredentialOutcome(MakeCredentialOutcome.OTHER_FAILURE) - .setMakeCredentialResult( - CredentialRequestResult - .ANDROID_IDENTITY_CREDENTIALS_ERROR) - .build())); - return; - } - } - - private void onConditionalCreateSuccess( - byte @Nullable [] clientDataJson, - PublicKeyCredentialCreationOptions options, - CreateCredentialHandle handle) { - log(TAG, "onConditionalCreateSuccess"); - Bundle data = assertNonNull(handle.getCreateCredentialResponse()).getData(); - MakeCredentialAuthenticatorResponse response = - CredManHelper.parseCreateCredentialResponseData(data); - if (response == null) { - log(TAG, "parseCreateCredentialResponseData() failed"); - assumeNonNull(mAuthenticationContextProvider.getRequestCallback()) - .onComplete( - WebauthnRequestResponse.forFailedMakeCredential( - AuthenticatorStatus.NOT_ALLOWED_ERROR, - new RequestMetrics.Builder() - .setMakeCredentialOutcome( - MakeCredentialOutcome.OTHER_FAILURE) - .setMakeCredentialResult( - CredentialRequestResult - .ANDROID_IDENTITY_CREDENTIALS_ERROR) - .build())); - return; - } - if (clientDataJson != null) { - response.info.clientDataJson = clientDataJson; - } - response.echoCredProps = options.credProps; - assumeNonNull(mAuthenticationContextProvider.getRequestCallback()) - .onComplete( - WebauthnRequestResponse.forSuccessfulMakeCredential( - response, - new RequestMetrics.Builder() - .setMakeCredentialOutcome(MakeCredentialOutcome.SUCCESS) - .setMakeCredentialResult( - CredentialRequestResult - .ANDROID_IDENTITY_CREDENTIALS_SUCCESS) - .build())); + callback.onComplete( + WebauthnRequestResponse.forFailedMakeCredential( + AuthenticatorStatus.NOT_ALLOWED_ERROR, + new RequestMetrics.Builder() + .setMakeCredentialOutcome(MakeCredentialOutcome.OTHER_FAILURE) + .setMakeCredentialResult( + CredentialRequestResult + .ANDROID_IDENTITY_CREDENTIALS_ERROR) + .build())); } private void onConditionalCreateFailure(Exception e) { @@ -154,70 +93,5 @@ public class IdentityCredentialsHelper { // Dispatches a Report request. public void handleReportRequest( PublicKeyCredentialReportOptions options, @Nullable String origin) { - log(TAG, "handleReportRequest"); - try { - IdentityCredentialClient client = - IdentityCredentialManager.Companion.getClient( - assertNonNull(mAuthenticationContextProvider.getContext())); - client.signalCredentialState(buildSignalCredentialStateRequest(options, origin)) - .addOnSuccessListener( - GmsCoreUtils.wrapSuccessCallback( - (handle) -> - log(TAG, "Signal API request completed successfully"))) - .addOnFailureListener( - GmsCoreUtils.wrapFailureCallback( - (e) -> logError(TAG, "Signal API Report request failed ", e))); - } catch (Exception e) { - logError(TAG, "handleReportRequest failed ", e); - return; - } - } - - @VisibleForTesting - public SignalCredentialStateRequest buildSignalCredentialStateRequest( - PublicKeyCredentialReportOptions options, @Nullable String origin) { - String type; - if (options.unknownCredentialId != null) { - type = CRED_MAN_PREFIX + "SIGNAL_UNKNOWN_CREDENTIAL_STATE_REQUEST_TYPE"; - } else if (options.allAcceptedCredentials != null) { - type = CRED_MAN_PREFIX + "SIGNAL_ALL_ACCEPTED_CREDENTIALS_REQUEST_TYPE"; - } else { - assert (options.currentUserDetails != null); - type = CRED_MAN_PREFIX + "SIGNAL_CURRENT_USER_DETAILS_STATE_REQUEST_TYPE"; - } - - String requestJson = - Fido2CredentialRequestJni.get().reportOptionsToJson(options.serialize()); - Bundle requestDataBundle = new Bundle(); - requestDataBundle.putCharSequence(CRED_MAN_PREFIX + "signal_request_json_key", requestJson); - - return new SignalCredentialStateRequest(type, origin, requestDataBundle); - } - - @VisibleForTesting - public CreateCredentialRequest buildConditionalCreateRequest( - PublicKeyCredentialCreationOptions options, - String origin, - byte @Nullable [] clientDataHash) { - String requestJson = - Fido2CredentialRequestJni.get().createOptionsToJson(options.serialize()); - - Bundle credentialData = requestBundle(requestJson, clientDataHash); - Bundle displayInfo = new Bundle(); - displayInfo.putCharSequence(CRED_MAN_PREFIX + "BUNDLE_KEY_USER_ID", options.user.name); - displayInfo.putCharSequence( - CRED_MAN_PREFIX + "BUNDLE_KEY_USER_DISPLAY_NAME", options.user.displayName); - credentialData.putBundle(CRED_MAN_PREFIX + "BUNDLE_KEY_REQUEST_DISPLAY_INFO", displayInfo); - - Bundle candidateQueryData = requestBundle(requestJson, clientDataHash); - candidateQueryData.putBoolean(CRED_MAN_PREFIX + "BUNDLE_KEY_IS_CONDITIONAL_REQUEST", true); - - return new CreateCredentialRequest( - CRED_MAN_PREFIX + "TYPE_PUBLIC_KEY_CREDENTIAL", - credentialData, - candidateQueryData, - origin, - requestJson, - null); } } diff --git a/components/webauthn/android/java/src/org/chromium/components/webauthn/WebauthnModeProvider.java b/components/webauthn/android/java/src/org/chromium/components/webauthn/WebauthnModeProvider.java --- a/components/webauthn/android/java/src/org/chromium/components/webauthn/WebauthnModeProvider.java +++ b/components/webauthn/android/java/src/org/chromium/components/webauthn/WebauthnModeProvider.java @@ -9,7 +9,6 @@ import org.jni_zero.NativeMethods; import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; -import org.chromium.components.webauthn.Fido2ApiCall.Fido2ApiCallParams; import org.chromium.components.webauthn.cred_man.AppCredManRequestDecorator; import org.chromium.components.webauthn.cred_man.BrowserCredManRequestDecorator; import org.chromium.components.webauthn.cred_man.CredManRequestDecorator; @@ -51,20 +50,6 @@ public class WebauthnModeProvider { return null; } - public @Nullable Fido2ApiCallParams getFido2ApiCallParams(@Nullable WebContents webContents) { - int mode = getWebauthnMode(webContents); - if (mode == WebauthnMode.APP) { - return Fido2ApiCall.APP_API; - } else if (mode == WebauthnMode.BROWSER - || mode == WebauthnMode.CHROME - || mode == WebauthnMode.CHROME_3PP_ENABLED) { - return Fido2ApiCall.BROWSER_API; - } else { - assert false : "WebauthnMode not set! See this class's JavaDoc."; - } - return null; - } - public @WebauthnMode int getWebauthnMode(@Nullable WebContents webContents) { if (mGlobalMode != WebauthnMode.NONE) return mGlobalMode; return WebauthnModeProviderJni.get().getWebauthnModeForWebContents(webContents); diff --git a/components/webauthn/android/java/src/org/chromium/components/webauthn/cred_man/CredManMetricsHelper.java b/components/webauthn/android/java/src/org/chromium/components/webauthn/cred_man/CredManMetricsHelper.java --- a/components/webauthn/android/java/src/org/chromium/components/webauthn/cred_man/CredManMetricsHelper.java +++ b/components/webauthn/android/java/src/org/chromium/components/webauthn/cred_man/CredManMetricsHelper.java @@ -8,7 +8,6 @@ import androidx.annotation.IntDef; import org.chromium.base.metrics.RecordHistogram; import org.chromium.build.annotations.NullMarked; -import org.chromium.components.webauthn.Fido2CredentialRequest.CancellableUiState; /** * This class is responsible for emitting histograms regarding CredMan usage in @@ -104,20 +103,6 @@ public class CredManMetricsHelper { } public void reportGetCredentialMetrics( - @CredManGetRequestEnum int value, @CancellableUiState int cancellableUiState) { - assert !(cancellableUiState == CancellableUiState.NONE) - || !(value == CredManGetRequestEnum.SUCCESS_PASSWORD) - : "Passwords cannot be received from modal requests!"; - if (cancellableUiState == CancellableUiState.NONE) { - RecordHistogram.recordEnumeratedHistogram( - "WebAuthentication.Android.CredManModalRequests", - value, - CredManGetRequestEnum.NUM_ENTRIES); - return; - } - RecordHistogram.recordEnumeratedHistogram( - "WebAuthentication.Android.CredManConditionalRequest", - value, - CredManGetRequestEnum.NUM_ENTRIES); + @CredManGetRequestEnum int value, int cancellableUiState) { } } diff --git a/content/browser/push_messaging/push_messaging_manager.cc b/content/browser/push_messaging/push_messaging_manager.cc --- a/content/browser/push_messaging/push_messaging_manager.cc +++ b/content/browser/push_messaging/push_messaging_manager.cc @@ -800,7 +800,7 @@ void PushMessagingManager::GetSubscriptionInfo( } PushMessagingService* PushMessagingManager::GetService() { - return render_process_host_->GetBrowserContext()->GetPushMessagingService(); + return nullptr; } } // namespace content 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 @@ -160,10 +160,6 @@ android_library("content_full_java") { ":content_java_resources", ":content_main_dex_java", ":content_util_java", - "$google_play_services_package:google_play_services_auth_api_phone_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:flagged_apis_java", "//base:process_launcher_java", diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn --- a/content/test/BUILD.gn +++ b/content/test/BUILD.gn @@ -3865,10 +3865,6 @@ if (is_android) { testonly = true sources = content_java_sources_needing_jni deps = [ - "$google_play_services_package:google_play_services_auth_api_phone_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", "//content/public/android:content_java", "//third_party/jni_zero:jni_zero_java", diff --git a/device/BUILD.gn b/device/BUILD.gn --- a/device/BUILD.gn +++ b/device/BUILD.gn @@ -526,9 +526,6 @@ if (is_android) { "vr/public/junit/src/org/chromium/device/vr/XrFeatureStatusTest.java", ] deps = [ - "$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_location_java", "//base:base_java", "//base:base_java_test_support", "//base:base_junit_test_support", diff --git a/services/BUILD.gn b/services/BUILD.gn --- a/services/BUILD.gn +++ b/services/BUILD.gn @@ -167,12 +167,6 @@ if (is_android) { "shape_detection/android/junit/src/org/chromium/shape_detection/BitmapUtilsTest.java", ] deps = [ - "$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_location_java", - "$google_play_services_package:google_play_services_tasks_java", - "$google_play_services_package:google_play_services_vision_common_java", - "$google_play_services_package:google_play_services_vision_java", "//base:base_java", "//base:base_java_test_support", "//base:base_junit_test_support", @@ -211,10 +205,6 @@ if (is_android) { "shape_detection/android/javatests/src/org/chromium/shape_detection/TextDetectionImplTest.java", ] deps = [ - "$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_vision_common_java", - "$google_play_services_package:google_play_services_vision_java", "//base:base_java", "//base:base_java_test_support", "//mojo/public/java:base_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 @@ -160,10 +160,6 @@ if (is_android) { deps = [ ":geolocation_jni_headers", - "$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_location_java", - "$google_play_services_package:google_play_services_tasks_java", "//base:base_java", "//build/android:build_java", "//components/location/android:location_java", 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 @@ -129,8 +129,6 @@ if (is_android) { ] deps = [ - "$google_play_services_package:google_play_services_base_java", - "$google_play_services_package:google_play_services_basement_java", "//base:base_java", "//mojo/public/java:base_java", "//mojo/public/java:bindings_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 @@ -91,21 +91,10 @@ if (!limit_android_deps) { sources = [ "util/org/chromium/gms/ChromiumPlayServicesAvailability.java" ] deps = [ - "$google_play_services_package:google_play_services_base_java", - "$google_play_services_package:google_play_services_basement_java", "//base:resetters_java", ] } } - - java_group("playcore_java") { - preferred_dep = true - if (defined(playcore_target)) { - deps = [ playcore_target ] - } else { - deps = [ "//third_party/android_deps:com_google_android_play_feature_delivery_java" ] - } - } } # The section below is generated by running diff --git a/third_party/android_deps/autorolled/BUILD.gn b/third_party/android_deps/autorolled/BUILD.gn --- a/third_party/android_deps/autorolled/BUILD.gn +++ b/third_party/android_deps/autorolled/BUILD.gn @@ -70,325 +70,6 @@ template("define_autorolled_targets") { ] } - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt("google_play_services_auth_java") { - aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_auth/play-services-auth.aar" - info_path = "autorolled/committed/libs/com_google_android_gms_play_services_auth/com_google_android_gms_play_services_auth.info" - enable_bytecode_checks = false - deps = [ - "$google_play_services_package:google_play_services_auth_api_phone_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_fido_java", - "$google_play_services_package:google_play_services_tasks_java", - "//third_party/androidx:androidx_fragment_fragment_java", - "//third_party/androidx:androidx_loader_loader_java", - ] - } - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt("google_play_services_auth_api_phone_java") { - aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_auth_api_phone/play-services-auth-api-phone.aar" - info_path = "autorolled/committed/libs/com_google_android_gms_play_services_auth_api_phone/com_google_android_gms_play_services_auth_api_phone.info" - enable_bytecode_checks = false - deps = [ - "$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", - "//third_party/android_deps:org_jetbrains_kotlinx_kotlinx_coroutines_core_java", - "//third_party/android_deps:org_jetbrains_kotlinx_kotlinx_coroutines_play_services_java", - "//third_party/kotlin_stdlib:kotlin_stdlib_java", - ] - } - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt("google_play_services_auth_base_java") { - aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_auth_base/play-services-auth-base.aar" - info_path = "autorolled/committed/libs/com_google_android_gms_play_services_auth_base/com_google_android_gms_play_services_auth_base.info" - enable_bytecode_checks = false - deps = [ - "$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", - "//third_party/androidx:androidx_collection_collection_java", - "//third_party/kotlin_stdlib:kotlin_stdlib_java", - ] - } - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt("google_play_services_auth_blockstore_java") { - aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_auth_blockstore/play-services-auth-blockstore.aar" - info_path = "autorolled/committed/libs/com_google_android_gms_play_services_auth_blockstore/com_google_android_gms_play_services_auth_blockstore.info" - enable_bytecode_checks = false - deps = [ - "$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", - "//third_party/kotlin_stdlib:kotlin_stdlib_java", - ] - } - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt("google_play_services_base_java") { - aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_base/play-services-base.aar" - info_path = "autorolled/committed/libs/com_google_android_gms_play_services_base/com_google_android_gms_play_services_base.info" - enable_bytecode_checks = false - deps = [ - "$google_play_services_package:google_play_services_basement_java", - "$google_play_services_package:google_play_services_tasks_java", - "//third_party/androidx:androidx_collection_collection_java", - "//third_party/androidx:androidx_core_core_java", - "//third_party/androidx:androidx_fragment_fragment_java", - ] - } - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt("google_play_services_basement_java") { - aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_basement/play-services-basement.aar" - info_path = "autorolled/committed/libs/com_google_android_gms_play_services_basement/com_google_android_gms_play_services_basement.info" - enable_bytecode_checks = false - deps = [ - "//third_party/androidx:androidx_collection_collection_java", - "//third_party/androidx:androidx_core_core_java", - "//third_party/androidx:androidx_fragment_fragment_java", - ] - - jar_excluded_patterns = [] - if (!enable_java_asserts) { - # Omit the file since we use our own copy. - jar_excluded_patterns += - [ "com/google/android/gms/common/internal/Preconditions.class" ] - deps += [ "//third_party/android_deps/local_modifications/preconditions:gms_stub_preconditions_java" ] - } - - # https://crbug.com/989505 - jar_excluded_patterns += [ "META-INF/proguard/*" ] - } - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt("google_play_services_cast_java") { - aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_cast/play-services-cast.aar" - info_path = "autorolled/committed/libs/com_google_android_gms_play_services_cast/com_google_android_gms_play_services_cast.info" - enable_bytecode_checks = false - deps = [ - "$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_flags_java", - "$google_play_services_package:google_play_services_tasks_java", - "//third_party/androidx:androidx_core_core_java", - "//third_party/androidx:androidx_mediarouter_mediarouter_java", - "//third_party/kotlin_stdlib:kotlin_stdlib_java", - ] - } - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt("google_play_services_cast_framework_java") { - aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_cast_framework/play-services-cast-framework.aar" - info_path = "autorolled/committed/libs/com_google_android_gms_play_services_cast_framework/com_google_android_gms_play_services_cast_framework.info" - enable_bytecode_checks = false - deps = [ - "$google_play_services_package:google_android_datatransport_transport_api_java", - "$google_play_services_package:google_android_datatransport_transport_backend_cct_java", - "$google_play_services_package:google_android_datatransport_transport_runtime_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_cast_java", - "$google_play_services_package:google_play_services_tasks_java", - "//third_party/android_deps:guava_java", - "//third_party/androidx:androidx_appcompat_appcompat_java", - "//third_party/androidx:androidx_collection_collection_java", - "//third_party/androidx:androidx_concurrent_concurrent_futures_java", - "//third_party/androidx:androidx_core_core_java", - "//third_party/androidx:androidx_fragment_fragment_java", - "//third_party/androidx:androidx_media_media_java", - "//third_party/androidx:androidx_mediarouter_mediarouter_java", - "//third_party/androidx:androidx_recyclerview_recyclerview_java", - "//third_party/kotlin_stdlib:kotlin_stdlib_java", - ] - } - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt("google_play_services_fido_java") { - aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_fido/play-services-fido.aar" - info_path = "autorolled/committed/libs/com_google_android_gms_play_services_fido/com_google_android_gms_play_services_fido.info" - enable_bytecode_checks = false - deps = [ - "$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", - "//third_party/android_deps:org_jetbrains_kotlinx_kotlinx_coroutines_core_java", - "//third_party/kotlin_stdlib:kotlin_stdlib_java", - ] - } - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt("google_play_services_gcm_java") { - aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_gcm/play-services-gcm.aar" - info_path = "autorolled/committed/libs/com_google_android_gms_play_services_gcm/com_google_android_gms_play_services_gcm.info" - enable_bytecode_checks = false - deps = [ - "$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_iid_java", - "$google_play_services_package:google_play_services_stats_java", - "//third_party/androidx:androidx_collection_collection_java", - "//third_party/androidx:androidx_core_core_java", - "//third_party/androidx:androidx_legacy_legacy_support_core_utils_java", - ] - } - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt("google_play_services_identity_credentials_java") { - aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_identity_credentials/play-services-identity-credentials.aar" - info_path = "autorolled/committed/libs/com_google_android_gms_play_services_identity_credentials/com_google_android_gms_play_services_identity_credentials.info" - enable_bytecode_checks = false - deps = [ - "$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", - "//third_party/kotlin_stdlib:kotlin_stdlib_java", - ] - } - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt("google_play_services_iid_java") { - aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_iid/play-services-iid.aar" - info_path = "autorolled/committed/libs/com_google_android_gms_play_services_iid/com_google_android_gms_play_services_iid.info" - enable_bytecode_checks = false - deps = [ - "$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_stats_java", - "$google_play_services_package:google_play_services_tasks_java", - "//third_party/androidx:androidx_collection_collection_java", - "//third_party/androidx:androidx_core_core_java", - ] - } - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt("google_play_services_instantapps_java") { - aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_instantapps/play-services-instantapps.aar" - info_path = "autorolled/committed/libs/com_google_android_gms_play_services_instantapps/com_google_android_gms_play_services_instantapps.info" - enable_bytecode_checks = false - deps = [ - "$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", - ] - } - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt("google_play_services_location_java") { - aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_location/play-services-location.aar" - info_path = "autorolled/committed/libs/com_google_android_gms_play_services_location/com_google_android_gms_play_services_location.info" - enable_bytecode_checks = false - deps = [ - "$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", - "//third_party/android_deps:org_jetbrains_kotlinx_kotlinx_coroutines_android_java", - "//third_party/android_deps:org_jetbrains_kotlinx_kotlinx_coroutines_core_java", - "//third_party/kotlin_stdlib:kotlin_stdlib_java", - ] - } - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt("google_play_services_tasks_java") { - aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_tasks/play-services-tasks.aar" - info_path = "autorolled/committed/libs/com_google_android_gms_play_services_tasks/com_google_android_gms_play_services_tasks.info" - enable_bytecode_checks = false - deps = [ - "$google_play_services_package:google_play_services_basement_java", - ] - } - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt("google_play_services_time_java") { - aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_time/play-services-time.aar" - info_path = "autorolled/committed/libs/com_google_android_gms_play_services_time/com_google_android_gms_play_services_time.info" - enable_bytecode_checks = false - deps = [ - "$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", - ] - } - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt("google_play_services_vision_java") { - aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_vision/play-services-vision.aar" - info_path = "autorolled/committed/libs/com_google_android_gms_play_services_vision/com_google_android_gms_play_services_vision.info" - enable_bytecode_checks = false - deps = [ - "$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_vision_common_java", - ] - } - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt("google_play_services_vision_common_java") { - aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_vision_common/play-services-vision-common.aar" - info_path = "autorolled/committed/libs/com_google_android_gms_play_services_vision_common/com_google_android_gms_play_services_vision_common.info" - enable_bytecode_checks = false - deps = [ - "$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_clearcut_java", - "$google_play_services_package:google_play_services_flags_java", - "$google_play_services_package:google_play_services_phenotype_java", - ] - } - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - android_aar_prebuilt( - "com_google_android_libraries_identity_googleid_googleid_java") { - aar_path = "autorolled/cipd/libs/com_google_android_libraries_identity_googleid_googleid/googleid.aar" - info_path = "autorolled/committed/libs/com_google_android_libraries_identity_googleid_googleid/com_google_android_libraries_identity_googleid_googleid.info" - enable_bytecode_checks = false - deps = [ - "//third_party/androidx:androidx_credentials_credentials_java", - "//third_party/kotlin_stdlib:kotlin_stdlib_java", - ] - } - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. if (!defined(material_design_target)) { android_aar_prebuilt("com_google_android_material_material_java") { @@ -438,37 +119,6 @@ template("define_autorolled_targets") { } } - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (!defined(playcore_target)) { - android_aar_prebuilt("com_google_android_play_feature_delivery_java") { - aar_path = "autorolled/cipd/libs/com_google_android_play_feature_delivery/feature-delivery.aar" - info_path = "autorolled/committed/libs/com_google_android_play_feature_delivery/com_google_android_play_feature_delivery.info" - enable_bytecode_checks = false - - # Target is swapped out when internal code is enabled. - # Please depend on //third_party/android_deps:playcore_java instead. - visibility = [ "//third_party/android_deps:*" ] - deps = [ - "$google_play_services_package:google_play_services_basement_java", - "$google_play_services_package:google_play_services_tasks_java", - "//third_party/android_deps:com_google_android_play_core_common_java", - ] - } - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - android_aar_prebuilt("com_google_android_play_review_java") { - aar_path = - "autorolled/cipd/libs/com_google_android_play_review/review.aar" - info_path = "autorolled/committed/libs/com_google_android_play_review/com_google_android_play_review.info" - enable_bytecode_checks = false - deps = [ - "$google_play_services_package:google_play_services_basement_java", - "$google_play_services_package:google_play_services_tasks_java", - "//third_party/android_deps:com_google_android_play_core_common_java", - ] - } - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. android_aar_prebuilt("com_google_ar_impress_java") { aar_path = "autorolled/cipd/libs/com_google_ar_impress/impress.aar" @@ -522,38 +172,6 @@ template("define_autorolled_targets") { preferred_dep = true } - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt("google_firebase_firebase_messaging_java") { - aar_path = "autorolled/cipd/libs/com_google_firebase_firebase_messaging/firebase-messaging.aar" - info_path = "autorolled/committed/libs/com_google_firebase_firebase_messaging/com_google_firebase_firebase_messaging.info" - enable_bytecode_checks = false - deps = [ - "$google_play_services_package:google_android_datatransport_transport_api_java", - "$google_play_services_package:google_android_datatransport_transport_backend_cct_java", - "$google_play_services_package:google_android_datatransport_transport_runtime_java", - "$google_play_services_package:google_firebase_firebase_common_java", - "$google_play_services_package:google_firebase_firebase_components_java", - "$google_play_services_package:google_firebase_firebase_datatransport_java", - "$google_play_services_package:google_firebase_firebase_encoders_java", - "$google_play_services_package:google_firebase_firebase_encoders_json_java", - "$google_play_services_package:google_firebase_firebase_encoders_proto_java", - "$google_play_services_package:google_firebase_firebase_iid_interop_java", - "$google_play_services_package:google_firebase_firebase_installations_interop_java", - "$google_play_services_package:google_firebase_firebase_installations_java", - "$google_play_services_package:google_firebase_firebase_measurement_connector_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_cloud_messaging_java", - "$google_play_services_package:google_play_services_stats_java", - "$google_play_services_package:google_play_services_tasks_java", - "//third_party/android_deps:com_google_errorprone_error_prone_annotations_java", - "//third_party/androidx:androidx_annotation_annotation_java", - "//third_party/kotlin_stdlib:kotlin_stdlib_java", - ] - } - } - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. if (!defined(guava_android_target)) { java_prebuilt("com_google_guava_guava_java") { @@ -595,64 +213,6 @@ template("define_autorolled_targets") { supports_android = true enable_bytecode_checks = false } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - android_aar_prebuilt("com_google_mlkit_common_java") { - aar_path = "autorolled/cipd/libs/com_google_mlkit_common/common.aar" - info_path = "autorolled/committed/libs/com_google_mlkit_common/com_google_mlkit_common.info" - enable_bytecode_checks = false - deps = [ - "$google_play_services_package:google_android_datatransport_transport_api_java", - "$google_play_services_package:google_android_datatransport_transport_backend_cct_java", - "$google_play_services_package:google_android_datatransport_transport_runtime_java", - "$google_play_services_package:google_firebase_firebase_components_java", - "$google_play_services_package:google_firebase_firebase_encoders_java", - "$google_play_services_package:google_firebase_firebase_encoders_json_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", - "//third_party/androidx:androidx_appcompat_appcompat_java", - "//third_party/androidx:androidx_core_core_java", - ] - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - android_aar_prebuilt("com_google_mlkit_genai_common_java") { - aar_path = - "autorolled/cipd/libs/com_google_mlkit_genai_common/genai-common.aar" - info_path = "autorolled/committed/libs/com_google_mlkit_genai_common/com_google_mlkit_genai_common.info" - enable_bytecode_checks = false - deps = [ - "$google_play_services_package:google_play_services_basement_java", - "//third_party/android_deps:org_jetbrains_kotlinx_kotlinx_coroutines_core_java", - "//third_party/android_deps:org_jetbrains_kotlinx_kotlinx_coroutines_guava_java", - "//third_party/kotlin_stdlib:kotlin_stdlib_java", - ] - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - android_aar_prebuilt("com_google_mlkit_genai_prompt_java") { - aar_path = - "autorolled/cipd/libs/com_google_mlkit_genai_prompt/genai-prompt.aar" - info_path = "autorolled/committed/libs/com_google_mlkit_genai_prompt/com_google_mlkit_genai_prompt.info" - enable_bytecode_checks = false - deps = [ - "$google_play_services_package:google_android_datatransport_transport_api_java", - "$google_play_services_package:google_android_datatransport_transport_backend_cct_java", - "$google_play_services_package:google_android_datatransport_transport_runtime_java", - "$google_play_services_package:google_firebase_firebase_encoders_java", - "$google_play_services_package:google_firebase_firebase_encoders_json_java", - "$google_play_services_package:google_play_services_basement_java", - "$google_play_services_package:google_play_services_tasks_java", - "//third_party/android_deps:com_google_mlkit_common_java", - "//third_party/android_deps:com_google_mlkit_genai_common_java", - "//third_party/android_deps:guava_java", - "//third_party/android_deps:org_jetbrains_kotlinx_kotlinx_coroutines_core_java", - "//third_party/android_deps:org_jetbrains_kotlinx_kotlinx_coroutines_guava_java", - "//third_party/kotlin_stdlib:kotlin_stdlib_java", - ] - } - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. if (!defined(android_proto_runtime)) { java_prebuilt("com_google_protobuf_protobuf_javalite_java") { @@ -1057,190 +617,6 @@ template("define_autorolled_targets") { ] } - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt("google_android_datatransport_transport_api_java") { - aar_path = "autorolled/cipd/libs/com_google_android_datatransport_transport_api/transport-api.aar" - info_path = "autorolled/committed/libs/com_google_android_datatransport_transport_api/com_google_android_datatransport_transport_api.info" - enable_bytecode_checks = false - - # To remove visibility constraint, add this dependency to - # //third_party/android_deps/autorolled/build.gradle.template - visibility = [ - ":*", - "//third_party/androidx:*", - ] - deps = [ "//third_party/androidx:androidx_annotation_annotation_java" ] - } - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt( - "google_android_datatransport_transport_backend_cct_java") { - aar_path = "autorolled/cipd/libs/com_google_android_datatransport_transport_backend_cct/transport-backend-cct.aar" - info_path = "autorolled/committed/libs/com_google_android_datatransport_transport_backend_cct/com_google_android_datatransport_transport_backend_cct.info" - enable_bytecode_checks = false - - # To remove visibility constraint, add this dependency to - # //third_party/android_deps/autorolled/build.gradle.template - visibility = [ - ":*", - "//third_party/androidx:*", - ] - deps = [ - "$google_play_services_package:google_android_datatransport_transport_api_java", - "$google_play_services_package:google_android_datatransport_transport_runtime_java", - "$google_play_services_package:google_firebase_firebase_encoders_java", - "$google_play_services_package:google_firebase_firebase_encoders_json_java", - "//third_party/androidx:androidx_annotation_annotation_java", - ] - } - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt( - "google_android_datatransport_transport_runtime_java") { - aar_path = "autorolled/cipd/libs/com_google_android_datatransport_transport_runtime/transport-runtime.aar" - info_path = "autorolled/committed/libs/com_google_android_datatransport_transport_runtime/com_google_android_datatransport_transport_runtime.info" - enable_bytecode_checks = false - - # To remove visibility constraint, add this dependency to - # //third_party/android_deps/autorolled/build.gradle.template - visibility = [ - ":*", - "//third_party/androidx:*", - ] - deps = [ - "$google_play_services_package:google_android_datatransport_transport_api_java", - "$google_play_services_package:google_firebase_firebase_encoders_java", - "$google_play_services_package:google_firebase_firebase_encoders_proto_java", - "//third_party/android_deps:javax_inject_javax_inject_java", - "//third_party/androidx:androidx_annotation_annotation_java", - ] - } - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt("google_play_services_clearcut_java") { - aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_clearcut/play-services-clearcut.aar" - info_path = "autorolled/committed/libs/com_google_android_gms_play_services_clearcut/com_google_android_gms_play_services_clearcut.info" - enable_bytecode_checks = false - - # To remove visibility constraint, add this dependency to - # //third_party/android_deps/autorolled/build.gradle.template - visibility = [ - ":*", - "//third_party/androidx:*", - ] - deps = [ - "$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_phenotype_java", - "$google_play_services_package:google_play_services_tasks_java", - "//third_party/androidx:androidx_core_core_java", - ] - } - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt("google_play_services_cloud_messaging_java") { - aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_cloud_messaging/play-services-cloud-messaging.aar" - info_path = "autorolled/committed/libs/com_google_android_gms_play_services_cloud_messaging/com_google_android_gms_play_services_cloud_messaging.info" - enable_bytecode_checks = false - - # To remove visibility constraint, add this dependency to - # //third_party/android_deps/autorolled/build.gradle.template - visibility = [ - ":*", - "//third_party/androidx:*", - ] - deps = [ - "$google_play_services_package:google_play_services_basement_java", - "$google_play_services_package:google_play_services_tasks_java", - ] - } - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt("google_play_services_flags_java") { - aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_flags/play-services-flags.aar" - info_path = "autorolled/committed/libs/com_google_android_gms_play_services_flags/com_google_android_gms_play_services_flags.info" - enable_bytecode_checks = false - - # To remove visibility constraint, add this dependency to - # //third_party/android_deps/autorolled/build.gradle.template - visibility = [ - ":*", - "//third_party/androidx:*", - ] - deps = [ - "$google_play_services_package:google_play_services_base_java", - "$google_play_services_package:google_play_services_basement_java", - ] - } - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt("google_play_services_phenotype_java") { - aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_phenotype/play-services-phenotype.aar" - info_path = "autorolled/committed/libs/com_google_android_gms_play_services_phenotype/com_google_android_gms_play_services_phenotype.info" - enable_bytecode_checks = false - - # To remove visibility constraint, add this dependency to - # //third_party/android_deps/autorolled/build.gradle.template - visibility = [ - ":*", - "//third_party/androidx:*", - ] - deps = [ - "$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", - "//third_party/androidx:androidx_core_core_java", - ] - } - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt("google_play_services_stats_java") { - aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_stats/play-services-stats.aar" - info_path = "autorolled/committed/libs/com_google_android_gms_play_services_stats/com_google_android_gms_play_services_stats.info" - enable_bytecode_checks = false - - # To remove visibility constraint, add this dependency to - # //third_party/android_deps/autorolled/build.gradle.template - visibility = [ - ":*", - "//third_party/androidx:*", - ] - deps = [ - "$google_play_services_package:google_play_services_basement_java", - "//third_party/androidx:androidx_legacy_legacy_support_core_utils_java", - ] - } - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - android_aar_prebuilt("com_google_android_play_core_common_java") { - aar_path = "autorolled/cipd/libs/com_google_android_play_core_common/core-common.aar" - info_path = "autorolled/committed/libs/com_google_android_play_core_common/com_google_android_play_core_common.info" - enable_bytecode_checks = false - - # To remove visibility constraint, add this dependency to - # //third_party/android_deps/autorolled/build.gradle.template - visibility = [ - ":*", - "//third_party/androidx:*", - ] - } - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. java_prebuilt("com_google_auto_value_auto_value_annotations_java") { jar_path = "autorolled/cipd/libs/com_google_auto_value_auto_value_annotations/auto-value-annotations.jar" @@ -1257,242 +633,6 @@ template("define_autorolled_targets") { testonly = true } - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - java_prebuilt("google_firebase_firebase_annotations_java") { - jar_path = "autorolled/cipd/libs/com_google_firebase_firebase_annotations/firebase-annotations.jar" - output_name = "com_google_firebase_firebase_annotations" - supports_android = true - requires_android = true - enable_bytecode_checks = false - - # To remove visibility constraint, add this dependency to - # //third_party/android_deps/autorolled/build.gradle.template - visibility = [ - ":*", - "//third_party/androidx:*", - ] - deps = [ "//third_party/android_deps:javax_inject_javax_inject_java" ] - } - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt("google_firebase_firebase_common_java") { - aar_path = "autorolled/cipd/libs/com_google_firebase_firebase_common/firebase-common.aar" - info_path = "autorolled/committed/libs/com_google_firebase_firebase_common/com_google_firebase_firebase_common.info" - enable_bytecode_checks = false - - # To remove visibility constraint, add this dependency to - # //third_party/android_deps/autorolled/build.gradle.template - visibility = [ - ":*", - "//third_party/androidx:*", - ] - deps = [ - "$google_play_services_package:google_firebase_firebase_annotations_java", - "$google_play_services_package:google_firebase_firebase_components_java", - "$google_play_services_package:google_play_services_basement_java", - "$google_play_services_package:google_play_services_tasks_java", - "//third_party/android_deps:org_jetbrains_kotlinx_kotlinx_coroutines_play_services_java", - "//third_party/androidx:androidx_annotation_annotation_java", - "//third_party/androidx:androidx_concurrent_concurrent_futures_java", - "//third_party/androidx:androidx_datastore_datastore_preferences_java", - "//third_party/kotlin_stdlib:kotlin_stdlib_java", - ] - } - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt("google_firebase_firebase_components_java") { - aar_path = "autorolled/cipd/libs/com_google_firebase_firebase_components/firebase-components.aar" - info_path = "autorolled/committed/libs/com_google_firebase_firebase_components/com_google_firebase_firebase_components.info" - enable_bytecode_checks = false - - # To remove visibility constraint, add this dependency to - # //third_party/android_deps/autorolled/build.gradle.template - visibility = [ - ":*", - "//third_party/androidx:*", - ] - deps = [ - "$google_play_services_package:google_firebase_firebase_annotations_java", - "//third_party/android_deps:com_google_errorprone_error_prone_annotations_java", - "//third_party/androidx:androidx_annotation_annotation_java", - ] - } - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt("google_firebase_firebase_datatransport_java") { - aar_path = "autorolled/cipd/libs/com_google_firebase_firebase_datatransport/firebase-datatransport.aar" - info_path = "autorolled/committed/libs/com_google_firebase_firebase_datatransport/com_google_firebase_firebase_datatransport.info" - enable_bytecode_checks = false - - # To remove visibility constraint, add this dependency to - # //third_party/android_deps/autorolled/build.gradle.template - visibility = [ - ":*", - "//third_party/androidx:*", - ] - deps = [ - "$google_play_services_package:google_android_datatransport_transport_api_java", - "$google_play_services_package:google_android_datatransport_transport_backend_cct_java", - "$google_play_services_package:google_android_datatransport_transport_runtime_java", - "//third_party/androidx:androidx_annotation_annotation_java", - ] - } - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - java_prebuilt("google_firebase_firebase_encoders_java") { - jar_path = "autorolled/cipd/libs/com_google_firebase_firebase_encoders/firebase-encoders.jar" - output_name = "com_google_firebase_firebase_encoders" - supports_android = true - requires_android = true - enable_bytecode_checks = false - - # To remove visibility constraint, add this dependency to - # //third_party/android_deps/autorolled/build.gradle.template - visibility = [ - ":*", - "//third_party/androidx:*", - ] - deps = [ "//third_party/androidx:androidx_annotation_annotation_java" ] - } - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt("google_firebase_firebase_encoders_json_java") { - aar_path = "autorolled/cipd/libs/com_google_firebase_firebase_encoders_json/firebase-encoders-json.aar" - info_path = "autorolled/committed/libs/com_google_firebase_firebase_encoders_json/com_google_firebase_firebase_encoders_json.info" - enable_bytecode_checks = false - - # To remove visibility constraint, add this dependency to - # //third_party/android_deps/autorolled/build.gradle.template - visibility = [ - ":*", - "//third_party/androidx:*", - ] - deps = [ - "$google_play_services_package:google_firebase_firebase_encoders_java", - "//third_party/androidx:androidx_annotation_annotation_java", - ] - } - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - java_prebuilt("google_firebase_firebase_encoders_proto_java") { - jar_path = "autorolled/cipd/libs/com_google_firebase_firebase_encoders_proto/firebase-encoders-proto.jar" - output_name = "com_google_firebase_firebase_encoders_proto" - supports_android = true - requires_android = true - enable_bytecode_checks = false - - # To remove visibility constraint, add this dependency to - # //third_party/android_deps/autorolled/build.gradle.template - visibility = [ - ":*", - "//third_party/androidx:*", - ] - deps = [ - "$google_play_services_package:google_firebase_firebase_encoders_java", - "//third_party/androidx:androidx_annotation_annotation_java", - ] - } - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt("google_firebase_firebase_iid_interop_java") { - aar_path = "autorolled/cipd/libs/com_google_firebase_firebase_iid_interop/firebase-iid-interop.aar" - info_path = "autorolled/committed/libs/com_google_firebase_firebase_iid_interop/com_google_firebase_firebase_iid_interop.info" - enable_bytecode_checks = false - - # To remove visibility constraint, add this dependency to - # //third_party/android_deps/autorolled/build.gradle.template - visibility = [ - ":*", - "//third_party/androidx:*", - ] - deps = [ - "$google_play_services_package:google_play_services_basement_java", - "$google_play_services_package:google_play_services_tasks_java", - ] - } - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt("google_firebase_firebase_installations_java") { - aar_path = "autorolled/cipd/libs/com_google_firebase_firebase_installations/firebase-installations.aar" - info_path = "autorolled/committed/libs/com_google_firebase_firebase_installations/com_google_firebase_firebase_installations.info" - enable_bytecode_checks = false - - # To remove visibility constraint, add this dependency to - # //third_party/android_deps/autorolled/build.gradle.template - visibility = [ - ":*", - "//third_party/androidx:*", - ] - deps = [ - "$google_play_services_package:google_firebase_firebase_annotations_java", - "$google_play_services_package:google_firebase_firebase_common_java", - "$google_play_services_package:google_firebase_firebase_components_java", - "$google_play_services_package:google_firebase_firebase_installations_interop_java", - "$google_play_services_package:google_play_services_tasks_java", - "//third_party/kotlin_stdlib:kotlin_stdlib_java", - ] - } - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt( - "google_firebase_firebase_installations_interop_java") { - aar_path = "autorolled/cipd/libs/com_google_firebase_firebase_installations_interop/firebase-installations-interop.aar" - info_path = "autorolled/committed/libs/com_google_firebase_firebase_installations_interop/com_google_firebase_firebase_installations_interop.info" - enable_bytecode_checks = false - - # To remove visibility constraint, add this dependency to - # //third_party/android_deps/autorolled/build.gradle.template - visibility = [ - ":*", - "//third_party/androidx:*", - ] - deps = [ - "$google_play_services_package:google_firebase_firebase_annotations_java", - "$google_play_services_package:google_play_services_tasks_java", - ] - } - } - - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - if (google_play_services_package == "//third_party/android_deps") { - android_aar_prebuilt( - "google_firebase_firebase_measurement_connector_java") { - aar_path = "autorolled/cipd/libs/com_google_firebase_firebase_measurement_connector/firebase-measurement-connector.aar" - info_path = "autorolled/committed/libs/com_google_firebase_firebase_measurement_connector/com_google_firebase_firebase_measurement_connector.info" - enable_bytecode_checks = false - - # To remove visibility constraint, add this dependency to - # //third_party/android_deps/autorolled/build.gradle.template - visibility = [ - ":*", - "//third_party/androidx:*", - ] - deps = [ - "$google_play_services_package:google_firebase_firebase_annotations_java", - "$google_play_services_package:google_play_services_basement_java", - ] - } - } - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. java_prebuilt("com_google_guava_failureaccess_java") { jar_path = "autorolled/cipd/libs/com_google_guava_failureaccess/failureaccess.jar" @@ -2028,28 +1168,6 @@ template("define_autorolled_targets") { deps = [ "//third_party/android_deps:org_jetbrains_kotlinx_kotlinx_coroutines_core_jvm_java" ] } - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - java_prebuilt( - "org_jetbrains_kotlinx_kotlinx_coroutines_play_services_java") { - jar_path = "autorolled/cipd/libs/org_jetbrains_kotlinx_kotlinx_coroutines_play_services/kotlinx-coroutines-play-services.jar" - output_name = "org_jetbrains_kotlinx_kotlinx_coroutines_play_services" - supports_android = true - requires_android = true - enable_bytecode_checks = false - - # To remove visibility constraint, add this dependency to - # //third_party/android_deps/autorolled/build.gradle.template - visibility = [ - ":*", - "//third_party/androidx:*", - ] - deps = [ - "$google_play_services_package:google_play_services_tasks_java", - "//third_party/android_deps:org_jetbrains_kotlinx_kotlinx_coroutines_core_java", - "//third_party/kotlin_stdlib:kotlin_stdlib_java", - ] - } - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. java_group("org_jetbrains_kotlinx_kotlinx_coroutines_test_java") { # To remove visibility constraint, add this dependency to diff --git a/third_party/android_deps/local_modifications/preconditions/javatests/BUILD.gn b/third_party/android_deps/local_modifications/preconditions/javatests/BUILD.gn --- a/third_party/android_deps/local_modifications/preconditions/javatests/BUILD.gn +++ b/third_party/android_deps/local_modifications/preconditions/javatests/BUILD.gn @@ -8,7 +8,6 @@ android_library("javatests") { testonly = true sources = [ "org/chromium/preconditions/PreconditionsTest.java" ] deps = [ - "$google_play_services_package:google_play_services_basement_java", "//base:base_java_test_support", "//base/test:test_support_java", "//build/android:build_java", 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; - import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; import org.chromium.base.ResettersForTesting; @@ -42,12 +39,7 @@ public final class ChromiumPlayServicesAvailability { * PM/UX. */ public static boolean isGooglePlayServicesAvailable(final Context context) { - if (sIsAvailableForTesting != null) { - return sIsAvailableForTesting; - } - return GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable( - context, GMS_VERSION_NUMBER) - == ConnectionResult.SUCCESS; + return false; } /** @@ -64,11 +56,4 @@ public final class ChromiumPlayServicesAvailability { * the user to update GMS Core or fail with exception." If in doubt, please consult with your * PM/UX. */ - public static int getGooglePlayServicesConnectionResult(final Context context) { - if (sIsAvailableForTesting != null) { - return sIsAvailableForTesting ? ConnectionResult.SUCCESS : ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED; - } - return GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable( - context, GMS_VERSION_NUMBER); - } } diff --git a/third_party/androidx/customizations.gni b/third_party/androidx/customizations.gni --- a/third_party/androidx/customizations.gni +++ b/third_party/androidx/customizations.gni @@ -166,7 +166,7 @@ template("androidx_java_prebuilt") { } } -template("androidx_android_aar_prebuilt") { +template("androidx_android_aar_prebuilt_cromite") { _androidx_prebuilt(target_name) { forward_variables_from(invoker, "*") target_type = "android_aar_prebuilt" @@ -183,6 +183,18 @@ template("androidx_android_aar_prebuilt") { } } +template("androidx_android_aar_prebuilt") { + if (target_name == "androidx_credentials_credentials_play_services_auth_java" + || target_name == "androidx_credentials_registry_registry_provider_play_services_java") { + forward_variables_from(invoker, "*") + not_needed(["deps", "aar_path", "info_path", "enable_bytecode_checks"]) + } else { + androidx_android_aar_prebuilt_cromite(target_name) { + forward_variables_from(invoker, "*") + } + } +} + template("androidx_java_group") { _androidx_prebuilt(target_name) { forward_variables_from(invoker, "*") diff --git a/third_party/cardboard/BUILD.gn b/third_party/cardboard/BUILD.gn --- a/third_party/cardboard/BUILD.gn +++ b/third_party/cardboard/BUILD.gn @@ -51,10 +51,6 @@ android_library("cardboard_java") { deps = [ ":cardboard_proto_java", ":cardboard_resources", - "$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_vision_common_java", - "$google_play_services_package:google_play_services_vision_java", "//third_party/android_deps:protobuf_lite_runtime_java", "//third_party/androidx:androidx_annotation_annotation_jvm_java", "//third_party/androidx:androidx_appcompat_appcompat_java", --