[VCN][M2] Upstream enrollment dialog
This CL creates a parallel flow for upstream enrollment in which the enrollment info is shown in a dialog instead of an infobar.
The dialog is reused from crrev.com/c/3455322.
This CL follows the new recommended way to implement view/controller JNI interfaces documented here (https://docs.google.com/document/d/1J19BNafBk90mSzQnAjykguROCDK8ZzYiUVi3Uwj_5jg/edit?resourcekey=0-QT0PzlbhCbjNFoAaSe4_qg#heading=h.subvi3olnqaf).
Screen record of the upstream flow: https://drive.google.com/file/d/1oUNacjoNAZOPhX890zEsu5nBUILU5Sao/view?usp=sharing&resourcekey=0-qzoH3eu2-jJoUZvxpBGyQA
Bug: 1281695, 1306021
Change-Id: Ifb860cf891725986dece9c5865773d20b9474f03
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3610789
Reviewed-by: Siyu An <[email protected]>
Reviewed-by: Elizabeth Popova <[email protected]>
Reviewed-by: David Trainor <[email protected]>
Reviewed-by: Evan Stade <[email protected]>
Commit-Queue: Vishwas Uppoor <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1000581}
diff --git a/chrome/browser/ui/android/autofill/virtual_card_utils.cc b/chrome/browser/ui/android/autofill/virtual_card_utils.cc
new file mode 100644
index 0000000..7f1b795f
--- /dev/null
+++ b/chrome/browser/ui/android/autofill/virtual_card_utils.cc
@@ -0,0 +1,59 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ui/android/autofill/virtual_card_utils.h"
+
+#include "base/android/jni_string.h"
+#include "chrome/android/chrome_jni_headers/VirtualCardEnrollmentFields_jni.h"
+#include "ui/gfx/android/java_bitmap.h"
+#include "ui/gfx/image/image.h"
+#include "ui/gfx/image/image_skia.h"
+
+using base::android::AttachCurrentThread;
+using base::android::ConvertUTF16ToJavaString;
+using base::android::ConvertUTF8ToJavaString;
+using base::android::ScopedJavaLocalRef;
+
+namespace autofill {
+
+ScopedJavaLocalRef<jobject> CreateVirtualCardEnrollmentFieldsJavaObject(
+ autofill::VirtualCardEnrollmentFields* virtual_card_enrollment_fields) {
+ JNIEnv* env = AttachCurrentThread();
+ // Create VirtualCardEnrollmentFields java object.
+ ScopedJavaLocalRef<jobject> java_object =
+ Java_VirtualCardEnrollmentFields_create(
+ env,
+ ConvertUTF16ToJavaString(
+ env, virtual_card_enrollment_fields->credit_card
+ .CardIdentifierStringForAutofillDisplay()),
+ gfx::ConvertToJavaBitmap(
+ *virtual_card_enrollment_fields->card_art_image->bitmap()));
+ // Add Google legal messages.
+ for (const auto& legal_message_line :
+ virtual_card_enrollment_fields->google_legal_message) {
+ Java_VirtualCardEnrollmentFields_addGoogleLegalMessageLine(
+ env, java_object,
+ ConvertUTF16ToJavaString(env, legal_message_line.text()));
+ for (const auto& link : legal_message_line.links()) {
+ Java_VirtualCardEnrollmentFields_addLinkToLastGoogleLegalMessageLine(
+ env, java_object, link.range.start(), link.range.end(),
+ ConvertUTF8ToJavaString(env, link.url.spec()));
+ }
+ }
+ // Add issuer legal messages.
+ for (const auto& legal_message_line :
+ virtual_card_enrollment_fields->issuer_legal_message) {
+ Java_VirtualCardEnrollmentFields_addIssuerLegalMessageLine(
+ env, java_object,
+ ConvertUTF16ToJavaString(env, legal_message_line.text()));
+ for (const auto& link : legal_message_line.links()) {
+ Java_VirtualCardEnrollmentFields_addLinkToLastIssuerLegalMessageLine(
+ env, java_object, link.range.start(), link.range.end(),
+ ConvertUTF8ToJavaString(env, link.url.spec()));
+ }
+ }
+ return java_object;
+}
+
+} // namespace autofill