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