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