1dc0f95d653279beabeb9817299e2902918ba123eKristian 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_WEBDATA_AUTOFILL_CHANGE_H__ 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define CHROME_BROWSER_WEBDATA_AUTOFILL_CHANGE_H__ 73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/webdata/autofill_entry.h" 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass AutofillProfile; 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass CreditCard; 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// For classic Autofill form fields, the KeyType is AutofillKey. 15ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Autofill++ types such as AutofillProfile and CreditCard simply use an int. 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtemplate <typename KeyType> 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass GenericAutofillChange { 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch typedef enum { 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ADD, 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch UPDATE, 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch REMOVE 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } Type; 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual ~GenericAutofillChange() {} 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Type type() const { return type_; } 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const KeyType& key() const { return key_; } 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch protected: 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GenericAutofillChange(Type type, const KeyType& key) 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch : type_(type), 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch key_(key) {} 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Type type_; 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch KeyType key_; 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass AutofillChange : public GenericAutofillChange<AutofillKey> { 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 41513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch AutofillChange(Type type, const AutofillKey& key); 42513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual ~AutofillChange(); 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool operator==(const AutofillChange& change) const { 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return type() == change.type() && key() == change.key(); 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 48ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Change notification details for Autofill profile changes. 49dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenclass AutofillProfileChange : public GenericAutofillChange<std::string> { 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 51513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // The |type| input specifies the change type. The |key| input is the key, 52dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // which is expected to be the GUID identifying the |profile|. 53513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // When |type| == ADD, |profile| should be non-NULL. 54513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // When |type| == UPDATE, |profile| should be non-NULL. 55513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // When |type| == REMOVE, |profile| should be NULL. 56513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch AutofillProfileChange(Type type, 57dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen std::string key, 58ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const AutofillProfile* profile); 59513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual ~AutofillProfileChange(); 60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 61ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const AutofillProfile* profile() const { return profile_; } 62513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch bool operator==(const AutofillProfileChange& change) const; 63513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 65513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Weak reference, can be NULL. 66ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const AutofillProfile* profile_; 67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 69ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Change notification details for Autofill credit card changes. 70dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenclass AutofillCreditCardChange : public GenericAutofillChange<std::string> { 71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 72513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // The |type| input specifies the change type. The |key| input is the key, 73dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // which is expected to be the GUID identifying the |credit_card|. 74513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // When |type| == ADD, |credit_card| should be non-NULL. 75513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // When |type| == UPDATE, |credit_card| should be non-NULL. 76513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // When |type| == REMOVE, |credit_card| should be NULL. 77513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch AutofillCreditCardChange(Type type, 78dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen std::string key, 79513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch const CreditCard* credit_card); 80513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual ~AutofillCreditCardChange(); 81c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 82c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const CreditCard* credit_card() const { return credit_card_; } 83513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch bool operator==(const AutofillCreditCardChange& change) const; 84513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 85513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch private: 86513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Weak reference, can be NULL. 87513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch const CreditCard* credit_card_; 88513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch}; 89513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 90c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif // CHROME_BROWSER_WEBDATA_AUTOFILL_CHANGE_H__ 91