blob: 6476088a7f6a0015cb561059492944e147c824dc [file] [log] [blame]
// Copyright 2015 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/views/autofill/save_card_icon_view.h"
#include "chrome/app/chrome_command_ids.h"
#include "chrome/app/vector_icons/vector_icons.h"
#include "chrome/browser/ui/autofill/save_card_bubble_controller_impl.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/save_card_bubble_views.h"
#include "chrome/browser/ui/views/location_bar/bubble_icon_view.h"
#include "chrome/grit/generated_resources.h"
#include "ui/base/l10n/l10n_util.h"
namespace autofill {
SaveCardIconView::SaveCardIconView(CommandUpdater* command_updater,
Browser* browser,
BubbleIconView::Delegate* delegate)
: BubbleIconView(command_updater, IDC_SAVE_CREDIT_CARD_FOR_PAGE, delegate),
browser_(browser) {
DCHECK(delegate);
set_id(VIEW_ID_SAVE_CREDIT_CARD_BUTTON);
SetTooltipText(l10n_util::GetStringUTF16(IDS_TOOLTIP_SAVE_CREDIT_CARD));
}
SaveCardIconView::~SaveCardIconView() {}
views::BubbleDialogDelegateView* SaveCardIconView::GetBubble() const {
SaveCardBubbleControllerImpl* controller = GetController();
if (!controller)
return nullptr;
return static_cast<autofill::SaveCardBubbleViews*>(
controller->save_card_bubble_view());
}
bool SaveCardIconView::Refresh() {
if (!GetWebContents())
return false;
const bool was_visible = visible();
// |controller| may be nullptr due to lazy initialization.
SaveCardBubbleControllerImpl* controller = GetController();
bool enabled = controller && controller->IsIconVisible();
enabled &= SetCommandEnabled(enabled);
SetVisible(enabled);
return was_visible != visible();
}
void SaveCardIconView::OnExecuting(
BubbleIconView::ExecuteSource execute_source) {}
const gfx::VectorIcon& SaveCardIconView::GetVectorIcon() const {
return kCreditCardIcon;
}
SaveCardBubbleControllerImpl* SaveCardIconView::GetController() const {
if (!browser_)
return nullptr;
content::WebContents* web_contents = GetWebContents();
if (!web_contents)
return nullptr;
return autofill::SaveCardBubbleControllerImpl::FromWebContents(web_contents);
}
} // namespace autofill