Commit 9356c67e authored by Alan Cutter's avatar Alan Cutter Committed by Commit Bot

Add "save card" and "local card migration" icons to PWA window toolbars

This CL moves kSaveCard and kLocalCardMigration PageActionIcons into the
OmniboxPageActionIconContainerView so they can be reused by PWA windows.

This removes them from the LocationBarView and makes them conform to the
interface used by the majority of the PageActionIcons.

Before: https://bugs.chromium.org/p/chromium/issues/attachment?aid=411699&signed_aid=oN3fSiCBdesl2B-kWaptBQ==&inline=1
After: https://bugs.chromium.org/p/chromium/issues/attachment?aid=411700&signed_aid=PouzN_Ing1hmoMWdLqXZVA==&inline=1

Bug: 788051
Change-Id: Iebc963bdf24eeb5e16257065f79caefdc9158dba
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1803018
Commit-Queue: Alan Cutter <alancutter@chromium.org>
Reviewed-by: default avatarEvan Stade <estade@chromium.org>
Reviewed-by: default avatarPeter Boström <pbos@chromium.org>
Cr-Commit-Position: refs/heads/master@{#696707}
parent 1c8a5558
......@@ -58,8 +58,6 @@ jumbo_split_static_library("ui") {
"autofill/chrome_autofill_client.h",
"autofill/payments/autofill_dialog_models.cc",
"autofill/payments/autofill_dialog_models.h",
"autofill/payments/autofill_ui_util.cc",
"autofill/payments/autofill_ui_util.h",
"autofill/payments/create_card_unmask_prompt_view.h",
"autofill/payments/credit_card_scanner_controller.cc",
"autofill/payments/credit_card_scanner_controller.h",
......
// Copyright 2019 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/payments/autofill_ui_util.h"
#include <memory>
#include "build/build_config.h"
#include "chrome/browser/ui/location_bar/location_bar.h"
#include "components/autofill/core/common/autofill_payments_features.h"
#if !defined(OS_ANDROID)
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_finder.h"
#include "chrome/browser/ui/browser_window.h"
#endif
namespace autofill {
void UpdatePageActionIcon(PageActionIconType icon_type,
content::WebContents* web_contents) {
#if !defined(OS_ANDROID)
Browser* browser = chrome::FindBrowserWithWebContents(web_contents);
if (!browser)
return;
// If feature is disabled, kLocalCardMigration and kSaveCard will be children
// of the LocationBarView.
// TODO(crbug.com/788051): Make these always be children of a
// |PageActionIconContainer| so we can just use |GetPageActionIcon|.
if (!base::FeatureList::IsEnabled(
features::kAutofillEnableToolbarStatusChip)) {
LocationBar* location_bar = browser->window()->GetLocationBar();
switch (icon_type) {
case PageActionIconType::kLocalCardMigration:
if (location_bar)
location_bar->UpdateLocalCardMigrationIcon();
return;
case PageActionIconType::kSaveCard:
if (location_bar)
location_bar->UpdateSaveCreditCardIcon();
return;
case PageActionIconType::kManagePasswords: {
// Handled by |UpdatePageActionIcon| below.
break;
}
default:
NOTREACHED();
}
}
browser->window()->UpdatePageActionIcon(icon_type);
#endif
}
} // namespace autofill
// Copyright 2019 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_PAYMENTS_AUTOFILL_UI_UTIL_H_
#define CHROME_BROWSER_UI_AUTOFILL_PAYMENTS_AUTOFILL_UI_UTIL_H_
#include "chrome/browser/ui/page_action/page_action_icon_type.h"
#include "content/public/browser/web_contents.h"
namespace autofill {
// TODO(crbug.com/932818): Clean this up and move the logic to
// ToolbarPageActionContainerView once the status chip is fully
// launched.
// Update the state of related page action icon icon.
void UpdatePageActionIcon(PageActionIconType icon_type,
content::WebContents* web_contents);
} // namespace autofill
#endif // CHROME_BROWSER_UI_AUTOFILL_PAYMENTS_AUTOFILL_UI_UTIL_H_
......@@ -8,7 +8,6 @@
#include "chrome/browser/autofill/strike_database_factory.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/autofill/payments/autofill_ui_util.h"
#include "chrome/browser/ui/autofill/payments/local_card_migration_bubble.h"
#include "chrome/browser/ui/autofill/payments/payments_ui_constants.h"
#include "chrome/browser/ui/browser.h"
......@@ -185,8 +184,11 @@ void LocalCardMigrationBubbleControllerImpl::ShowBubbleImplementation() {
}
void LocalCardMigrationBubbleControllerImpl::UpdateLocalCardMigrationIcon() {
::autofill::UpdatePageActionIcon(PageActionIconType::kLocalCardMigration,
web_contents());
Browser* browser = chrome::FindBrowserWithWebContents(web_contents());
if (browser) {
browser->window()->UpdatePageActionIcon(
PageActionIconType::kLocalCardMigration);
}
}
void LocalCardMigrationBubbleControllerImpl::AddStrikesForBubbleClose() {
......
......@@ -19,7 +19,6 @@
#include "build/build_config.h"
#include "chrome/browser/autofill/strike_database_factory.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/autofill/payments/autofill_ui_util.h"
#include "chrome/browser/ui/autofill/payments/local_card_migration_dialog.h"
#include "chrome/browser/ui/autofill/payments/local_card_migration_dialog_factory.h"
#include "chrome/browser/ui/autofill/payments/local_card_migration_dialog_state.h"
......@@ -266,8 +265,11 @@ void LocalCardMigrationDialogControllerImpl::OpenUrl(const GURL& url) {
}
void LocalCardMigrationDialogControllerImpl::UpdateLocalCardMigrationIcon() {
::autofill::UpdatePageActionIcon(PageActionIconType::kLocalCardMigration,
web_contents());
Browser* browser = chrome::FindBrowserWithWebContents(web_contents());
if (browser) {
browser->window()->UpdatePageActionIcon(
PageActionIconType::kLocalCardMigration);
}
}
bool LocalCardMigrationDialogControllerImpl::HasFailedCard() const {
......
......@@ -17,7 +17,6 @@
#include "chrome/browser/signin/signin_ui_util.h"
#include "chrome/browser/ssl/security_state_tab_helper.h"
#include "chrome/browser/sync/profile_sync_service_factory.h"
#include "chrome/browser/ui/autofill/payments/autofill_ui_util.h"
#include "chrome/browser/ui/autofill/payments/payments_ui_constants.h"
#include "chrome/browser/ui/autofill/payments/save_card_bubble_view.h"
#include "chrome/browser/ui/autofill/payments/save_card_ui.h"
......@@ -807,8 +806,9 @@ void SaveCardBubbleControllerImpl::ShowIconOnly() {
}
void SaveCardBubbleControllerImpl::UpdateSaveCardIcon() {
::autofill::UpdatePageActionIcon(PageActionIconType::kSaveCard,
web_contents());
Browser* browser = chrome::FindBrowserWithWebContents(web_contents());
if (browser)
browser->window()->UpdatePageActionIcon(PageActionIconType::kSaveCard);
}
void SaveCardBubbleControllerImpl::OpenUrl(const GURL& url) {
......
......@@ -61,12 +61,6 @@ class LocationBar {
// Updates the state of the images showing the content settings status.
virtual void UpdateContentSettingsIcons() = 0;
// Updates the visibility and toggled state of the save credit card icon.
virtual void UpdateSaveCreditCardIcon() = 0;
// Updates the visibility and toggled state of the local card migration icon.
virtual void UpdateLocalCardMigrationIcon() = 0;
// Updates the visibility of the bookmark star.
virtual void UpdateBookmarkStarVisibility() = 0;
......
......@@ -16,7 +16,6 @@
#include "chrome/browser/password_manager/chrome_password_manager_client.h"
#include "chrome/browser/password_manager/password_store_factory.h"
#include "chrome/browser/signin/signin_ui_util.h"
#include "chrome/browser/ui/autofill/payments/autofill_ui_util.h"
#include "chrome/browser/ui/browser_command_controller.h"
#include "chrome/browser/ui/browser_commands.h"
#include "chrome/browser/ui/browser_finder.h"
......@@ -545,9 +544,7 @@ void ManagePasswordsUIController::UpdateBubbleAndIconVisibility() {
Browser* browser = chrome::FindBrowserWithWebContents(web_contents());
if (!browser)
return;
::autofill::UpdatePageActionIcon(PageActionIconType::kManagePasswords,
web_contents());
browser->window()->UpdatePageActionIcon(PageActionIconType::kManagePasswords);
}
AccountChooserPrompt* ManagePasswordsUIController::CreateAccountChooser(
......
......@@ -450,26 +450,21 @@ class LocalCardMigrationBrowserTest
->local_card_migration_dialog_view());
}
LocalCardMigrationIconView* GetLocalCardMigrationIconView(
bool icon_in_status_chip) {
LocalCardMigrationIconView* icon_view = nullptr;
if (!browser())
return icon_view;
PageActionIconView* GetLocalCardMigrationIconView() {
BrowserView* browser_view =
BrowserView::GetBrowserViewForBrowser(browser());
if (icon_in_status_chip) {
ToolbarPageActionIconContainerView*
toolbar_page_action_icon_container_view =
browser_view->toolbar()->toolbar_page_action_container();
icon_view = toolbar_page_action_icon_container_view
->local_card_migration_icon_view();
PageActionIconView* icon =
browser_view->toolbar_button_provider()->GetPageActionIconView(
PageActionIconType::kLocalCardMigration);
if (base::FeatureList::IsEnabled(
features::kAutofillEnableToolbarStatusChip)) {
EXPECT_TRUE(
browser_view->toolbar()->toolbar_page_action_container()->Contains(
icon));
} else {
LocationBarView* location_bar_view = browser_view->GetLocationBarView();
icon_view = location_bar_view->local_card_migration_icon_view();
EXPECT_TRUE(browser_view->GetLocationBarView()->Contains(icon));
}
CHECK(icon_view);
return icon_view;
return icon;
}
views::View* GetCloseButton() {
......@@ -693,8 +688,7 @@ IN_PROC_BROWSER_TEST_F(LocalCardMigrationBrowserTest,
SaveLocalCard(kSecondCardNumber);
UseCardAndWaitForMigrationOffer(kFirstCardNumber);
EXPECT_TRUE(GetLocalCardMigrationIconView(/*icon_in_status_chip=*/false)
->GetVisible());
EXPECT_TRUE(GetLocalCardMigrationIconView()->GetVisible());
}
// Ensures that clicking on the credit card icon in the omnibox reopens the
......@@ -708,7 +702,7 @@ IN_PROC_BROWSER_TEST_F(LocalCardMigrationBrowserTest,
UseCardAndWaitForMigrationOffer(kFirstCardNumber);
ClickOnDialogViewAndWait(GetCloseButton(),
GetLocalCardMigrationOfferBubbleViews());
ClickOnView(GetLocalCardMigrationIconView(/*icon_in_status_chip=*/false));
ClickOnView(GetLocalCardMigrationIconView());
// Clicking the icon should reshow the bubble.
EXPECT_TRUE(
......@@ -921,7 +915,7 @@ IN_PROC_BROWSER_TEST_F(LocalCardMigrationBrowserTest,
ClickOnDialogViewAndWait(GetCloseButton(),
GetLocalCardMigrationOfferBubbleViews());
base::HistogramTester histogram_tester;
ClickOnView(GetLocalCardMigrationIconView(/*icon_in_status_chip=*/false));
ClickOnView(GetLocalCardMigrationIconView());
// Clicking the icon should reshow the bubble.
EXPECT_TRUE(
......@@ -947,8 +941,7 @@ IN_PROC_BROWSER_TEST_F(LocalCardMigrationBrowserTestForStatusChip,
SaveLocalCard(kSecondCardNumber);
UseCardAndWaitForMigrationOffer(kFirstCardNumber);
EXPECT_TRUE(GetLocalCardMigrationIconView(/*icon_in_status_chip=*/true)
->GetVisible());
EXPECT_TRUE(GetLocalCardMigrationIconView()->GetVisible());
}
// TODO(crbug.com/999510): Crashes flakily on Linux.
......@@ -969,7 +962,7 @@ IN_PROC_BROWSER_TEST_F(LocalCardMigrationBrowserTestForStatusChip,
UseCardAndWaitForMigrationOffer(kFirstCardNumber);
ClickOnDialogViewAndWait(GetCloseButton(),
GetLocalCardMigrationOfferBubbleViews());
ClickOnView(GetLocalCardMigrationIconView(/*icon_in_status_chip=*/true));
ClickOnView(GetLocalCardMigrationIconView());
// Clicking the icon should reshow the bubble.
EXPECT_TRUE(
......@@ -1020,8 +1013,7 @@ IN_PROC_BROWSER_TEST_F(LocalCardMigrationBrowserTestForStatusChip,
->ActivateFirstInactiveBubbleForAccessibility());
// Ensure the bubble's widget refreshed appropriately.
EXPECT_TRUE(GetLocalCardMigrationIconView(/*icon_in_status_chip=*/true)
->GetVisible());
EXPECT_TRUE(GetLocalCardMigrationIconView()->GetVisible());
EXPECT_TRUE(widget->IsVisible());
EXPECT_TRUE(widget->IsActive());
}
......@@ -1035,8 +1027,7 @@ IN_PROC_BROWSER_TEST_F(LocalCardMigrationBrowserTestForStatusChip,
UseCardAndWaitForMigrationOffer(kFirstCardNumber);
// Ensures flow is triggered, and bubble and icon view are visible.
EXPECT_TRUE(GetLocalCardMigrationIconView(/*icon_in_status_chip=*/true)
->GetVisible());
EXPECT_TRUE(GetLocalCardMigrationIconView()->GetVisible());
EXPECT_TRUE(GetLocalCardMigrationOfferBubbleViews()->GetVisible());
AddTabAtIndex(1, GURL("http://example.com/"), ui::PAGE_TRANSITION_TYPED);
......@@ -1044,15 +1035,13 @@ IN_PROC_BROWSER_TEST_F(LocalCardMigrationBrowserTestForStatusChip,
tab_model->ActivateTabAt(1, {TabStripModel::GestureType::kOther});
// Ensures bubble and icon go away if user navigates to another tab.
EXPECT_FALSE(GetLocalCardMigrationIconView(/*icon_in_status_chip=*/true)
->GetVisible());
EXPECT_FALSE(GetLocalCardMigrationIconView()->GetVisible());
EXPECT_FALSE(GetLocalCardMigrationOfferBubbleViews());
tab_model->ActivateTabAt(0, {TabStripModel::GestureType::kOther});
// If the user navigates back, shows only the icon not the bubble.
EXPECT_TRUE(GetLocalCardMigrationIconView(/*icon_in_status_chip=*/true)
->GetVisible());
EXPECT_TRUE(GetLocalCardMigrationIconView()->GetVisible());
EXPECT_FALSE(GetLocalCardMigrationOfferBubbleViews());
}
#endif // !defined(OS_CHROMEOS)
......
......@@ -21,12 +21,10 @@ namespace autofill {
LocalCardMigrationIconView::LocalCardMigrationIconView(
CommandUpdater* command_updater,
PageActionIconView::Delegate* delegate,
const gfx::FontList& font_list)
PageActionIconView::Delegate* delegate)
: PageActionIconView(command_updater,
IDC_MIGRATE_LOCAL_CREDIT_CARD_FOR_PAGE,
delegate,
font_list) {
delegate) {
DCHECK(delegate);
SetID(VIEW_ID_MIGRATE_LOCAL_CREDIT_CARD_BUTTON);
SetUpForInOutAnimation();
......
......@@ -19,8 +19,7 @@ class ManageMigrationUiController;
class LocalCardMigrationIconView : public PageActionIconView {
public:
LocalCardMigrationIconView(CommandUpdater* command_updater,
PageActionIconView::Delegate* delegate,
const gfx::FontList& font_list);
PageActionIconView::Delegate* delegate);
~LocalCardMigrationIconView() override;
// PageActionIconView:
......
......@@ -687,28 +687,20 @@ class SaveCardBubbleViewsFullFormBrowserTest
return static_cast<SaveCardBubbleViews*>(save_card_bubble_view);
}
SaveCardIconView* GetSaveCardIconView() {
if (!browser())
return nullptr;
SaveCardIconView* icon_view = nullptr;
PageActionIconView* GetSaveCardIconView() {
BrowserView* browser_view =
BrowserView::GetBrowserViewForBrowser(browser());
PageActionIconView* icon =
browser_view->toolbar_button_provider()->GetPageActionIconView(
PageActionIconType::kSaveCard);
if (base::FeatureList::IsEnabled(
features::kAutofillEnableToolbarStatusChip)) {
ToolbarPageActionIconContainerView*
toolbar_page_action_icon_container_view =
browser_view->toolbar()->toolbar_page_action_container();
DCHECK(toolbar_page_action_icon_container_view->save_card_icon_view());
icon_view =
toolbar_page_action_icon_container_view->save_card_icon_view();
DCHECK(browser_view->toolbar()->toolbar_page_action_container()->Contains(
icon));
} else {
LocationBarView* location_bar_view = browser_view->GetLocationBarView();
DCHECK(location_bar_view->save_credit_card_icon_view());
icon_view = location_bar_view->save_credit_card_icon_view();
DCHECK(browser_view->GetLocationBarView()->Contains(icon));
}
return icon_view;
return icon;
}
void OpenSettingsFromManageCardsPrompt() {
......
......@@ -18,12 +18,10 @@
namespace autofill {
SaveCardIconView::SaveCardIconView(CommandUpdater* command_updater,
PageActionIconView::Delegate* delegate,
const gfx::FontList& font_list)
PageActionIconView::Delegate* delegate)
: PageActionIconView(command_updater,
IDC_SAVE_CREDIT_CARD_FOR_PAGE,
delegate,
font_list) {
delegate) {
DCHECK(delegate);
SetID(VIEW_ID_SAVE_CREDIT_CARD_BUTTON);
......
......@@ -20,8 +20,7 @@ class SaveCardBubbleController;
class SaveCardIconView : public PageActionIconView {
public:
SaveCardIconView(CommandUpdater* command_updater,
PageActionIconView::Delegate* delegate,
const gfx::FontList& font_list);
PageActionIconView::Delegate* delegate);
~SaveCardIconView() override;
// PageActionIconView:
......@@ -35,8 +34,6 @@ class SaveCardIconView : public PageActionIconView {
const gfx::VectorIcon& GetVectorIcon() const override;
private:
friend class SaveCardBubbleViewsFullFormBrowserTest;
SaveCardBubbleController* GetController() const;
// gfx::AnimationDelegate:
......
......@@ -18,6 +18,9 @@
#include "chrome/common/web_application_info.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/ui_test_utils.h"
#include "components/autofill/content/browser/content_autofill_driver.h"
#include "components/autofill/core/browser/form_data_importer.h"
#include "components/autofill/core/browser/payments/credit_card_save_manager.h"
#include "content/public/test/browser_test_utils.h"
#include "content/public/test/test_navigation_observer.h"
#include "ui/base/theme_provider.h"
......@@ -29,6 +32,8 @@ class BrowserNonClientFrameViewBrowserTest
~BrowserNonClientFrameViewBrowserTest() override = default;
void SetUp() override {
embedded_test_server()->ServeFilesFromSourceDirectory(
"components/test/data");
ASSERT_TRUE(embedded_test_server()->Start());
extensions::ExtensionBrowserTest::SetUp();
......@@ -37,10 +42,13 @@ class BrowserNonClientFrameViewBrowserTest
// Note: A "bookmark app" is a type of hosted app. All of these tests apply
// equally to hosted and bookmark apps, but it's easier to install a bookmark
// app in a test.
void InstallAndLaunchBookmarkApp() {
void InstallAndLaunchBookmarkApp(
base::Optional<GURL> app_url = base::nullopt) {
if (!app_url)
app_url = GetAppURL();
WebApplicationInfo web_app_info;
web_app_info.app_url = GetAppURL();
web_app_info.scope = GetAppURL().GetWithoutFilename();
web_app_info.app_url = *app_url;
web_app_info.scope = app_url->GetWithoutFilename();
if (app_theme_color_)
web_app_info.theme_color = *app_theme_color_;
......@@ -51,16 +59,16 @@ class BrowserNonClientFrameViewBrowserTest
browser()->profile(), app);
web_contents_ = app_browser_->tab_strip_model()->GetActiveWebContents();
// Ensure the main page has loaded and is ready for ExecJs DOM manipulation.
ASSERT_TRUE(content::NavigateToURL(web_contents_, GetAppURL()));
ASSERT_TRUE(content::NavigateToURL(web_contents_, *app_url));
BrowserView* browser_view =
BrowserView::GetBrowserViewForBrowser(app_browser_);
app_frame_view_ = browser_view->frame()->GetFrameView();
app_browser_view_ = BrowserView::GetBrowserViewForBrowser(app_browser_);
app_frame_view_ = app_browser_view_->frame()->GetFrameView();
}
protected:
base::Optional<SkColor> app_theme_color_ = SK_ColorBLUE;
Browser* app_browser_ = nullptr;
BrowserView* app_browser_view_ = nullptr;
content::WebContents* web_contents_ = nullptr;
BrowserNonClientFrameView* app_frame_view_ = nullptr;
......@@ -202,3 +210,49 @@ IN_PROC_BROWSER_TEST_F(BrowserNonClientFrameViewBrowserTest,
EXPECT_EQ(app_frame_view_->GetFrameColor(), SK_ColorYELLOW);
DCHECK_NE(*app_theme_color_, SK_ColorYELLOW);
}
class SaveCardOfferObserver
: public autofill::CreditCardSaveManager::ObserverForTest {
public:
explicit SaveCardOfferObserver(content::WebContents* web_contents) {
manager_ = autofill::ContentAutofillDriver::GetForRenderFrameHost(
web_contents->GetMainFrame())
->autofill_manager()
->client()
->GetFormDataImporter()
->credit_card_save_manager_.get();
manager_->SetEventObserverForTesting(this);
}
~SaveCardOfferObserver() override {
manager_->SetEventObserverForTesting(nullptr);
}
// CreditCardSaveManager::ObserverForTest:
void OnOfferLocalSave() override { run_loop_.Quit(); }
void Wait() { run_loop_.Run(); }
private:
autofill::CreditCardSaveManager* manager_ = nullptr;
base::RunLoop run_loop_;
};
// Tests that hosted app frames reflect the theme color set by HTML meta tags.
IN_PROC_BROWSER_TEST_F(BrowserNonClientFrameViewBrowserTest, SaveCardIcon) {
InstallAndLaunchBookmarkApp(embedded_test_server()->GetURL(
"/autofill/credit_card_upload_form_address_and_cc.html"));
ASSERT_TRUE(content::ExecJs(web_contents_, "fill_form.click();"));
content::TestNavigationObserver nav_observer(web_contents_);
SaveCardOfferObserver offer_observer(web_contents_);
ASSERT_TRUE(content::ExecJs(web_contents_, "submit.click();"));
nav_observer.Wait();
offer_observer.Wait();
PageActionIconView* icon =
app_browser_view_->toolbar_button_provider()->GetPageActionIconView(
PageActionIconType::kSaveCard);
EXPECT_TRUE(app_frame_view_->Contains(icon));
EXPECT_TRUE(icon->GetVisible());
}
......@@ -98,6 +98,10 @@ class IconLabelBubbleView : public views::InkDropObserver,
next_element_interior_padding_ = padding;
}
// Reduces the slide duration to 1ms such that animation still follows
// through in the code but is short enough that it is essentially skipped.
void ReduceAnimationTimeForTesting();
protected:
static constexpr int kOpenTimeMS = 150;
......@@ -173,10 +177,6 @@ class IconLabelBubbleView : public views::InkDropObserver,
// currently paused.
bool is_animation_paused() const { return is_animation_paused_; }
// Reduces the slide duration to 1ms such that animation still follows
// through in the code but is short enough that it is essentially skipped.
void ReduceAnimationTimeForTesting();
private:
// Spacing between the image and the label.
int GetInternalSpacing() const;
......
......@@ -270,9 +270,17 @@ void LocationBarView::Init() {
params.types_enabled.push_back(PageActionIconType::kCookieControls);
}
}
// Add icons only when feature is not enabled. Otherwise icons will
// be added to the ToolbarPageActionIconContainerView.
if (!base::FeatureList::IsEnabled(
autofill::features::kAutofillEnableToolbarStatusChip)) {
params.types_enabled.push_back(PageActionIconType::kSaveCard);
params.types_enabled.push_back(PageActionIconType::kLocalCardMigration);
}
params.icon_size = GetLayoutConstant(LOCATION_BAR_ICON_SIZE);
params.icon_color = icon_color;
params.between_icon_spacing = 0;
params.font_list = &font_list;
params.browser = browser_;
params.command_updater = command_updater();
params.page_action_icon_delegate = this;
......@@ -281,22 +289,6 @@ void LocationBarView::Init() {
std::vector<std::unique_ptr<PageActionIconView>> page_action_icons;
if (browser_) {
// Add icons only when feature is not enabled. Otherwise icons will
// be added to the ToolbarPageActionIconContainerView.
if (!base::FeatureList::IsEnabled(
autofill::features::kAutofillEnableToolbarStatusChip)) {
auto save_credit_card_icon_view =
std::make_unique<autofill::SaveCardIconView>(command_updater(), this,
font_list);
save_credit_card_icon_view_ = save_credit_card_icon_view.get();
page_action_icons.push_back(std::move(save_credit_card_icon_view));
auto local_card_migration_icon_view =
std::make_unique<autofill::LocalCardMigrationIconView>(
command_updater(), this, font_list);
local_card_migration_icon_view_ = local_card_migration_icon_view.get();
page_action_icons.push_back(std::move(local_card_migration_icon_view));
}
auto star_view =
std::make_unique<StarView>(command_updater(), browser_, this);
star_view_ = star_view.get();
......@@ -592,10 +584,6 @@ void LocationBarView::Layout() {
if (star_view_)
add_trailing_decoration(star_view_);
add_trailing_decoration(omnibox_page_action_icon_container_view_);
if (save_credit_card_icon_view_)
add_trailing_decoration(save_credit_card_icon_view_);
if (local_card_migration_icon_view_)
add_trailing_decoration(local_card_migration_icon_view_);
for (ContentSettingViews::const_reverse_iterator i(
content_setting_views_.rbegin());
i != content_setting_views_.rend(); ++i) {
......@@ -827,9 +815,7 @@ int LocationBarView::GetMinimumLeadingWidth() const {
int LocationBarView::GetMinimumTrailingWidth() const {
int trailing_width =
IncrementalMinimumWidth(omnibox_page_action_icon_container_view_) +
IncrementalMinimumWidth(star_view_) +
IncrementalMinimumWidth(save_credit_card_icon_view_) +
IncrementalMinimumWidth(local_card_migration_icon_view_);
IncrementalMinimumWidth(star_view_);
for (auto* content_setting_view : content_setting_views_)
trailing_width += IncrementalMinimumWidth(content_setting_view);
......@@ -1037,20 +1023,6 @@ void LocationBarView::UpdateContentSettingsIcons() {
}
}
void LocationBarView::UpdateSaveCreditCardIcon() {
if (save_credit_card_icon_view_->Update()) {
Layout();
SchedulePaint();
}
}
void LocationBarView::UpdateLocalCardMigrationIcon() {
if (local_card_migration_icon_view_->Update()) {
Layout();
SchedulePaint();
}
}
void LocationBarView::UpdateBookmarkStarVisibility() {
if (star_view_) {
star_view_->SetVisible(browser_defaults::bookmarks_enabled &&
......@@ -1279,8 +1251,7 @@ void LocationBarView::OnTouchUiChanged() {
selected_keyword_view_->SetFontList(font_list);
for (ContentSettingImageView* view : content_setting_views_)
view->SetFontList(font_list);
if (save_credit_card_icon_view_)
save_credit_card_icon_view_->SetFontList(font_list);
omnibox_page_action_icon_container_view_->SetFontList(font_list);
location_icon_view_->Update(/*suppress_animations=*/false);
PreferredSizeChanged();
}
......
......@@ -50,11 +50,6 @@ class Profile;
class SelectedKeywordView;
class StarView;
namespace autofill {
class LocalCardMigrationIconView;
class SaveCardIconView;
} // namespace autofill
namespace views {
class ImageButton;
class Label;
......@@ -142,16 +137,6 @@ class LocationBarView : public LocationBar,
// The star. It may not be visible. It will be null when |browser_| is null.
StarView* star_view() { return star_view_; }
// The save credit card icon. It may not be visible. It will be null when
// |browser_| is null.
autofill::SaveCardIconView* save_credit_card_icon_view() {
return save_credit_card_icon_view_;
}
autofill::LocalCardMigrationIconView* local_card_migration_icon_view() {
return local_card_migration_icon_view_;
}
OmniboxPageActionIconContainerView*
omnibox_page_action_icon_container_view() {
return omnibox_page_action_icon_container_view_;
......@@ -305,8 +290,6 @@ class LocationBarView : public LocationBar,
void AcceptInput(base::TimeTicks match_selection_timestamp) override;
void FocusSearch() override;
void UpdateContentSettingsIcons() override;
void UpdateSaveCreditCardIcon() override;
void UpdateLocalCardMigrationIcon() override;
void UpdateBookmarkStarVisibility() override;
void SaveStateToContents(content::WebContents* contents) override;
const OmniboxView* GetOmniboxView() const override;
......@@ -400,13 +383,6 @@ class LocationBarView : public LocationBar,
OmniboxPageActionIconContainerView* omnibox_page_action_icon_container_view_ =
nullptr;
// The save credit card icon. It will be null when |browser_| is null.
autofill::SaveCardIconView* save_credit_card_icon_view_ = nullptr;
// The icon for the local card migration prompt.
autofill::LocalCardMigrationIconView* local_card_migration_icon_view_ =
nullptr;
// The star for bookmarking. It will be null when |browser_| is null.
StarView* star_view_ = nullptr;
......
......@@ -8,6 +8,8 @@
#include "chrome/browser/sharing/click_to_call/click_to_call_ui_controller.h"
#include "chrome/browser/sharing/shared_clipboard/shared_clipboard_ui_controller.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/views/autofill/payments/local_card_migration_icon_view.h"
#include "chrome/browser/ui/views/autofill/payments/save_card_icon_view.h"
#include "chrome/browser/ui/views/location_bar/cookie_controls_icon_view.h"
#include "chrome/browser/ui/views/location_bar/find_bar_icon.h"
#include "chrome/browser/ui/views/location_bar/intent_picker_view.h"
......@@ -119,8 +121,15 @@ OmniboxPageActionIconContainerView::OmniboxPageActionIconContainerView(
page_action_icons_.push_back(shared_clipboard_icon_view_);
break;
case PageActionIconType::kLocalCardMigration:
local_card_migration_icon_view_ =
new autofill::LocalCardMigrationIconView(
params.command_updater, params.page_action_icon_delegate);
page_action_icons_.push_back(local_card_migration_icon_view_);
break;
case PageActionIconType::kSaveCard:
NOTREACHED();
save_card_icon_view_ = new autofill::SaveCardIconView(
params.command_updater, params.page_action_icon_delegate);
page_action_icons_.push_back(save_card_icon_view_);
break;
}
}
......@@ -129,6 +138,7 @@ OmniboxPageActionIconContainerView::OmniboxPageActionIconContainerView(
icon->SetVisible(false);
icon->set_icon_size(params.icon_size);
icon->SetIconColor(params.icon_color);
icon->SetFontList(params.font_list ? *params.font_list : gfx::FontList());
AddChildView(icon);
}
......@@ -171,11 +181,9 @@ PageActionIconView* OmniboxPageActionIconContainerView::GetIconView(
case PageActionIconType::kSharedClipboard:
return shared_clipboard_icon_view_;
case PageActionIconType::kLocalCardMigration:
return local_card_migration_icon_view_;
case PageActionIconType::kSaveCard:
// TODO(https://crbug.com/788051): Merge
// ToolbarPageActionIconContainerView into this class as a generic "any
// page action icon" container.
return nullptr;
return save_card_icon_view_;
}
return nullptr;
}
......@@ -205,6 +213,12 @@ void OmniboxPageActionIconContainerView::SetIconColor(SkColor icon_color) {
icon->SetIconColor(icon_color);
}
void OmniboxPageActionIconContainerView::SetFontList(
const gfx::FontList& font_list) {
for (PageActionIconView* icon : page_action_icons_)
icon->SetFontList(font_list);
}
void OmniboxPageActionIconContainerView::ZoomChangedForActiveTab(
bool can_show_bubble) {
if (zoom_view_)
......
......@@ -28,6 +28,11 @@ class SharingIconView;
class TranslateIconView;
class ZoomView;
namespace autofill {
class LocalCardMigrationIconView;
class SaveCardIconView;
} // namespace autofill
namespace send_tab_to_self {
class SendTabToSelfIconView;
}
......@@ -44,6 +49,7 @@ class OmniboxPageActionIconContainerView
int icon_size = 0;
SkColor icon_color = gfx::kPlaceholderColor;
int between_icon_spacing = 0;
const gfx::FontList* font_list = nullptr;
Browser* browser = nullptr;
CommandUpdater* command_updater = nullptr;
PageActionIconView::Delegate* page_action_icon_delegate = nullptr;
......@@ -64,9 +70,12 @@ class OmniboxPageActionIconContainerView
// whether any icons were activated.
bool ActivateFirstInactiveBubbleForAccessibility();
// Update the icons color.
// Update the icons' color.
void SetIconColor(SkColor icon_color);
// Update the icons' fonts.
void SetFontList(const gfx::FontList& font_list);
// See comment in browser_window.h for more info.
void ZoomChangedForActiveTab(bool can_show_bubble);
......@@ -92,6 +101,10 @@ class OmniboxPageActionIconContainerView
ReaderModeIconView* reader_mode_icon_ = nullptr;
SharingIconView* click_to_call_icon_view_ = nullptr;
SharingIconView* shared_clipboard_icon_view_ = nullptr;
autofill::LocalCardMigrationIconView* local_card_migration_icon_view_ =
nullptr;
autofill::SaveCardIconView* save_card_icon_view_ = nullptr;
std::vector<PageActionIconView*> page_action_icons_;
ScopedObserver<zoom::ZoomEventManager, zoom::ZoomEventManagerObserver>
......
......@@ -28,23 +28,20 @@ ToolbarPageActionIconContainerView::ToolbarPageActionIconContainerView(
page_action_icons_.push_back(manage_passwords_icon_views_);
local_card_migration_icon_view_ = new autofill::LocalCardMigrationIconView(
browser->command_controller(), this,
// TODO(crbug.com/932818): The font list and the icon color may not be
// what we want here. Put placeholders for now.
views::style::GetFont(CONTEXT_TOOLBAR_BUTTON,
views::style::STYLE_PRIMARY));
browser->command_controller(), this);
page_action_icons_.push_back(local_card_migration_icon_view_);
save_card_icon_view_ = new autofill::SaveCardIconView(
browser->command_controller(), this,
// TODO(crbug.com/932818): The font list and the icon color may not be
// what we want here. Put placeholders for now.
views::style::GetFont(CONTEXT_TOOLBAR_BUTTON,
views::style::STYLE_PRIMARY));
save_card_icon_view_ =
new autofill::SaveCardIconView(browser->command_controller(), this);
page_action_icons_.push_back(save_card_icon_view_);
// TODO(crbug.com/932818): The font list and the icon color may not be
// what we want here. Put placeholders for now.
const gfx::FontList& font_list = views::style::GetFont(
CONTEXT_TOOLBAR_BUTTON, views::style::STYLE_PRIMARY);
for (PageActionIconView* icon_view : page_action_icons_) {
icon_view->SetVisible(false);
icon_view->SetFontList(font_list);
icon_view->AddButtonObserver(this);
icon_view->views::View::AddObserver(this);
AddChildView(icon_view);
......
......@@ -34,8 +34,6 @@
#include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/browser/ui/ui_features.h"
#include "chrome/browser/ui/view_ids.h"
#include "chrome/browser/ui/views/autofill/payments/local_card_migration_icon_view.h"
#include "chrome/browser/ui/views/autofill/payments/save_card_icon_view.h"
#include "chrome/browser/ui/views/bookmarks/bookmark_bubble_view.h"
#include "chrome/browser/ui/views/extensions/extension_popup.h"
#include "chrome/browser/ui/views/extensions/extensions_toolbar_button.h"
......@@ -821,17 +819,9 @@ PageActionIconView* ToolbarView::GetPageActionIconView(
type);
if (icon)
return icon;
if (toolbar_page_action_container_)
icon = toolbar_page_action_container_->GetIconView(type);
if (icon)
return icon;
// TODO(https://crbug.com/788051): Migrate remaining page action icons out of
// LocationBarView.
if (type == PageActionIconType::kSaveCard)
return location_bar_->save_credit_card_icon_view();
if (type == PageActionIconType::kLocalCardMigration)
return location_bar_->local_card_migration_icon_view();
return nullptr;
return toolbar_page_action_container_
? toolbar_page_action_container_->GetIconView(type)
: nullptr;
}
AppMenuButton* ToolbarView::GetAppMenuButton() {
......
......@@ -229,6 +229,8 @@ WebAppFrameToolbarView::WebAppFrameToolbarView(views::Widget* widget,
params.types_enabled.push_back(PageActionIconType::kNativeFileSystemAccess);
if (base::FeatureList::IsEnabled(content_settings::kImprovedCookieControls))
params.types_enabled.push_back(PageActionIconType::kCookieControls);
params.types_enabled.push_back(PageActionIconType::kLocalCardMigration);
params.types_enabled.push_back(PageActionIconType::kSaveCard);
params.icon_size = GetLayoutConstant(WEB_APP_PAGE_ACTION_ICON_SIZE);
params.icon_color = GetCaptionColor();
params.between_icon_spacing = HorizontalPaddingBetweenItems();
......
......@@ -208,8 +208,6 @@ class TestBrowserWindow : public BrowserWindow {
void FocusLocation(bool select_all) override {}
void FocusSearch() override {}
void UpdateContentSettingsIcons() override {}
void UpdateSaveCreditCardIcon() override {}
void UpdateLocalCardMigrationIcon() override {}
void UpdateBookmarkStarVisibility() override {}
void SaveStateToContents(content::WebContents* contents) override {}
void Revert() override {}
......
......@@ -19,6 +19,8 @@
#include "components/autofill/core/browser/payments/payments_client.h"
#include "components/autofill/core/browser/personal_data_manager.h"
class SaveCardOfferObserver;
namespace autofill {
// Manages logic for importing address profiles and credit card information from
......@@ -155,6 +157,7 @@ class FormDataImporter {
friend class LocalCardMigrationBrowserTest;
friend class SaveCardBubbleViewsFullFormBrowserTest;
friend class SaveCardInfobarEGTestHelper;
friend class ::SaveCardOfferObserver;
FRIEND_TEST_ALL_PREFIXES(AutofillMergeTest, MergeProfiles);
FRIEND_TEST_ALL_PREFIXES(FormDataImporterTest,
AllowDuplicateMaskedServerCardIfFlagEnabled);
......
......@@ -25,6 +25,8 @@
#include "components/autofill/core/browser/personal_data_manager.h"
#include "url/origin.h"
class SaveCardOfferObserver;
namespace autofill {
// Manages logic for determining whether upload credit card save to Google
......@@ -80,12 +82,13 @@ class CreditCardSaveManager {
// particular actions occur.
class ObserverForTest {
public:
virtual void OnOfferLocalSave() = 0;
virtual void OnDecideToRequestUploadSave() = 0;
virtual void OnReceivedGetUploadDetailsResponse() = 0;
virtual void OnSentUploadCardRequest() = 0;
virtual void OnReceivedUploadCardResponse() = 0;
virtual void OnStrikeChangeComplete() = 0;
virtual ~ObserverForTest() {}
virtual void OnOfferLocalSave() {}
virtual void OnDecideToRequestUploadSave() {}
virtual void OnReceivedGetUploadDetailsResponse() {}
virtual void OnSentUploadCardRequest() {}
virtual void OnReceivedUploadCardResponse() {}
virtual void OnStrikeChangeComplete() {}
};
// The parameters should outlive the CreditCardSaveManager.
......@@ -139,6 +142,7 @@ class CreditCardSaveManager {
friend class TestCreditCardSaveManager;
friend class SaveCardBubbleViewsFullFormBrowserTest;
friend class SaveCardInfobarEGTestHelper;
friend class ::SaveCardOfferObserver;
FRIEND_TEST_ALL_PREFIXES(SaveCardBubbleViewsFullFormBrowserTest,
StrikeDatabase_Local_FullFlowTest);
FRIEND_TEST_ALL_PREFIXES(SaveCardBubbleViewsFullFormBrowserTest,
......
......@@ -38,7 +38,7 @@ class CreditCardSaveManagerTestObserverBridge
explicit CreditCardSaveManagerTestObserverBridge(
CreditCardSaveManager* credit_card_save_manager,
id<CreditCardSaveManagerTestObserver> observer);
virtual ~CreditCardSaveManagerTestObserverBridge() = default;
~CreditCardSaveManagerTestObserverBridge() override = default;
// CreditCardSaveManager::ObserverForTest:
void OnOfferLocalSave() override;
......
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