172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file.
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#ifndef CHROME_BROWSER_AUTOFILL_AUTOFILL_CC_INFOBAR_DELEGATE_H_
6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define CHROME_BROWSER_AUTOFILL_AUTOFILL_CC_INFOBAR_DELEGATE_H_
73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/basictypes.h"
10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/gtest_prod_util.h"
11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/scoped_ptr.h"
123345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "base/string16.h"
13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/autofill/autofill_metrics.h"
14dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/browser/tab_contents/confirm_infobar_delegate.h"
15ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "content/browser/tab_contents/navigation_controller.h"
16ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "webkit/glue/window_open_disposition.h"
17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass CreditCard;
19ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass PersonalDataManager;
20ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass SkBitmap;
21ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass TabContents;
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// An InfoBar delegate that enables the user to allow or deny storing credit
24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// card information gathered from a form submission.
25ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass AutofillCCInfoBarDelegate : public ConfirmInfoBarDelegate {
26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public:
27ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  AutofillCCInfoBarDelegate(TabContents* tab_contents,
28ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                            const CreditCard* credit_card,
29ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                            PersonalDataManager* personal_data,
30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                            const AutofillMetrics* metric_logger);
3172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
3272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen private:
33ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual ~AutofillCCInfoBarDelegate();
34ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
35ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  void LogUserAction(AutofillMetrics::CreditCardInfoBarMetric user_action);
36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
3772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  // ConfirmInfoBarDelegate:
38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual bool ShouldExpire(
3972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      const NavigationController::LoadCommittedDetails& details) const;
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void InfoBarClosed();
41ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual void InfoBarDismissed();
42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual SkBitmap* GetIcon() const;
4372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  virtual Type GetInfoBarType() const;
4472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  virtual string16 GetMessageText() const;
4572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  virtual string16 GetButtonLabel(InfoBarButton button) const;
46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual bool Accept();
47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual bool Cancel();
483345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  virtual string16 GetLinkText();
49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual bool LinkClicked(WindowOpenDisposition disposition);
50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
51ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // The credit card that should be saved if the user accepts the infobar.
52ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  scoped_ptr<const CreditCard> credit_card_;
53ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
54ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // The personal data manager to which the credit card should be saved.
55ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Weak reference.
56ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  PersonalDataManager* personal_data_;
57ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
58ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // For logging UMA metrics.
59ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Weak reference. Owned by the AutofillManager that initiated this infobar.
60ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  const AutofillMetrics* metric_logger_;
61ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
62ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Did the user ever explicitly accept or dismiss this infobar?
63ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  bool had_user_interaction_;
64ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
65ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  FRIEND_TEST_ALL_PREFIXES(AutofillMetricsTest, CreditCardInfoBar);
66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
67ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  DISALLOW_COPY_AND_ASSIGN(AutofillCCInfoBarDelegate);
68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif  // CHROME_BROWSER_AUTOFILL_AUTOFILL_CC_INFOBAR_DELEGATE_H_
71