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) { ...@@ -262,7 +262,14 @@ void AwAutofillClient::OnUnmaskVerificationResult(PaymentsRpcResult result) {
NOTIMPLEMENTED(); 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(); NOTIMPLEMENTED();
} }
......
...@@ -23,6 +23,7 @@ class AutofillPopupDelegate; ...@@ -23,6 +23,7 @@ class AutofillPopupDelegate;
class CardUnmaskDelegate; class CardUnmaskDelegate;
class CreditCard; class CreditCard;
class FormStructure; class FormStructure;
class MigratableCreditCard;
class PersonalDataManager; class PersonalDataManager;
} }
...@@ -74,7 +75,11 @@ class AwAutofillClient : public autofill::AutofillClient, ...@@ -74,7 +75,11 @@ class AwAutofillClient : public autofill::AutofillClient,
UnmaskCardReason reason, UnmaskCardReason reason,
base::WeakPtr<autofill::CardUnmaskDelegate> delegate) override; base::WeakPtr<autofill::CardUnmaskDelegate> delegate) override;
void OnUnmaskVerificationResult(PaymentsRpcResult result) 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, void ConfirmSaveAutofillProfile(const autofill::AutofillProfile& profile,
base::OnceClosure callback) override; base::OnceClosure callback) override;
void ConfirmSaveCreditCardLocally(const autofill::CreditCard& card, void ConfirmSaveCreditCardLocally(const autofill::CreditCard& card,
......
...@@ -25,6 +25,8 @@ ...@@ -25,6 +25,8 @@
#include "chrome/browser/ui/autofill/autofill_popup_controller_impl.h" #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/create_card_unmask_prompt_view.h"
#include "chrome/browser/ui/autofill/credit_card_scanner_controller.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/browser_finder.h"
#include "chrome/browser/ui/chrome_pages.h" #include "chrome/browser/ui/chrome_pages.h"
#include "chrome/browser/ui/page_info/page_info_dialog.h" #include "chrome/browser/ui/page_info/page_info_dialog.h"
...@@ -67,6 +69,7 @@ ...@@ -67,6 +69,7 @@
#include "ui/android/window_android.h" #include "ui/android/window_android.h"
#else // !OS_ANDROID #else // !OS_ANDROID
#include "chrome/browser/ui/autofill/local_card_migration_bubble_controller_impl.h" #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/autofill/save_card_bubble_controller_impl.h"
#include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_commands.h" #include "chrome/browser/ui/browser_commands.h"
...@@ -195,15 +198,32 @@ void ChromeAutofillClient::OnUnmaskVerificationResult( ...@@ -195,15 +198,32 @@ void ChromeAutofillClient::OnUnmaskVerificationResult(
unmask_controller_.OnVerificationResult(result); unmask_controller_.OnVerificationResult(result);
} }
void ChromeAutofillClient::ShowLocalCardMigrationPrompt( void ChromeAutofillClient::ShowLocalCardMigrationDialog(
base::OnceClosure closure) { base::OnceClosure show_migration_dialog_closure) {
#if !defined(OS_ANDROID) #if !defined(OS_ANDROID)
autofill::LocalCardMigrationBubbleControllerImpl::CreateForWebContents( autofill::LocalCardMigrationBubbleControllerImpl::CreateForWebContents(
web_contents()); web_contents());
autofill::LocalCardMigrationBubbleControllerImpl* controller = autofill::LocalCardMigrationBubbleControllerImpl* controller =
autofill::LocalCardMigrationBubbleControllerImpl::FromWebContents( autofill::LocalCardMigrationBubbleControllerImpl::FromWebContents(
web_contents()); 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 #endif
} }
......
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
#if !defined(OS_ANDROID) #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_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/autofill/core/browser/ui/save_card_bubble_controller.h"
#include "components/zoom/zoom_observer.h" #include "components/zoom/zoom_observer.h"
#endif // !defined(OS_ANDROID) #endif // !defined(OS_ANDROID)
...@@ -62,7 +63,11 @@ class ChromeAutofillClient ...@@ -62,7 +63,11 @@ class ChromeAutofillClient
UnmaskCardReason reason, UnmaskCardReason reason,
base::WeakPtr<CardUnmaskDelegate> delegate) override; base::WeakPtr<CardUnmaskDelegate> delegate) override;
void OnUnmaskVerificationResult(PaymentsRpcResult result) 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, void ConfirmSaveAutofillProfile(const AutofillProfile& profile,
base::OnceClosure callback) override; base::OnceClosure callback) override;
void ConfirmSaveCreditCardLocally(const CreditCard& card, void ConfirmSaveCreditCardLocally(const CreditCard& card,
......
...@@ -25,7 +25,8 @@ ...@@ -25,7 +25,8 @@
namespace autofill { namespace autofill {
LocalCardMigrationDialogControllerImpl::LocalCardMigrationDialogControllerImpl() LocalCardMigrationDialogControllerImpl::LocalCardMigrationDialogControllerImpl(
content::WebContents* web_contents)
: local_card_migration_dialog_(nullptr) {} : local_card_migration_dialog_(nullptr) {}
LocalCardMigrationDialogControllerImpl:: LocalCardMigrationDialogControllerImpl::
......
...@@ -36,7 +36,8 @@ class LocalCardMigrationDialogControllerImpl ...@@ -36,7 +36,8 @@ class LocalCardMigrationDialogControllerImpl
void OnDialogClosed() override; void OnDialogClosed() override;
protected: protected:
explicit LocalCardMigrationDialogControllerImpl(); explicit LocalCardMigrationDialogControllerImpl(
content::WebContents* web_contents);
private: private:
friend class content::WebContentsUserData< friend class content::WebContentsUserData<
......
...@@ -51,6 +51,7 @@ class AutofillWebDataService; ...@@ -51,6 +51,7 @@ class AutofillWebDataService;
class CardUnmaskDelegate; class CardUnmaskDelegate;
class CreditCard; class CreditCard;
class FormStructure; class FormStructure;
class MigratableCreditCard;
class PersonalDataManager; class PersonalDataManager;
struct Suggestion; struct Suggestion;
...@@ -138,8 +139,16 @@ class AutofillClient : public RiskDataLoader { ...@@ -138,8 +139,16 @@ class AutofillClient : public RiskDataLoader {
base::WeakPtr<CardUnmaskDelegate> delegate) = 0; base::WeakPtr<CardUnmaskDelegate> delegate) = 0;
virtual void OnUnmaskVerificationResult(PaymentsRpcResult result) = 0; virtual void OnUnmaskVerificationResult(PaymentsRpcResult result) = 0;
// Runs |closure| if the user accepts the migration process. // Runs |closure| if the user accepts the card migration offer. This causes
virtual void ShowLocalCardMigrationPrompt(base::OnceClosure closure) = 0; // 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. // Runs |callback| if the |card| should be imported as personal data.
// |metric_logger| can be used to log user actions. // |metric_logger| can be used to log user actions.
......
...@@ -98,6 +98,11 @@ void LocalCardMigrationManager::AttemptToOfferLocalCardMigration() { ...@@ -98,6 +98,11 @@ void LocalCardMigrationManager::AttemptToOfferLocalCardMigration() {
void LocalCardMigrationManager::OnUserAcceptedIntermediateMigrationDialog() { void LocalCardMigrationManager::OnUserAcceptedIntermediateMigrationDialog() {
user_accepted_main_migration_dialog_ = false; user_accepted_main_migration_dialog_ = false;
// Pops up a larger, modal dialog showing the local cards to be uploaded. // 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() { bool LocalCardMigrationManager::IsCreditCardMigrationEnabled() {
...@@ -125,8 +130,8 @@ void LocalCardMigrationManager::OnDidGetUploadDetails( ...@@ -125,8 +130,8 @@ void LocalCardMigrationManager::OnDidGetUploadDetails(
legal_message_ = std::move(legal_message); legal_message_ = std::move(legal_message);
// If we successfully received the legal docs, trigger the offer-to-migrate // If we successfully received the legal docs, trigger the offer-to-migrate
// dialog. // dialog.
client_->ShowLocalCardMigrationPrompt(base::BindOnce( client_->ShowLocalCardMigrationDialog(base::BindOnce(
&LocalCardMigrationManager::OnUserAcceptedMainMigrationDialog, &LocalCardMigrationManager::OnUserAcceptedIntermediateMigrationDialog,
weak_ptr_factory_.GetWeakPtr())); weak_ptr_factory_.GetWeakPtr()));
// TODO(crbug.com/852904): Call the client LoadRiskData() // TODO(crbug.com/852904): Call the client LoadRiskData()
} }
......
...@@ -71,9 +71,15 @@ void TestAutofillClient::ShowUnmaskPrompt( ...@@ -71,9 +71,15 @@ void TestAutofillClient::ShowUnmaskPrompt(
void TestAutofillClient::OnUnmaskVerificationResult(PaymentsRpcResult result) { void TestAutofillClient::OnUnmaskVerificationResult(PaymentsRpcResult result) {
} }
void TestAutofillClient::ShowLocalCardMigrationPrompt( void TestAutofillClient::ShowLocalCardMigrationDialog(
base::OnceClosure closure) { base::OnceClosure show_migration_dialog_closure) {
std::move(closure).Run(); 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( void TestAutofillClient::ConfirmSaveAutofillProfile(
......
...@@ -42,7 +42,11 @@ class TestAutofillClient : public AutofillClient { ...@@ -42,7 +42,11 @@ class TestAutofillClient : public AutofillClient {
UnmaskCardReason reason, UnmaskCardReason reason,
base::WeakPtr<CardUnmaskDelegate> delegate) override; base::WeakPtr<CardUnmaskDelegate> delegate) override;
void OnUnmaskVerificationResult(PaymentsRpcResult result) 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, void ConfirmSaveAutofillProfile(const AutofillProfile& profile,
base::OnceClosure callback) override; base::OnceClosure callback) override;
void ConfirmSaveCreditCardLocally(const CreditCard& card, void ConfirmSaveCreditCardLocally(const CreditCard& card,
......
...@@ -56,7 +56,11 @@ class ChromeAutofillClientIOS : public AutofillClient { ...@@ -56,7 +56,11 @@ class ChromeAutofillClientIOS : public AutofillClient {
UnmaskCardReason reason, UnmaskCardReason reason,
base::WeakPtr<CardUnmaskDelegate> delegate) override; base::WeakPtr<CardUnmaskDelegate> delegate) override;
void OnUnmaskVerificationResult(PaymentsRpcResult result) 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, void ConfirmSaveAutofillProfile(const AutofillProfile& profile,
base::OnceClosure callback) override; base::OnceClosure callback) override;
void ConfirmSaveCreditCardLocally(const CreditCard& card, void ConfirmSaveCreditCardLocally(const CreditCard& card,
......
...@@ -170,9 +170,15 @@ void ChromeAutofillClientIOS::ConfirmSaveCreditCardLocally( ...@@ -170,9 +170,15 @@ void ChromeAutofillClientIOS::ConfirmSaveCreditCardLocally(
/*local_save_card_callback=*/callback, GetPrefs()))); /*local_save_card_callback=*/callback, GetPrefs())));
} }
void ChromeAutofillClientIOS::ShowLocalCardMigrationPrompt( void ChromeAutofillClientIOS::ShowLocalCardMigrationDialog(
base::OnceClosure closure) { base::OnceClosure show_migration_dialog_closure) {
NOTREACHED(); NOTIMPLEMENTED();
}
void ChromeAutofillClientIOS::ConfirmMigrateLocalCardToCloud(
std::vector<MigratableCreditCard>& migratable_credit_cards,
base::OnceClosure start_migrating_cards_closure) {
NOTIMPLEMENTED();
} }
void ChromeAutofillClientIOS::ConfirmSaveCreditCardToCloud( void ChromeAutofillClientIOS::ConfirmSaveCreditCardToCloud(
......
...@@ -48,7 +48,11 @@ class WebViewAutofillClientIOS : public AutofillClient { ...@@ -48,7 +48,11 @@ class WebViewAutofillClientIOS : public AutofillClient {
UnmaskCardReason reason, UnmaskCardReason reason,
base::WeakPtr<CardUnmaskDelegate> delegate) override; base::WeakPtr<CardUnmaskDelegate> delegate) override;
void OnUnmaskVerificationResult(PaymentsRpcResult result) 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, void ConfirmSaveAutofillProfile(const AutofillProfile& profile,
base::OnceClosure callback) override; base::OnceClosure callback) override;
void ConfirmSaveCreditCardLocally(const CreditCard& card, void ConfirmSaveCreditCardLocally(const CreditCard& card,
......
...@@ -90,9 +90,15 @@ void WebViewAutofillClientIOS::OnUnmaskVerificationResult( ...@@ -90,9 +90,15 @@ void WebViewAutofillClientIOS::OnUnmaskVerificationResult(
[bridge_ didReceiveUnmaskVerificationResult:result]; [bridge_ didReceiveUnmaskVerificationResult:result];
} }
void WebViewAutofillClientIOS::ShowLocalCardMigrationPrompt( void WebViewAutofillClientIOS::ShowLocalCardMigrationDialog(
base::OnceClosure closure) { base::OnceClosure show_migration_dialog_closure) {
NOTREACHED(); NOTIMPLEMENTED();
}
void WebViewAutofillClientIOS::ConfirmMigrateLocalCardToCloud(
std::vector<MigratableCreditCard>& migratable_credit_cards,
base::OnceClosure start_migrating_cards_closure) {
NOTIMPLEMENTED();
} }
void WebViewAutofillClientIOS::ConfirmSaveAutofillProfile( 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