Commit 070c3f55 authored by siyua's avatar siyua Committed by Commit Bot

Integrate Card Migration Dialogs into Autofill Client

After this change, the offer-dialog should be properly shown
if a user clicks the continue button in the migration bubble.

1) Made changes related to Autofill Client and wires things up.
2) Changed method names of showing
local card migration bubble from ShowLocalCardMigrationMainPrompt
to ShowLocalCardMigrationDialog.

The flow will be enabled only on desktops for now.

Bug: 852904
Cq-Include-Trybots: luci.chromium.try:ios-simulator-full-configs;master.tryserver.chromium.mac:ios-simulator-cronet
Change-Id: Id5ee55156eb1e8615e955716836cfecd677ff456
Reviewed-on: https://chromium-review.googlesource.com/1173551Reviewed-by: default avatarRoger McFarlane <rogerm@chromium.org>
Reviewed-by: default avatarEugene But <eugenebut@chromium.org>
Reviewed-by: default avatarFabio Tirelo <ftirelo@chromium.org>
Reviewed-by: default avatarTao Bai <michaelbai@chromium.org>
Commit-Queue: Siyu An <siyua@chromium.org>
Cr-Commit-Position: refs/heads/master@{#583837}
parent ef638a46
......@@ -262,7 +262,14 @@ void AwAutofillClient::OnUnmaskVerificationResult(PaymentsRpcResult result) {
NOTIMPLEMENTED();
}
void AwAutofillClient::ShowLocalCardMigrationPrompt(base::OnceClosure closure) {
void AwAutofillClient::ShowLocalCardMigrationDialog(
base::OnceClosure show_migration_dialog_closure) {
NOTIMPLEMENTED();
}
void AwAutofillClient::ConfirmMigrateLocalCardToCloud(
std::vector<autofill::MigratableCreditCard>& migratable_credit_cards,
base::OnceClosure start_migrating_cards_closure) {
NOTIMPLEMENTED();
}
......
......@@ -23,6 +23,7 @@ class AutofillPopupDelegate;
class CardUnmaskDelegate;
class CreditCard;
class FormStructure;
class MigratableCreditCard;
class PersonalDataManager;
}
......@@ -74,7 +75,11 @@ class AwAutofillClient : public autofill::AutofillClient,
UnmaskCardReason reason,
base::WeakPtr<autofill::CardUnmaskDelegate> delegate) override;
void OnUnmaskVerificationResult(PaymentsRpcResult result) override;
void ShowLocalCardMigrationPrompt(base::OnceClosure closure) override;
void ShowLocalCardMigrationDialog(
base::OnceClosure show_migration_dialog_closure) override;
void ConfirmMigrateLocalCardToCloud(
std::vector<autofill::MigratableCreditCard>& migratable_credit_cards,
base::OnceClosure start_migrating_cards_closure) override;
void ConfirmSaveAutofillProfile(const autofill::AutofillProfile& profile,
base::OnceClosure callback) override;
void ConfirmSaveCreditCardLocally(const autofill::CreditCard& card,
......
......@@ -25,6 +25,8 @@
#include "chrome/browser/ui/autofill/autofill_popup_controller_impl.h"
#include "chrome/browser/ui/autofill/create_card_unmask_prompt_view.h"
#include "chrome/browser/ui/autofill/credit_card_scanner_controller.h"
#include "chrome/browser/ui/autofill/local_card_migration_dialog_factory.h"
#include "chrome/browser/ui/autofill/local_card_migration_dialog_state.h"
#include "chrome/browser/ui/browser_finder.h"
#include "chrome/browser/ui/chrome_pages.h"
#include "chrome/browser/ui/page_info/page_info_dialog.h"
......@@ -67,6 +69,7 @@
#include "ui/android/window_android.h"
#else // !OS_ANDROID
#include "chrome/browser/ui/autofill/local_card_migration_bubble_controller_impl.h"
#include "chrome/browser/ui/autofill/local_card_migration_dialog_controller_impl.h"
#include "chrome/browser/ui/autofill/save_card_bubble_controller_impl.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_commands.h"
......@@ -195,15 +198,32 @@ void ChromeAutofillClient::OnUnmaskVerificationResult(
unmask_controller_.OnVerificationResult(result);
}
void ChromeAutofillClient::ShowLocalCardMigrationPrompt(
base::OnceClosure closure) {
void ChromeAutofillClient::ShowLocalCardMigrationDialog(
base::OnceClosure show_migration_dialog_closure) {
#if !defined(OS_ANDROID)
autofill::LocalCardMigrationBubbleControllerImpl::CreateForWebContents(
web_contents());
autofill::LocalCardMigrationBubbleControllerImpl* controller =
autofill::LocalCardMigrationBubbleControllerImpl::FromWebContents(
web_contents());
controller->ShowBubble(std::move(closure));
controller->ShowBubble(std::move(show_migration_dialog_closure));
#endif
}
void ChromeAutofillClient::ConfirmMigrateLocalCardToCloud(
std::vector<MigratableCreditCard>& migratable_credit_cards,
base::OnceClosure start_migrating_cards_closure) {
#if !defined(OS_ANDROID)
autofill::LocalCardMigrationDialogControllerImpl::CreateForWebContents(
web_contents());
autofill::LocalCardMigrationDialogControllerImpl* controller =
autofill::LocalCardMigrationDialogControllerImpl::FromWebContents(
web_contents());
controller->SetViewState(LocalCardMigrationDialogState::kOffered);
controller->SetCardList(migratable_credit_cards);
controller->ShowDialog(
CreateLocalCardMigrationDialogView(controller, web_contents()),
std::move(start_migrating_cards_closure));
#endif
}
......
......@@ -22,6 +22,7 @@
#if !defined(OS_ANDROID)
#include "components/autofill/core/browser/ui/local_card_migration_bubble_controller.h"
#include "components/autofill/core/browser/ui/local_card_migration_dialog_controller.h"
#include "components/autofill/core/browser/ui/save_card_bubble_controller.h"
#include "components/zoom/zoom_observer.h"
#endif // !defined(OS_ANDROID)
......@@ -62,7 +63,11 @@ class ChromeAutofillClient
UnmaskCardReason reason,
base::WeakPtr<CardUnmaskDelegate> delegate) override;
void OnUnmaskVerificationResult(PaymentsRpcResult result) override;
void ShowLocalCardMigrationPrompt(base::OnceClosure closure) override;
void ShowLocalCardMigrationDialog(
base::OnceClosure show_migration_dialog_closure) override;
void ConfirmMigrateLocalCardToCloud(
std::vector<MigratableCreditCard>& migratable_credit_cards,
base::OnceClosure start_migrating_cards_closure) override;
void ConfirmSaveAutofillProfile(const AutofillProfile& profile,
base::OnceClosure callback) override;
void ConfirmSaveCreditCardLocally(const CreditCard& card,
......
......@@ -25,7 +25,8 @@
namespace autofill {
LocalCardMigrationDialogControllerImpl::LocalCardMigrationDialogControllerImpl()
LocalCardMigrationDialogControllerImpl::LocalCardMigrationDialogControllerImpl(
content::WebContents* web_contents)
: local_card_migration_dialog_(nullptr) {}
LocalCardMigrationDialogControllerImpl::
......
......@@ -36,7 +36,8 @@ class LocalCardMigrationDialogControllerImpl
void OnDialogClosed() override;
protected:
explicit LocalCardMigrationDialogControllerImpl();
explicit LocalCardMigrationDialogControllerImpl(
content::WebContents* web_contents);
private:
friend class content::WebContentsUserData<
......
......@@ -51,6 +51,7 @@ class AutofillWebDataService;
class CardUnmaskDelegate;
class CreditCard;
class FormStructure;
class MigratableCreditCard;
class PersonalDataManager;
struct Suggestion;
......@@ -138,8 +139,16 @@ class AutofillClient : public RiskDataLoader {
base::WeakPtr<CardUnmaskDelegate> delegate) = 0;
virtual void OnUnmaskVerificationResult(PaymentsRpcResult result) = 0;
// Runs |closure| if the user accepts the migration process.
virtual void ShowLocalCardMigrationPrompt(base::OnceClosure closure) = 0;
// Runs |closure| if the user accepts the card migration offer. This causes
// the card migration dialog to be shown.
virtual void ShowLocalCardMigrationDialog(
base::OnceClosure show_migration_dialog_closure) = 0;
// Runs |closure| if the user would like the selected
// |migratable_credit_cards| to be uploaded to cloud.
virtual void ConfirmMigrateLocalCardToCloud(
std::vector<MigratableCreditCard>& migratable_credit_cards,
base::OnceClosure start_migrating_cards_closure) = 0;
// Runs |callback| if the |card| should be imported as personal data.
// |metric_logger| can be used to log user actions.
......
......@@ -98,6 +98,11 @@ void LocalCardMigrationManager::AttemptToOfferLocalCardMigration() {
void LocalCardMigrationManager::OnUserAcceptedIntermediateMigrationDialog() {
user_accepted_main_migration_dialog_ = false;
// Pops up a larger, modal dialog showing the local cards to be uploaded.
client_->ConfirmMigrateLocalCardToCloud(
migratable_credit_cards_,
base::BindOnce(
&LocalCardMigrationManager::OnUserAcceptedMainMigrationDialog,
weak_ptr_factory_.GetWeakPtr()));
}
bool LocalCardMigrationManager::IsCreditCardMigrationEnabled() {
......@@ -125,8 +130,8 @@ void LocalCardMigrationManager::OnDidGetUploadDetails(
legal_message_ = std::move(legal_message);
// If we successfully received the legal docs, trigger the offer-to-migrate
// dialog.
client_->ShowLocalCardMigrationPrompt(base::BindOnce(
&LocalCardMigrationManager::OnUserAcceptedMainMigrationDialog,
client_->ShowLocalCardMigrationDialog(base::BindOnce(
&LocalCardMigrationManager::OnUserAcceptedIntermediateMigrationDialog,
weak_ptr_factory_.GetWeakPtr()));
// TODO(crbug.com/852904): Call the client LoadRiskData()
}
......
......@@ -71,9 +71,15 @@ void TestAutofillClient::ShowUnmaskPrompt(
void TestAutofillClient::OnUnmaskVerificationResult(PaymentsRpcResult result) {
}
void TestAutofillClient::ShowLocalCardMigrationPrompt(
base::OnceClosure closure) {
std::move(closure).Run();
void TestAutofillClient::ShowLocalCardMigrationDialog(
base::OnceClosure show_migration_dialog_closure) {
std::move(show_migration_dialog_closure).Run();
}
void TestAutofillClient::ConfirmMigrateLocalCardToCloud(
std::vector<MigratableCreditCard>& migratable_credit_cards,
base::OnceClosure start_migrating_cards_closure) {
std::move(start_migrating_cards_closure).Run();
}
void TestAutofillClient::ConfirmSaveAutofillProfile(
......
......@@ -42,7 +42,11 @@ class TestAutofillClient : public AutofillClient {
UnmaskCardReason reason,
base::WeakPtr<CardUnmaskDelegate> delegate) override;
void OnUnmaskVerificationResult(PaymentsRpcResult result) override;
void ShowLocalCardMigrationPrompt(base::OnceClosure closure) override;
void ShowLocalCardMigrationDialog(
base::OnceClosure show_migration_dialog_closure) override;
void ConfirmMigrateLocalCardToCloud(
std::vector<MigratableCreditCard>& migratable_credit_cards,
base::OnceClosure start_migrating_cards_closure) override;
void ConfirmSaveAutofillProfile(const AutofillProfile& profile,
base::OnceClosure callback) override;
void ConfirmSaveCreditCardLocally(const CreditCard& card,
......
......@@ -56,7 +56,11 @@ class ChromeAutofillClientIOS : public AutofillClient {
UnmaskCardReason reason,
base::WeakPtr<CardUnmaskDelegate> delegate) override;
void OnUnmaskVerificationResult(PaymentsRpcResult result) override;
void ShowLocalCardMigrationPrompt(base::OnceClosure closure) override;
void ShowLocalCardMigrationDialog(
base::OnceClosure show_migration_dialog_closure) override;
void ConfirmMigrateLocalCardToCloud(
std::vector<MigratableCreditCard>& migratable_credit_cards,
base::OnceClosure start_migrating_cards_closure) override;
void ConfirmSaveAutofillProfile(const AutofillProfile& profile,
base::OnceClosure callback) override;
void ConfirmSaveCreditCardLocally(const CreditCard& card,
......
......@@ -170,9 +170,15 @@ void ChromeAutofillClientIOS::ConfirmSaveCreditCardLocally(
/*local_save_card_callback=*/callback, GetPrefs())));
}
void ChromeAutofillClientIOS::ShowLocalCardMigrationPrompt(
base::OnceClosure closure) {
NOTREACHED();
void ChromeAutofillClientIOS::ShowLocalCardMigrationDialog(
base::OnceClosure show_migration_dialog_closure) {
NOTIMPLEMENTED();
}
void ChromeAutofillClientIOS::ConfirmMigrateLocalCardToCloud(
std::vector<MigratableCreditCard>& migratable_credit_cards,
base::OnceClosure start_migrating_cards_closure) {
NOTIMPLEMENTED();
}
void ChromeAutofillClientIOS::ConfirmSaveCreditCardToCloud(
......
......@@ -48,7 +48,11 @@ class WebViewAutofillClientIOS : public AutofillClient {
UnmaskCardReason reason,
base::WeakPtr<CardUnmaskDelegate> delegate) override;
void OnUnmaskVerificationResult(PaymentsRpcResult result) override;
void ShowLocalCardMigrationPrompt(base::OnceClosure closure) override;
void ShowLocalCardMigrationDialog(
base::OnceClosure show_migration_dialog_closure) override;
void ConfirmMigrateLocalCardToCloud(
std::vector<MigratableCreditCard>& migratable_credit_cards,
base::OnceClosure start_migrating_cards_closure) override;
void ConfirmSaveAutofillProfile(const AutofillProfile& profile,
base::OnceClosure callback) override;
void ConfirmSaveCreditCardLocally(const CreditCard& card,
......
......@@ -90,9 +90,15 @@ void WebViewAutofillClientIOS::OnUnmaskVerificationResult(
[bridge_ didReceiveUnmaskVerificationResult:result];
}
void WebViewAutofillClientIOS::ShowLocalCardMigrationPrompt(
base::OnceClosure closure) {
NOTREACHED();
void WebViewAutofillClientIOS::ShowLocalCardMigrationDialog(
base::OnceClosure show_migration_dialog_closure) {
NOTIMPLEMENTED();
}
void WebViewAutofillClientIOS::ConfirmMigrateLocalCardToCloud(
std::vector<MigratableCreditCard>& migratable_credit_cards,
base::OnceClosure start_migrating_cards_closure) {
NOTIMPLEMENTED();
}
void WebViewAutofillClientIOS::ConfirmSaveAutofillProfile(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment