Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(82)

Unified Diff: chrome/browser/autofill/autocheckout_infobar_delegate.cc

Issue 11539003: Pop up requestAutocomplete UI when autofill server hints chrome client that it is in a multipage au… (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Resolve with AutofillDialogController refactoring. Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/autofill/autocheckout_infobar_delegate.cc
diff --git a/chrome/browser/autofill/autocheckout_infobar_delegate.cc b/chrome/browser/autofill/autocheckout_infobar_delegate.cc
new file mode 100644
index 0000000000000000000000000000000000000000..b23b2e0a937e12a7dbd9945cee77df972c1c1cc2
--- /dev/null
+++ b/chrome/browser/autofill/autocheckout_infobar_delegate.cc
@@ -0,0 +1,118 @@
+// Copyright (c) 2013 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/autofill/autocheckout_infobar_delegate.h"
+
+#include "base/logging.h"
+#include "base/utf_string_conversions.h"
+#include "chrome/browser/api/infobars/infobar_service.h"
+#include "chrome/browser/autofill/autocheckout_manager.h"
+#include "chrome/common/url_constants.h"
+#include "content/public/browser/page_navigator.h"
+#include "content/public/browser/web_contents.h"
+#include "content/public/browser/web_contents_delegate.h"
+#include "grit/generated_resources.h"
+#include "grit/theme_resources.h"
+#include "ui/base/l10n/l10n_util.h"
+#include "ui/base/resource/resource_bundle.h"
+
+// static
+void AutocheckoutInfoBarDelegate::Create(
+ const AutofillMetrics& metric_logger,
+ const GURL& source_url,
+ const content::SSLStatus& ssl_status,
+ AutocheckoutManager* autocheckout_manager,
+ InfoBarService* infobar_service) {
+ infobar_service->AddInfoBar(scoped_ptr<InfoBarDelegate>(
+ new AutocheckoutInfoBarDelegate(metric_logger, source_url, ssl_status,
+ autocheckout_manager, infobar_service)));
+}
+
+AutocheckoutInfoBarDelegate::AutocheckoutInfoBarDelegate(
+ const AutofillMetrics& metric_logger,
+ const GURL& source_url,
+ const content::SSLStatus& ssl_status,
+ AutocheckoutManager* autocheckout_manager,
+ InfoBarService* infobar_service)
+ : ConfirmInfoBarDelegate(infobar_service),
+ metric_logger_(metric_logger),
+ autocheckout_manager_(autocheckout_manager),
+ source_url_(source_url),
+ ssl_status_(ssl_status),
+ had_user_interaction_(false) {
+ metric_logger_.LogAutocheckoutInfoBarMetric(AutofillMetrics::INFOBAR_SHOWN);
+}
+
+AutocheckoutInfoBarDelegate::~AutocheckoutInfoBarDelegate() {
+ if (!had_user_interaction_)
+ LogUserAction(AutofillMetrics::INFOBAR_IGNORED);
+}
+
+void AutocheckoutInfoBarDelegate::LogUserAction(
+ AutofillMetrics::InfoBarMetric user_action) {
+ DCHECK(!had_user_interaction_);
+ metric_logger_.LogAutocheckoutInfoBarMetric(user_action);
+ had_user_interaction_ = true;
+}
+
+void AutocheckoutInfoBarDelegate::InfoBarDismissed() {
+ LogUserAction(AutofillMetrics::INFOBAR_DENIED);
+}
+
+gfx::Image* AutocheckoutInfoBarDelegate::GetIcon() const {
+ return &ResourceBundle::GetSharedInstance().GetNativeImageNamed(
+ IDR_INFOBAR_AUTOFILL);
+}
+
+InfoBarDelegate::Type AutocheckoutInfoBarDelegate::GetInfoBarType() const {
+ return PAGE_ACTION_TYPE;
+}
+
+bool AutocheckoutInfoBarDelegate::ShouldExpireInternal(
+ const content::LoadCommittedDetails& details) const {
+ // The user has submitted a form, causing the page to navigate elsewhere. We
+ // want the infobar to be expired at this point, because the user has
+ // potentially started the checkout flow manually.
+ return true;
+}
+
+
+string16 AutocheckoutInfoBarDelegate::GetMessageText() const {
+ return l10n_util::GetStringUTF16(IDS_AUTOFILL_FLOW_INFOBAR_TEXT);
+}
+
+string16 AutocheckoutInfoBarDelegate::GetButtonLabel(
+ InfoBarButton button) const {
+ return l10n_util::GetStringUTF16((button == BUTTON_OK) ?
+ IDS_AUTOFILL_FLOW_INFOBAR_ACCEPT : IDS_AUTOFILL_FLOW_INFOBAR_DENY);
+}
+
+bool AutocheckoutInfoBarDelegate::Accept() {
+ LogUserAction(AutofillMetrics::INFOBAR_ACCEPTED);
+ autocheckout_manager_->ShowAutocheckoutDialog(source_url_, ssl_status_);
+ return true;
+}
+
+bool AutocheckoutInfoBarDelegate::Cancel() {
+ LogUserAction(AutofillMetrics::INFOBAR_DENIED);
+ return true;
+}
+
+string16 AutocheckoutInfoBarDelegate::GetLinkText() const {
+ return l10n_util::GetStringUTF16(IDS_LEARN_MORE);
+}
+
+bool AutocheckoutInfoBarDelegate::LinkClicked(
+ WindowOpenDisposition disposition) {
+ // TODO(ramankk): Fix the help URL when we have one.
+ owner()->GetWebContents()->GetDelegate()->OpenURLFromTab(
+ owner()->GetWebContents(),
+ content::OpenURLParams(GURL(chrome::kAutofillHelpURL),
+ content::Referrer(),
+ NEW_FOREGROUND_TAB,
+ content::PAGE_TRANSITION_LINK,
+ false));
+ return false;
+}
+
« no previous file with comments | « chrome/browser/autofill/autocheckout_infobar_delegate.h ('k') | chrome/browser/autofill/autocheckout_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698