Commit 8dd11710 authored by siyua's avatar siyua Committed by Commit Bot

Add omnibox icon for migration feedback dialog

1) Add a ManageMigrationUiController above
LocalCardMigration(Bubble/Dialog)ControllerImpl to control the entire
flow and what ui to show. Also it makes easier to interact with
LocalCardMigrationIconView and it keeps ChromeAutofillClient cleaner.

2) Separate LocalCardMigrationFlowStep from LocalCardMigrationDialogState,
the previous one is the enum for ManageMigrationUiController to decide
what to do while the latter one is a pure view state for dialog.

Upload screenshots for what the flow should be like in the
bug (comment#15).

Bug: 897998
Change-Id: I79f3b491f6ab86b204f05d53cda7fe9bd737d28e
Reviewed-on: https://chromium-review.googlesource.com/c/1328146
Commit-Queue: Siyu An <siyua@chromium.org>
Reviewed-by: default avatarMichael Wasserman <msw@chromium.org>
Reviewed-by: default avatarEvan Stade <estade@chromium.org>
Reviewed-by: default avatarJared Saul <jsaul@google.com>
Cr-Commit-Position: refs/heads/master@{#608525}
parent adb4651a
......@@ -2302,6 +2302,8 @@ jumbo_split_static_library("ui") {
"autofill/local_card_migration_dialog_controller_impl.h",
"autofill/local_card_migration_dialog_factory.h",
"autofill/local_card_migration_dialog_state.h",
"autofill/manage_migration_ui_controller.cc",
"autofill/manage_migration_ui_controller.h",
"autofill/save_card_bubble_controller_impl.cc",
"autofill/save_card_bubble_controller_impl.h",
"autofill/save_card_bubble_view.h",
......
......@@ -27,8 +27,6 @@
#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"
......@@ -77,8 +75,6 @@
#include "components/infobars/core/infobar.h"
#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"
......@@ -249,11 +245,9 @@ void ChromeAutofillClient::OnUnmaskVerificationResult(
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());
autofill::ManageMigrationUiController::CreateForWebContents(web_contents());
autofill::ManageMigrationUiController* controller =
autofill::ManageMigrationUiController::FromWebContents(web_contents());
controller->ShowBubble(std::move(show_migration_dialog_closure));
#endif
}
......@@ -263,14 +257,11 @@ void ChromeAutofillClient::ConfirmMigrateLocalCardToCloud(
const std::vector<MigratableCreditCard>& migratable_credit_cards,
LocalCardMigrationCallback start_migrating_cards_callback) {
#if !defined(OS_ANDROID)
autofill::LocalCardMigrationDialogControllerImpl::CreateForWebContents(
web_contents());
autofill::LocalCardMigrationDialogControllerImpl* controller =
autofill::LocalCardMigrationDialogControllerImpl::FromWebContents(
web_contents());
autofill::ManageMigrationUiController::CreateForWebContents(web_contents());
autofill::ManageMigrationUiController* controller =
autofill::ManageMigrationUiController::FromWebContents(web_contents());
controller->ShowOfferDialog(
std::move(legal_message),
CreateLocalCardMigrationDialogView(controller, web_contents()),
migratable_credit_cards, std::move(start_migrating_cards_callback));
#endif
}
......@@ -279,15 +270,10 @@ void ChromeAutofillClient::ShowLocalCardMigrationResults(
const base::string16& tip_message,
const std::vector<MigratableCreditCard>& migratable_credit_cards) {
#if !defined(OS_ANDROID)
autofill::LocalCardMigrationDialogControllerImpl::CreateForWebContents(
web_contents());
autofill::LocalCardMigrationDialogControllerImpl* controller =
autofill::LocalCardMigrationDialogControllerImpl::FromWebContents(
web_contents());
controller->ShowFeedbackDialog(
tip_message,
CreateLocalCardMigrationDialogView(controller, web_contents()),
migratable_credit_cards);
autofill::ManageMigrationUiController::CreateForWebContents(web_contents());
autofill::ManageMigrationUiController* controller =
autofill::ManageMigrationUiController::FromWebContents(web_contents());
controller->ShowCreditCardIcon(tip_message, migratable_credit_cards);
#endif
}
......
......@@ -22,8 +22,7 @@
#include "content/public/browser/web_contents_user_data.h"
#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 "chrome/browser/ui/autofill/manage_migration_ui_controller.h"
#include "components/autofill/core/browser/ui/save_card_bubble_controller.h"
#include "components/zoom/zoom_observer.h"
#endif // !defined(OS_ANDROID)
......
......@@ -66,10 +66,6 @@ void LocalCardMigrationBubbleControllerImpl::ReshowBubble() {
ShowBubbleImplementation();
}
bool LocalCardMigrationBubbleControllerImpl::IsIconVisible() const {
return !local_card_migration_bubble_closure_.is_null();
}
LocalCardMigrationBubble*
LocalCardMigrationBubbleControllerImpl::local_card_migration_bubble_view()
const {
......
......@@ -35,9 +35,6 @@ class LocalCardMigrationBubbleControllerImpl
// Invoked when local card migration icon is clicked.
void ReshowBubble();
// Returns true if Omnibox save credit card icon should be visible.
bool IsIconVisible() const;
// Returns nullptr if no bubble is currently shown.
LocalCardMigrationBubble* local_card_migration_bubble_view() const;
......
......@@ -14,8 +14,12 @@
#include "base/time/time.h"
#include "build/build_config.h"
#include "chrome/browser/ui/autofill/local_card_migration_dialog.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.h"
#include "chrome/browser/ui/browser_finder.h"
#include "chrome/browser/ui/browser_window.h"
#include "chrome/browser/ui/location_bar/location_bar.h"
#include "components/autofill/core/browser/autofill_metrics.h"
#include "components/autofill/core/browser/local_card_migration_manager.h"
#include "components/autofill/core/browser/payments/payments_service_url.h"
......@@ -30,8 +34,7 @@ namespace autofill {
LocalCardMigrationDialogControllerImpl::LocalCardMigrationDialogControllerImpl(
content::WebContents* web_contents)
: web_contents_(web_contents),
local_card_migration_dialog_(nullptr),
: content::WebContentsObserver(web_contents),
pref_service_(
user_prefs::UserPrefs::Get(web_contents->GetBrowserContext())) {}
......@@ -43,7 +46,6 @@ LocalCardMigrationDialogControllerImpl::
void LocalCardMigrationDialogControllerImpl::ShowOfferDialog(
std::unique_ptr<base::DictionaryValue> legal_message,
LocalCardMigrationDialog* local_card_migration_dialog,
const std::vector<MigratableCreditCard>& migratable_credit_cards,
AutofillClient::LocalCardMigrationCallback start_migrating_cards_callback) {
if (local_card_migration_dialog_)
......@@ -57,10 +59,13 @@ void LocalCardMigrationDialogControllerImpl::ShowOfferDialog(
return;
}
local_card_migration_dialog_ = local_card_migration_dialog;
local_card_migration_dialog_ =
CreateLocalCardMigrationDialogView(this, web_contents());
start_migrating_cards_callback_ = std::move(start_migrating_cards_callback);
migratable_credit_cards_ = migratable_credit_cards;
view_state_ = LocalCardMigrationDialogState::kOffered;
// If the credit card icon is being shown, remove the icon.
UpdateIcon();
local_card_migration_dialog_->ShowDialog();
dialog_is_visible_duration_timer_ = base::ElapsedTimer();
......@@ -68,16 +73,14 @@ void LocalCardMigrationDialogControllerImpl::ShowOfferDialog(
AutofillMetrics::LOCAL_CARD_MIGRATION_DIALOG_SHOWN);
}
void LocalCardMigrationDialogControllerImpl::ShowFeedbackDialog(
void LocalCardMigrationDialogControllerImpl::ShowCreditCardIcon(
const base::string16& tip_message,
LocalCardMigrationDialog* local_card_migration_dialog,
const std::vector<MigratableCreditCard>& migratable_credit_cards) {
if (local_card_migration_dialog_)
local_card_migration_dialog_->CloseDialog();
migratable_credit_cards_ = migratable_credit_cards;
tip_message_ = tip_message;
local_card_migration_dialog_ = local_card_migration_dialog;
view_state_ = LocalCardMigrationDialogState::kFinished;
for (const auto& cc : migratable_credit_cards) {
......@@ -87,7 +90,13 @@ void LocalCardMigrationDialogControllerImpl::ShowFeedbackDialog(
break;
}
}
UpdateIcon();
}
void LocalCardMigrationDialogControllerImpl::ShowFeedbackDialog() {
local_card_migration_dialog_ =
CreateLocalCardMigrationDialogView(this, web_contents());
UpdateIcon();
local_card_migration_dialog_->ShowDialog();
}
......@@ -153,10 +162,24 @@ void LocalCardMigrationDialogControllerImpl::OnDialogClosed() {
local_card_migration_dialog_ = nullptr;
}
LocalCardMigrationDialog*
LocalCardMigrationDialogControllerImpl::local_card_migration_dialog_view()
const {
return local_card_migration_dialog_;
}
void LocalCardMigrationDialogControllerImpl::OpenUrl(const GURL& url) {
web_contents_->OpenURL(content::OpenURLParams(
web_contents()->OpenURL(content::OpenURLParams(
url, content::Referrer(), WindowOpenDisposition::NEW_FOREGROUND_TAB,
ui::PAGE_TRANSITION_LINK, false));
}
void LocalCardMigrationDialogControllerImpl::UpdateIcon() {
Browser* browser = chrome::FindBrowserWithWebContents(web_contents());
DCHECK(browser);
LocationBar* location_bar = browser->window()->GetLocationBar();
DCHECK(location_bar);
location_bar->UpdateLocalCardMigrationIcon();
}
} // namespace autofill
......@@ -11,6 +11,7 @@
#include "base/timer/elapsed_timer.h"
#include "components/autofill/core/browser/autofill_client.h"
#include "components/autofill/core/browser/ui/local_card_migration_dialog_controller.h"
#include "content/public/browser/web_contents_observer.h"
#include "content/public/browser/web_contents_user_data.h"
namespace autofill {
......@@ -22,6 +23,7 @@ class LocalCardMigrationDialog;
// dialog that the migration dialog interrupted.
class LocalCardMigrationDialogControllerImpl
: public LocalCardMigrationDialogController,
public content::WebContentsObserver,
public content::WebContentsUserData<
LocalCardMigrationDialogControllerImpl> {
public:
......@@ -29,18 +31,20 @@ class LocalCardMigrationDialogControllerImpl
void ShowOfferDialog(
std::unique_ptr<base::DictionaryValue> legal_message,
LocalCardMigrationDialog* local_card_migration_dialog,
const std::vector<MigratableCreditCard>& migratable_credit_cards,
AutofillClient::LocalCardMigrationCallback
start_migrating_cards_callback);
// When migration is finished, show a feedback dialog containing
// all the upload results for cards that the user selected to upload.
void ShowFeedbackDialog(
// When migration is finished, show a credit card icon in the omnibox.
void ShowCreditCardIcon(
const base::string16& tip_message,
LocalCardMigrationDialog* local_card_migration_dialog,
const std::vector<MigratableCreditCard>& migratable_credit_cards);
// If the user clicks on the credit card icon in the omnibox, we show
// the feedback dialog containing the uploading results of the cards that
// the user selected to upload.
void ShowFeedbackDialog();
// LocalCardMigrationDialogController:
LocalCardMigrationDialogState GetViewState() const override;
const std::vector<MigratableCreditCard>& GetCardList() const override;
......@@ -53,6 +57,9 @@ class LocalCardMigrationDialogControllerImpl
void OnLegalMessageLinkClicked(const GURL& url) override;
void OnDialogClosed() override;
// Returns nullptr if no dialog is currently shown.
LocalCardMigrationDialog* local_card_migration_dialog_view() const;
protected:
explicit LocalCardMigrationDialogControllerImpl(
content::WebContents* web_contents);
......@@ -63,9 +70,9 @@ class LocalCardMigrationDialogControllerImpl
void OpenUrl(const GURL& url);
content::WebContents* web_contents_;
void UpdateIcon();
LocalCardMigrationDialog* local_card_migration_dialog_;
LocalCardMigrationDialog* local_card_migration_dialog_ = nullptr;
PrefService* pref_service_;
......
......@@ -7,7 +7,7 @@
namespace autofill {
// The current state of the local card migration dialog.
// The current view state of the local card migration dialog.
enum class LocalCardMigrationDialogState {
// Dialog that offers users to migrate browser-saved local cards.
kOffered,
......@@ -20,4 +20,4 @@ enum class LocalCardMigrationDialogState {
} // namespace autofill
#endif // CHROME_BROWSER_UI_AUTOFILL_LOCAL_CARD_MIGRATION_DIALOG_STATE_H_
\ No newline at end of file
#endif // CHROME_BROWSER_UI_AUTOFILL_LOCAL_CARD_MIGRATION_DIALOG_STATE_H_
// Copyright 2018 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/autofill/manage_migration_ui_controller.h"
#include "chrome/browser/ui/autofill/local_card_migration_bubble.h"
#include "chrome/browser/ui/autofill/local_card_migration_dialog.h"
namespace autofill {
ManageMigrationUiController::ManageMigrationUiController(
content::WebContents* web_contents)
: content::WebContentsObserver(web_contents) {
autofill::LocalCardMigrationBubbleControllerImpl::CreateForWebContents(
web_contents);
bubble_controller_ =
autofill::LocalCardMigrationBubbleControllerImpl::FromWebContents(
web_contents);
autofill::LocalCardMigrationDialogControllerImpl::CreateForWebContents(
web_contents);
dialog_controller_ =
autofill::LocalCardMigrationDialogControllerImpl::FromWebContents(
web_contents);
}
ManageMigrationUiController::~ManageMigrationUiController() {}
void ManageMigrationUiController::ShowBubble(
base::OnceClosure show_migration_dialog_closure) {
flow_step_ = LocalCardMigrationFlowStep::PROMO_BUBBLE;
bubble_controller_->ShowBubble(std::move(show_migration_dialog_closure));
}
void ManageMigrationUiController::ShowOfferDialog(
std::unique_ptr<base::DictionaryValue> legal_message,
const std::vector<MigratableCreditCard>& migratable_credit_cards,
AutofillClient::LocalCardMigrationCallback start_migrating_cards_callback) {
flow_step_ = LocalCardMigrationFlowStep::OFFER_DIALOG;
dialog_controller_->ShowOfferDialog(
std::move(legal_message), migratable_credit_cards,
std::move(start_migrating_cards_callback));
}
void ManageMigrationUiController::ShowCreditCardIcon(
const base::string16& tip_message,
const std::vector<MigratableCreditCard>& migratable_credit_cards) {
if (!dialog_controller_)
return;
DCHECK_EQ(flow_step_, LocalCardMigrationFlowStep::OFFER_DIALOG);
flow_step_ = LocalCardMigrationFlowStep::CREDIT_CARD_ICON;
dialog_controller_->ShowCreditCardIcon(tip_message, migratable_credit_cards);
}
void ManageMigrationUiController::OnUserClickingCreditCardIcon() {
switch (flow_step_) {
case LocalCardMigrationFlowStep::PROMO_BUBBLE: {
ReshowBubble();
break;
}
case LocalCardMigrationFlowStep::CREDIT_CARD_ICON: {
ShowFeedbackDialog();
break;
}
default: {
NOTREACHED();
break;
}
}
}
LocalCardMigrationFlowStep ManageMigrationUiController::GetFlowStep() const {
return flow_step_;
}
bool ManageMigrationUiController::IsIconVisible() const {
return flow_step_ == LocalCardMigrationFlowStep::PROMO_BUBBLE ||
flow_step_ == LocalCardMigrationFlowStep::CREDIT_CARD_ICON;
}
LocalCardMigrationBubble* ManageMigrationUiController::GetBubbleView() const {
if (!bubble_controller_)
return nullptr;
return bubble_controller_->local_card_migration_bubble_view();
}
LocalCardMigrationDialog* ManageMigrationUiController::GetDialogView() const {
if (!dialog_controller_)
return nullptr;
return dialog_controller_->local_card_migration_dialog_view();
}
void ManageMigrationUiController::ReshowBubble() {
if (!bubble_controller_)
return;
DCHECK_EQ(flow_step_, LocalCardMigrationFlowStep::PROMO_BUBBLE);
bubble_controller_->ReshowBubble();
}
void ManageMigrationUiController::ShowFeedbackDialog() {
if (!dialog_controller_)
return;
DCHECK_EQ(flow_step_, LocalCardMigrationFlowStep::CREDIT_CARD_ICON);
flow_step_ = LocalCardMigrationFlowStep::FEEDBACK_DIALOG;
dialog_controller_->ShowFeedbackDialog();
}
} // namespace autofill
// Copyright 2018 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.
#ifndef CHROME_BROWSER_UI_AUTOFILL_MANAGE_MIGRATION_UI_CONTROLLER_H_
#define CHROME_BROWSER_UI_AUTOFILL_MANAGE_MIGRATION_UI_CONTROLLER_H_
#include "base/macros.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 "content/public/browser/web_contents_observer.h"
#include "content/public/browser/web_contents_user_data.h"
namespace autofill {
// Possible steps the migration flow could be in.
enum class LocalCardMigrationFlowStep {
// Migration flow step unknown.
UNKNOWN,
// No migration flow bubble or dialog is shown.
NOT_SHOWN,
// Should show the bubble that offers users to continue with the migration
// flow.
PROMO_BUBBLE,
// Should show the dialog that offers users to migrate credit cards to
// Payments server.
OFFER_DIALOG,
// Should show the credit card icon when migration is finished and the
// feedback dialog is ready.
CREDIT_CARD_ICON,
// Should show the feedback dialog dialog after the user clicking the
// credit card.
FEEDBACK_DIALOG,
};
// Controller controls the step of migration flow and is responsible
// for interacting with LocalCardMigrationIconView.
class ManageMigrationUiController
: public content::WebContentsObserver,
public content::WebContentsUserData<ManageMigrationUiController> {
public:
~ManageMigrationUiController() override;
void ShowBubble(base::OnceClosure show_migration_dialog_closure);
void ShowOfferDialog(
std::unique_ptr<base::DictionaryValue> legal_message,
const std::vector<MigratableCreditCard>& migratable_credit_cards,
AutofillClient::LocalCardMigrationCallback
start_migrating_cards_callback);
void ShowCreditCardIcon(
const base::string16& tip_message,
const std::vector<MigratableCreditCard>& migratable_credit_cards);
void OnUserClickingCreditCardIcon();
LocalCardMigrationFlowStep GetFlowStep() const;
bool IsIconVisible() const;
LocalCardMigrationBubble* GetBubbleView() const;
LocalCardMigrationDialog* GetDialogView() const;
protected:
explicit ManageMigrationUiController(content::WebContents* web_contents);
private:
friend class content::WebContentsUserData<ManageMigrationUiController>;
void ReshowBubble();
void ShowFeedbackDialog();
LocalCardMigrationBubbleControllerImpl* bubble_controller_ = nullptr;
LocalCardMigrationDialogControllerImpl* dialog_controller_ = nullptr;
// This indicates what step the migration flow is currently in and
// what should be shown next.
LocalCardMigrationFlowStep flow_step_ = LocalCardMigrationFlowStep::NOT_SHOWN;
DISALLOW_COPY_AND_ASSIGN(ManageMigrationUiController);
};
} // namespace autofill
#endif // CHROME_BROWSER_UI_AUTOFILL_MANAGE_MIGRATION_UI_CONTROLLER_H_
......@@ -30,7 +30,7 @@
#include "chrome/browser/sessions/tab_restore_service_factory.h"
#include "chrome/browser/translate/chrome_translate_client.h"
#include "chrome/browser/ui/accelerator_utils.h"
#include "chrome/browser/ui/autofill/local_card_migration_bubble_controller_impl.h"
#include "chrome/browser/ui/autofill/manage_migration_ui_controller.h"
#include "chrome/browser/ui/autofill/save_card_bubble_controller_impl.h"
#include "chrome/browser/ui/bookmarks/bookmark_utils.h"
#include "chrome/browser/ui/bookmarks/bookmark_utils_desktop.h"
......@@ -876,10 +876,10 @@ void SaveCreditCard(Browser* browser) {
void MigrateLocalCards(Browser* browser) {
WebContents* web_contents =
browser->tab_strip_model()->GetActiveWebContents();
autofill::LocalCardMigrationBubbleControllerImpl* controller =
autofill::LocalCardMigrationBubbleControllerImpl::FromWebContents(
web_contents);
controller->ReshowBubble();
autofill::ManageMigrationUiController* controller =
autofill::ManageMigrationUiController::FromWebContents(web_contents);
// Show migration-related Ui when the user clicks the credit card icon.
controller->OnUserClickingCreditCardIcon();
}
void Translate(Browser* browser) {
......
......@@ -5,12 +5,13 @@
#include "chrome/app/chrome_command_ids.h"
#include "chrome/app/vector_icons/vector_icons.h"
#include "chrome/browser/ui/autofill/local_card_migration_bubble_controller_impl.h"
#include "chrome/browser/ui/autofill/manage_migration_ui_controller.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_command_controller.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/browser/ui/view_ids.h"
#include "chrome/browser/ui/views/autofill/local_card_migration_bubble_views.h"
#include "chrome/browser/ui/views/autofill/local_card_migration_dialog_view.h"
#include "chrome/grit/generated_resources.h"
#include "ui/base/l10n/l10n_util.h"
......@@ -31,12 +32,24 @@ LocalCardMigrationIconView::LocalCardMigrationIconView(
LocalCardMigrationIconView::~LocalCardMigrationIconView() {}
views::BubbleDialogDelegateView* LocalCardMigrationIconView::GetBubble() const {
LocalCardMigrationBubbleControllerImpl* controller = GetController();
ManageMigrationUiController* controller = GetController();
if (!controller)
return nullptr;
return static_cast<autofill::LocalCardMigrationBubbleViews*>(
controller->local_card_migration_bubble_view());
switch (controller->GetFlowStep()) {
case LocalCardMigrationFlowStep::PROMO_BUBBLE: {
return static_cast<LocalCardMigrationBubbleViews*>(
controller->GetBubbleView());
}
case LocalCardMigrationFlowStep::CREDIT_CARD_ICON: {
return static_cast<LocalCardMigrationDialogView*>(
controller->GetDialogView());
}
default: {
NOTREACHED();
return nullptr;
}
}
}
bool LocalCardMigrationIconView::Update() {
......@@ -46,7 +59,7 @@ bool LocalCardMigrationIconView::Update() {
const bool was_visible = visible();
// |controller| may be nullptr due to lazy initialization.
LocalCardMigrationBubbleControllerImpl* controller = GetController();
ManageMigrationUiController* controller = GetController();
bool enabled = controller && controller->IsIconVisible();
enabled &= SetCommandEnabled(enabled);
SetVisible(enabled);
......@@ -65,8 +78,7 @@ base::string16 LocalCardMigrationIconView::GetTextForTooltipAndAccessibleName()
return l10n_util::GetStringUTF16(IDS_TOOLTIP_MIGRATE_LOCAL_CARD);
}
LocalCardMigrationBubbleControllerImpl*
LocalCardMigrationIconView::GetController() const {
ManageMigrationUiController* LocalCardMigrationIconView::GetController() const {
if (!browser_)
return nullptr;
......@@ -74,8 +86,7 @@ LocalCardMigrationIconView::GetController() const {
if (!web_contents)
return nullptr;
return autofill::LocalCardMigrationBubbleControllerImpl::FromWebContents(
web_contents);
return autofill::ManageMigrationUiController::FromWebContents(web_contents);
}
} // namespace autofill
......@@ -13,7 +13,7 @@ class CommandUpdater;
namespace autofill {
class LocalCardMigrationBubbleControllerImpl;
class ManageMigrationUiController;
// The icon shown in location bar for the intermediate local card migration
// bubble.
......@@ -35,7 +35,7 @@ class LocalCardMigrationIconView : public PageActionIconView {
const gfx::VectorIcon& GetVectorIcon() const override;
private:
LocalCardMigrationBubbleControllerImpl* GetController() const;
ManageMigrationUiController* GetController() const;
// Used to do nullptr check when getting the controller.
Browser* const browser_;
......
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