From 4d1268c2e00a7942e2c23f61e8fd25cacfbab277 Mon Sep 17 00:00:00 2001 From: Carmelo Messina Date: Mon, 7 Aug 2023 14:44:33 +0200 Subject: [PATCH] v116 new Fido calls --- .../Remove-binary-blob-integrations.patch | 138 +++++++++++++++--- 1 file changed, 117 insertions(+), 21 deletions(-) diff --git a/build/patches/Remove-binary-blob-integrations.patch b/build/patches/Remove-binary-blob-integrations.patch index 2b436b7a..f20267e9 100644 --- a/build/patches/Remove-binary-blob-integrations.patch +++ b/build/patches/Remove-binary-blob-integrations.patch @@ -25,7 +25,7 @@ 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 - - chrome/android/BUILD.gn | 47 +- + chrome/android/BUILD.gn | 48 +- chrome/android/chrome_java_sources.gni | 5 - .../features/cablev2_authenticator/BUILD.gn | 2 - chrome/android/java/AndroidManifest.xml | 51 -- @@ -52,6 +52,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../ui/signin/fre/SigninFirstRunMediator.java | 8 +- chrome/browser/ui/webauthn/sheet_models.cc | 7 +- .../webui/chrome_web_ui_controller_factory.cc | 3 - + chrome/browser/webauthn/android/BUILD.gn | 1 - + .../CableAuthenticatorModuleProvider.java | 22 +- .../authenticator_request_dialog_model.cc | 4 - chrome/browser/webauthn/cablev2_devices.cc | 3 + chrome/test/android/BUILD.gn | 2 - @@ -87,7 +89,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../signin/AccountRenameChecker.java | 16 - components/webauthn/android/BUILD.gn | 11 - .../webauthn/AuthenticatorImpl.java | 83 +-- - .../webauthn/Fido2ApiCallHelper.java | 21 - + .../webauthn/Fido2ApiCallHelper.java | 58 +- .../push_messaging/push_messaging_manager.cc | 2 +- content/public/android/BUILD.gn | 4 - content/test/BUILD.gn | 4 - @@ -101,7 +103,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../gms/ChromiumPlayServicesAvailability.java | 10 +- weblayer/browser/java/BUILD.gn | 1 - weblayer/public/java/BUILD.gn | 1 - - 77 files changed, 92 insertions(+), 1919 deletions(-) + 79 files changed, 94 insertions(+), 1978 deletions(-) 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 @@ -170,7 +172,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//third_party/android_deps:protobuf_lite_runtime_java", "//third_party/android_media:android_media_java", "//third_party/android_swipe_refresh:android_swipe_refresh_java", -@@ -867,11 +868,6 @@ if (current_toolchain == default_toolchain) { +@@ -867,12 +868,6 @@ if (current_toolchain == default_toolchain) { ":chrome_java", ":chrome_jni_headers", ":delegate_public_impl_java", @@ -179,10 +181,11 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn - "$google_play_services_package:google_play_services_cast_framework_java", - "$google_play_services_package:google_play_services_cast_java", - "$google_play_services_package:google_play_services_gcm_java", - "$google_play_services_package:google_play_services_tasks_java", +- "$google_play_services_package:google_play_services_tasks_java", "//base:base_java_test_support", "//base:base_java_test_support_uncommon", -@@ -1455,13 +1451,6 @@ if (current_toolchain == default_toolchain) { + "//base:base_junit_test_support", +@@ -1455,13 +1450,6 @@ if (current_toolchain == default_toolchain) { ":chrome_test_util_java", ":critical_persisted_tab_data_flatbuffer_test_v1_java", ":delegate_public_impl_java", @@ -196,7 +199,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//base:base_java", "//base:base_java_test_support", "//base:base_java_test_support_uncommon", -@@ -2352,7 +2341,6 @@ if (current_toolchain == default_toolchain) { +@@ -2352,7 +2340,6 @@ if (current_toolchain == default_toolchain) { ] deps = [ ":chrome_java", @@ -204,7 +207,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//base:base_java", "//base:base_java_test_support", "//base:jni_java", -@@ -2449,7 +2437,6 @@ if (current_toolchain == default_toolchain) { +@@ -2449,7 +2436,6 @@ if (current_toolchain == default_toolchain) { # is in a DFM. android_library("base_module_java") { sources = [ @@ -212,7 +215,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "java/src/org/chromium/chrome/app/TrichromeZygotePreload.java", "java/src/org/chromium/chrome/browser/ChromeBackgroundService.java", "java/src/org/chromium/chrome/browser/ChromeBackupAgent.java", -@@ -2465,8 +2452,6 @@ if (current_toolchain == default_toolchain) { +@@ -2465,8 +2451,6 @@ if (current_toolchain == default_toolchain) { "java/src/org/chromium/chrome/browser/base/SplitCompatBackupAgent.java", "java/src/org/chromium/chrome/browser/base/SplitCompatContentProvider.java", "java/src/org/chromium/chrome/browser/base/SplitCompatCustomTabsService.java", @@ -221,7 +224,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "java/src/org/chromium/chrome/browser/base/SplitCompatIntentService.java", "java/src/org/chromium/chrome/browser/base/SplitCompatJobService.java", "java/src/org/chromium/chrome/browser/base/SplitCompatMinidumpUploadJobService.java", -@@ -2491,17 +2476,11 @@ if (current_toolchain == default_toolchain) { +@@ -2491,17 +2475,11 @@ if (current_toolchain == default_toolchain) { "java/src/org/chromium/chrome/browser/photo_picker/DecoderService.java", "java/src/org/chromium/chrome/browser/prerender/ChromePrerenderService.java", "java/src/org/chromium/chrome/browser/provider/ChromeBrowserProvider.java", @@ -239,7 +242,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//base:base_java", "//base:jni_java", "//chrome/browser/download/android:file_provider_java", -@@ -2515,7 +2494,6 @@ if (current_toolchain == default_toolchain) { +@@ -2515,7 +2493,6 @@ if (current_toolchain == default_toolchain) { "//components/media_router/browser/android:cast_options_provider_java", "//components/minidump_uploader:minidump_uploader_java", "//components/module_installer/android:module_installer_java", @@ -247,7 +250,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//third_party/androidx:androidx_annotation_annotation_java", "//third_party/androidx:androidx_collection_collection_java", "//ui/android:ui_no_recycler_view_java", -@@ -2534,7 +2512,6 @@ if (current_toolchain == default_toolchain) { +@@ -2534,7 +2511,6 @@ if (current_toolchain == default_toolchain) { # Deps to pull services into base module. # TODO(crbug.com/1126301): Consider moving these to the chrome module to # reduce base dex size. @@ -1133,6 +1136,63 @@ diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrom if (url.host_piece() == chrome::kChromeUIInternalsHost) return &NewWebUI; if (url.host_piece() == chrome::kChromeUIInterstitialHost) +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 +@@ -13,7 +13,6 @@ android_library("java") { + deps = [ + ":java_resources", + ":jni_headers", +- "$google_play_services_package:google_play_services_tasks_java", + "//base:base_java", + "//base:jni_java", + "//build/android:build_java", +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 +@@ -29,8 +29,6 @@ import androidx.fragment.app.FragmentTransaction; + import androidx.vectordrawable.graphics.drawable.Animatable2Compat; + import androidx.vectordrawable.graphics.drawable.AnimatedVectorDrawableCompat; + +-import com.google.android.gms.tasks.Task; +- + import org.chromium.base.ContextUtils; + import org.chromium.base.Log; + import org.chromium.base.PackageUtils; +@@ -43,7 +41,6 @@ import org.chromium.chrome.browser.notifications.NotificationWrapperBuilderFacto + import org.chromium.chrome.browser.notifications.channels.ChromeChannelDefinitions; + import org.chromium.chrome.modules.cablev2_authenticator.Cablev2AuthenticatorModule; + import org.chromium.components.externalauth.ExternalAuthUtils; +-import org.chromium.components.webauthn.Fido2ApiCall; + import org.chromium.device.DeviceFeatureList; + import org.chromium.device.DeviceFeatureMap; + +@@ -264,24 +261,7 @@ public class CableAuthenticatorModuleProvider extends Fragment implements OnClic + ok = false; + } + +- if (!ok) { +- CableAuthenticatorModuleProviderJni.get().onHaveLinkingInformation(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(linkInfo); +- }).addOnFailureListener(exception -> { +- Log.e(TAG, "Call to get linking information from Play Services failed", exception); +- CableAuthenticatorModuleProviderJni.get().onHaveLinkingInformation(null); +- }); ++ CableAuthenticatorModuleProviderJni.get().onHaveLinkingInformation(null); + } + + @NativeMethods diff --git a/chrome/browser/webauthn/authenticator_request_dialog_model.cc b/chrome/browser/webauthn/authenticator_request_dialog_model.cc --- a/chrome/browser/webauthn/authenticator_request_dialog_model.cc +++ b/chrome/browser/webauthn/authenticator_request_dialog_model.cc @@ -1332,7 +1392,7 @@ diff --git a/components/gcm_driver/gcm_client_impl.cc b/components/gcm_driver/gc void GCMClientImpl::InitializeMCSClient() { DCHECK(network_connection_tracker_); -+ return; ++ if ((true)) return; std::vector endpoints; endpoints.push_back(gservices_settings_.GetMCSMainEndpoint()); GURL fallback_endpoint = gservices_settings_.GetMCSFallbackEndpoint(); @@ -1340,7 +1400,7 @@ diff --git a/components/gcm_driver/gcm_client_impl.cc b/components/gcm_driver/gc int interval_ms) { DCHECK(io_task_runner_->RunsTasksInCurrentSequence()); DCHECK(mcs_client_); -+ return; ++ if ((true)) return; mcs_client_->AddHeartbeatInterval(scope, interval_ms); } @@ -1348,7 +1408,7 @@ diff --git a/components/gcm_driver/gcm_client_impl.cc b/components/gcm_driver/gc void GCMClientImpl::StartCheckin() { DCHECK(io_task_runner_->RunsTasksInCurrentSequence()); -+ return; ++ if ((true)) return; // Make sure no checkin is in progress. if (checkin_request_) @@ -1356,7 +1416,7 @@ diff --git a/components/gcm_driver/gcm_client_impl.cc b/components/gcm_driver/gc void GCMClientImpl::SchedulePeriodicCheckin() { DCHECK(io_task_runner_->RunsTasksInCurrentSequence()); -+ return; ++ if ((true)) return; // Make sure no checkin is in progress. if (checkin_request_.get() || !device_checkin_info_.accounts_set) @@ -3204,10 +3264,14 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut import org.chromium.base.ContextUtils; import org.chromium.blink.mojom.PublicKeyCredentialCreationOptions; import org.chromium.blink.mojom.PublicKeyCredentialRequestOptions; -@@ -50,23 +46,6 @@ public class Fido2ApiCallHelper { - new UserRecoverableErrorHandler.Silent()); +@@ -46,58 +42,6 @@ public class Fido2ApiCallHelper { } + public boolean arePlayServicesAvailable() { +- return ExternalAuthUtils.getInstance().canUseGooglePlayServices( +- new UserRecoverableErrorHandler.Silent()); +- } +- - public void invokeFido2GetCredentials(String relyingPartyId, - OnSuccessListener> successCallback, - OnFailureListener failureCallback) { @@ -3225,9 +3289,41 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut - task.addOnFailureListener(failureCallback); - } - - public void invokeFido2MakeCredential(PublicKeyCredentialCreationOptions options, Uri uri, - byte[] clientDataHash, OnSuccessListener successCallback, - OnFailureListener failureCallback) throws NoSuchAlgorithmException { +- public void invokeFido2MakeCredential(PublicKeyCredentialCreationOptions options, Uri uri, +- byte[] clientDataHash, OnSuccessListener successCallback, +- OnFailureListener failureCallback) throws NoSuchAlgorithmException { +- Fido2ApiCall call = new Fido2ApiCall(ContextUtils.getApplicationContext()); +- Parcel args = call.start(); +- Fido2ApiCall.PendingIntentResult result = new Fido2ApiCall.PendingIntentResult(); +- args.writeStrongBinder(result); +- args.writeInt(1); // This indicates that the following options are present. +- +- Fido2Api.appendBrowserMakeCredentialOptionsToParcel(options, uri, clientDataHash, args); +- +- Task task = call.run(Fido2ApiCall.METHOD_BROWSER_REGISTER, +- Fido2ApiCall.TRANSACTION_REGISTER, args, result); +- task.addOnSuccessListener(successCallback); +- task.addOnFailureListener(failureCallback); +- } +- +- public void invokeFido2GetAssertion(PublicKeyCredentialRequestOptions options, Uri uri, +- byte[] clientDataHash, OnSuccessListener successCallback, +- OnFailureListener failureCallback) { +- Fido2ApiCall call = new Fido2ApiCall(ContextUtils.getApplicationContext()); +- Parcel args = call.start(); +- Fido2ApiCall.PendingIntentResult result = new Fido2ApiCall.PendingIntentResult(); +- args.writeStrongBinder(result); +- args.writeInt(1); // This indicates that the following options are present. +- +- Fido2Api.appendBrowserGetAssertionOptionsToParcel( +- options, uri, clientDataHash, /*tunnelId=*/null, args); +- Task task = call.run( +- Fido2ApiCall.METHOD_BROWSER_SIGN, Fido2ApiCall.TRANSACTION_SIGN, args, result); +- task.addOnSuccessListener(successCallback); +- task.addOnFailureListener(failureCallback); ++ return false; + } + } 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