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

Unified Diff: chrome/browser/autofill/personal_data_manager.h

Issue 545175: Add the ability to save and remove AutoFill profiles from the AutoFillDialog.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 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
« no previous file with comments | « chrome/browser/autofill/autofill_profile.cc ('k') | chrome/browser/autofill/personal_data_manager.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/autofill/personal_data_manager.h
===================================================================
--- chrome/browser/autofill/personal_data_manager.h (revision 36778)
+++ chrome/browser/autofill/personal_data_manager.h (working copy)
@@ -14,17 +14,41 @@
#include "chrome/browser/autofill/autofill_profile.h"
#include "chrome/browser/autofill/credit_card.h"
#include "chrome/browser/autofill/field_types.h"
+#include "chrome/browser/webdata/web_data_service.h"
class AutoFillManager;
class FormStructure;
+class Profile;
// Handles loading and saving AutoFill profile information to the web database.
// This class also stores the profiles loaded from the database for use during
// AutoFill.
-class PersonalDataManager {
+class PersonalDataManager : public WebDataServiceConsumer {
public:
+ // An interface observers implement to receive notifications from the
+ // PersonalDataManager. Register the observer via
+ // PersonalDataManager::SetObserver.
+ class Observer {
+ public:
+ // Notifies the observer that the PersonalDataManager has finished loading.
+ virtual void OnPersonalDataLoaded() = 0;
+
+ protected:
+ virtual ~Observer() {}
+ };
+
virtual ~PersonalDataManager();
+ // WebDataServiceConsumer implementation:
+ virtual void OnWebDataServiceRequestDone(WebDataService::Handle h,
+ const WDTypedResult* result);
+
+ // Sets the listener to be notified of PersonalDataManager events.
+ void SetObserver(PersonalDataManager::Observer* observer);
+
+ // Removes |observer| as the observer of this PersonalDataManager.
+ void RemoveObserver(PersonalDataManager::Observer* observer);
+
// If AutoFill is able to determine the field types of a significant number
// of field types that contain information in the FormStructures and the user
// has not previously been prompted, the user will be asked if he would like
@@ -33,6 +57,10 @@
bool ImportFormData(const std::vector<FormStructure*>& form_structures,
AutoFillManager* autofill_manager);
+ // Sets |profiles_| to the contents of |profiles| and updates the web database
+ // by adding, updating and removing profiles.
+ void SetProfiles(std::vector<AutoFillProfile>* profiles);
+
// Gets the possible field types for the given text, determined by matching
// the text with all known personal information and returning matching types.
void GetPossibleFieldTypes(const string16& text,
@@ -41,19 +69,31 @@
// Returns true if the credit card information is stored with a password.
bool HasPassword();
+ // Returns whether the personal data has been loaded from the web database.
+ bool IsDataLoaded() const { return is_data_loaded_; }
+
+ // This PersonalDataManager owns these profiles. Their lifetime is until the
+ // web database is updated with new profile information.
+ const std::vector<AutoFillProfile*>& profiles() { return profiles_.get(); }
+
private:
- // Make sure that only Profile can create an instance of PersonalDataManager.
+ // Make sure that only Profile and the PersonalDataManager tests can create an
+ // instance of PersonalDataManager.
friend class ProfileImpl;
+ friend class PersonalDataManagerTest;
- PersonalDataManager();
+ explicit PersonalDataManager(Profile* profile);
+ // Returns the profile of the tab contents.
+ Profile* profile();
+
// Initializes the object if needed. This should be called at the beginning
// of all the public functions to make sure that the object has been properly
// initialized before use.
void InitializeIfNeeded();
- // This will create and reserve a new unique id for a profile.
- int CreateNextUniqueId();
+ // This will create and reserve a new unique ID for a profile.
+ int CreateNextUniqueID();
// Parses value to extract the components of a phone number and adds them to
// profile.
@@ -65,14 +105,26 @@
AutoFillFieldType city_code,
AutoFillFieldType country_code) const;
+ // Loads the saved profiles from the web database.
+ void LoadProfiles();
+
+ // Cancels a pending query to the web database.
+ void CancelPendingQuery();
+
+ // The profile hosting this PersonalDataManager.
+ Profile* profile_;
+
// True if PersonalDataManager is initialized.
bool is_initialized_;
+ // True if personal data has been loaded from the web database.
+ bool is_data_loaded_;
+
// The set of already created unique IDs, used to create a new unique ID.
std::set<int> unique_ids_;
// The loaded profiles.
- ScopedVector<FormGroup> profiles_;
+ ScopedVector<AutoFillProfile> profiles_;
// The loaded credit cards.
ScopedVector<FormGroup> credit_cards_;
@@ -86,6 +138,16 @@
// The hash of the password used to store the credit card. This is empty if
// no password exists.
string16 password_hash_;
+
+ // When the manager makes a request from WebDataService, the database
+ // is queried on another thread, we record the query handle until we
+ // get called back.
+ WebDataService::Handle pending_query_handle_;
+
+ // The observer. This can be NULL.
+ Observer* observer_;
+
+ DISALLOW_COPY_AND_ASSIGN(PersonalDataManager);
};
#endif // CHROME_BROWSER_AUTOFILL_PERSONAL_DATA_MANAGER_H_
« no previous file with comments | « chrome/browser/autofill/autofill_profile.cc ('k') | chrome/browser/autofill/personal_data_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698