Index: chrome/browser/autofill/autofill_manager.h |
diff --git a/chrome/browser/autofill/autofill_manager.h b/chrome/browser/autofill/autofill_manager.h |
deleted file mode 100644 |
index 02754c392665ae108c06ccf408e9a83f0e2f0c33..0000000000000000000000000000000000000000 |
--- a/chrome/browser/autofill/autofill_manager.h |
+++ /dev/null |
@@ -1,442 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#ifndef CHROME_BROWSER_AUTOFILL_AUTOFILL_MANAGER_H_ |
-#define CHROME_BROWSER_AUTOFILL_AUTOFILL_MANAGER_H_ |
- |
-#include <list> |
-#include <map> |
-#include <string> |
-#include <vector> |
- |
-#include "base/basictypes.h" |
-#include "base/callback_forward.h" |
-#include "base/compiler_specific.h" |
-#include "base/gtest_prod_util.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "base/memory/scoped_vector.h" |
-#include "base/memory/weak_ptr.h" |
-#include "base/prefs/public/pref_change_registrar.h" |
-#include "base/string16.h" |
-#include "base/supports_user_data.h" |
-#include "base/time.h" |
-#include "chrome/browser/autofill/autocheckout_manager.h" |
-#include "chrome/browser/autofill/autocomplete_history_manager.h" |
-#include "chrome/browser/autofill/autofill_download.h" |
-#include "chrome/browser/autofill/autofill_manager_delegate.h" |
-#include "chrome/browser/autofill/field_types.h" |
-#include "chrome/browser/autofill/form_structure.h" |
-#include "chrome/browser/autofill/personal_data_manager.h" |
-#include "components/autofill/common/autocheckout_status.h" |
-#include "components/autofill/common/form_data.h" |
-#include "content/public/browser/web_contents_observer.h" |
-#include "content/public/common/ssl_status.h" |
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebFormElement.h" |
- |
-class AutofillExternalDelegate; |
-class AutofillField; |
-class AutofillProfile; |
-class AutofillMetrics; |
-class CreditCard; |
-class FormGroup; |
-class GURL; |
-class PrefRegistrySyncable; |
-class ProfileSyncService; |
- |
-struct FormData; |
-struct FormFieldData; |
-struct PasswordFormFillData; |
-struct ViewHostMsg_FrameNavigate_Params; |
- |
-namespace autofill { |
-class AutofillManagerDelegate; |
-class PasswordGenerator; |
-} |
- |
-namespace content { |
-class RenderViewHost; |
-class WebContents; |
- |
-struct PasswordForm; |
-} |
- |
-namespace gfx { |
-class Rect; |
-class RectF; |
-} |
- |
-namespace IPC { |
-class Message; |
-} |
- |
-// Manages saving and restoring the user's personal information entered into web |
-// forms. |
-class AutofillManager : public content::WebContentsObserver, |
- public AutofillDownloadManager::Observer, |
- public base::SupportsUserData::Data { |
- public: |
- static void CreateForWebContentsAndDelegate( |
- content::WebContents* contents, |
- autofill::AutofillManagerDelegate* delegate); |
- static AutofillManager* FromWebContents(content::WebContents* contents); |
- |
- // Registers our Enable/Disable Autofill pref. |
- static void RegisterUserPrefs(PrefRegistrySyncable* registry); |
- |
- // Set an external delegate. |
- void SetExternalDelegate(AutofillExternalDelegate* delegate); |
- |
- // Whether browser process will create and own the Autofill popup UI. |
- bool IsNativeUiEnabled(); |
- |
- // Called from our external delegate so they cannot be private. |
- virtual void OnFillAutofillFormData(int query_id, |
- const FormData& form, |
- const FormFieldData& field, |
- int unique_id); |
- void OnDidShowAutofillSuggestions(bool is_new_popup); |
- void OnDidFillAutofillFormData(const base::TimeTicks& timestamp); |
- void OnShowAutofillDialog(); |
- void OnDidPreviewAutofillFormData(); |
- void OnShowPasswordGenerationPopup(const gfx::Rect& bounds, |
- int max_length, |
- const content::PasswordForm& form); |
- |
- // Remove the credit card or Autofill profile that matches |unique_id| |
- // from the database. |
- void RemoveAutofillProfileOrCreditCard(int unique_id); |
- |
- // Remove the specified Autocomplete entry. |
- void RemoveAutocompleteEntry(const string16& name, const string16& value); |
- |
- // Returns the present web_contents state. |
- content::WebContents* GetWebContents() const; |
- |
- // Returns the present form structures seen by Autofill manager. |
- const std::vector<FormStructure*>& GetFormStructures(); |
- |
- // Causes the dialog for request autocomplete feature to be shown. |
- virtual void ShowRequestAutocompleteDialog( |
- const FormData& form, |
- const GURL& source_url, |
- const content::SSLStatus& ssl_status, |
- autofill::DialogType dialog_type, |
- const base::Callback<void(const FormStructure*)>& callback); |
- |
- // Happens when the autocomplete dialog runs its callback when being closed. |
- void RequestAutocompleteDialogClosed(); |
- |
- autofill::AutofillManagerDelegate* delegate() const { |
- return manager_delegate_; |
- } |
- |
- protected: |
- // Only test code should subclass AutofillManager. |
- AutofillManager(content::WebContents* web_contents, |
- autofill::AutofillManagerDelegate* delegate); |
- virtual ~AutofillManager(); |
- |
- // Test code should prefer to use this constructor. |
- AutofillManager(content::WebContents* web_contents, |
- autofill::AutofillManagerDelegate* delegate, |
- PersonalDataManager* personal_data); |
- |
- // Returns the value of the AutofillEnabled pref. |
- virtual bool IsAutofillEnabled() const; |
- |
- // Uploads the form data to the Autofill server. |
- virtual void UploadFormData(const FormStructure& submitted_form); |
- |
- // Reset cache. |
- void Reset(); |
- |
- // Informs the renderer of the current password generation state. This is a |
- // separate function to aid with testing. |
- virtual void SendPasswordGenerationStateToRenderer( |
- content::RenderViewHost* host, |
- bool enabled); |
- |
- // Logs quality metrics for the |submitted_form| and uploads the form data |
- // to the crowdsourcing server, if appropriate. |
- virtual void UploadFormDataAsyncCallback( |
- const FormStructure* submitted_form, |
- const base::TimeTicks& load_time, |
- const base::TimeTicks& interaction_time, |
- const base::TimeTicks& submission_time); |
- |
- // Maps GUIDs to and from IDs that are used to identify profiles and credit |
- // cards sent to and from the renderer process. |
- virtual int GUIDToID(const PersonalDataManager::GUIDPair& guid) const; |
- virtual const PersonalDataManager::GUIDPair IDToGUID(int id) const; |
- |
- // Methods for packing and unpacking credit card and profile IDs for sending |
- // and receiving to and from the renderer process. |
- int PackGUIDs(const PersonalDataManager::GUIDPair& cc_guid, |
- const PersonalDataManager::GUIDPair& profile_guid) const; |
- void UnpackGUIDs(int id, |
- PersonalDataManager::GUIDPair* cc_guid, |
- PersonalDataManager::GUIDPair* profile_guid) const; |
- |
- const AutofillMetrics* metric_logger() const { return metric_logger_.get(); } |
- void set_metric_logger(const AutofillMetrics* metric_logger); |
- |
- ScopedVector<FormStructure>* form_structures() { return &form_structures_; } |
- |
- // Exposed for testing. |
- AutofillExternalDelegate* external_delegate() { |
- return external_delegate_; |
- } |
- |
- // Exposed for testing. |
- autofill::AutocheckoutManager* autocheckout_manager() { |
- return &autocheckout_manager_; |
- } |
- |
- // Processes the submitted |form|, saving any new Autofill data and uploading |
- // the possible field types for the submitted fields to the crowdsouring |
- // server. Returns false if this form is not relevant for Autofill. |
- bool OnFormSubmitted(const FormData& form, |
- const base::TimeTicks& timestamp); |
- |
- // Tell the renderer the current interactive autocomplete finished. |
- virtual void ReturnAutocompleteResult( |
- WebKit::WebFormElement::AutocompleteResult result, |
- const FormData& form_data); |
- |
- private: |
- // content::WebContentsObserver: |
- virtual void RenderViewCreated(content::RenderViewHost* host) OVERRIDE; |
- virtual void DidNavigateMainFrame( |
- const content::LoadCommittedDetails& details, |
- const content::FrameNavigateParams& params) OVERRIDE; |
- virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; |
- virtual void WebContentsDestroyed( |
- content::WebContents* web_contents) OVERRIDE; |
- |
- // AutofillDownloadManager::Observer: |
- virtual void OnLoadedServerPredictions( |
- const std::string& response_xml) OVERRIDE; |
- |
- void OnSyncStateChanged(); |
- |
- // Register as an observer with the sync service. |
- void RegisterWithSyncService(); |
- |
- // Called when password generation preference state changes. |
- void OnPasswordGenerationEnabledChanged(); |
- |
- // Determines what the current state of password generation is, and if it has |
- // changed from |password_generation_enabled_|. If it has changed or if |
- // |new_renderer| is true, it notifies the renderer of this change via |
- // SendPasswordGenerationStateToRenderer. |
- void UpdatePasswordGenerationState(content::RenderViewHost* host, |
- bool new_renderer); |
- |
- void OnFormsSeen(const std::vector<FormData>& forms, |
- const base::TimeTicks& timestamp); |
- void OnTextFieldDidChange(const FormData& form, |
- const FormFieldData& field, |
- const base::TimeTicks& timestamp); |
- |
- // The |bounding_box| is a window relative value. |
- void OnQueryFormFieldAutofill(int query_id, |
- const FormData& form, |
- const FormFieldData& field, |
- const gfx::RectF& bounding_box, |
- bool display_warning); |
- void OnDidEndTextFieldEditing(); |
- void OnHideAutofillPopup(); |
- void OnAddPasswordFormMapping( |
- const FormFieldData& form, |
- const PasswordFormFillData& fill_data); |
- void OnShowPasswordSuggestions(const FormFieldData& field, |
- const gfx::RectF& bounds, |
- const std::vector<string16>& suggestions); |
- void OnSetDataList(const std::vector<string16>& values, |
- const std::vector<string16>& labels, |
- const std::vector<string16>& icons, |
- const std::vector<int>& unique_ids); |
- |
- // Requests an interactive autocomplete UI be shown. |
- void OnRequestAutocomplete(const FormData& form, |
- const GURL& frame_url, |
- const content::SSLStatus& ssl_status); |
- |
- // Passes return data for an OnRequestAutocomplete call back to the page. |
- void ReturnAutocompleteData(const FormStructure* result); |
- |
- // Called to signal clicking an element failed in some way during an |
- // Autocheckout flow. |
- void OnClickFailed(autofill::AutocheckoutStatus status); |
- |
- // Returns the matched whitelist URL prefix for the current tab's url. |
- std::string GetAutocheckoutURLPrefix() const; |
- |
- // Fills |host| with the RenderViewHost for this tab. |
- // Returns false if Autofill is disabled or if the host is unavailable. |
- bool GetHost(content::RenderViewHost** host) const WARN_UNUSED_RESULT; |
- |
- // Unpacks |unique_id| and fills |form_group| and |variant| with the |
- // appropriate data source and variant index. Returns false if the unpacked |
- // id cannot be found. |
- bool GetProfileOrCreditCard(int unique_id, |
- const FormGroup** form_group, |
- size_t* variant) const WARN_UNUSED_RESULT; |
- |
- // Fills |form_structure| cached element corresponding to |form|. |
- // Returns false if the cached element was not found. |
- bool FindCachedForm(const FormData& form, |
- FormStructure** form_structure) const WARN_UNUSED_RESULT; |
- |
- // Fills |form_structure| and |autofill_field| with the cached elements |
- // corresponding to |form| and |field|. This might have the side-effect of |
- // updating the cache. Returns false if the |form| is not autofillable, or if |
- // it is not already present in the cache and the cache is full. |
- bool GetCachedFormAndField(const FormData& form, |
- const FormFieldData& field, |
- FormStructure** form_structure, |
- AutofillField** autofill_field) WARN_UNUSED_RESULT; |
- |
- // Re-parses |live_form| and adds the result to |form_structures_|. |
- // |cached_form| should be a pointer to the existing version of the form, or |
- // NULL if no cached version exists. The updated form is then written into |
- // |updated_form|. Returns false if the cache could not be updated. |
- bool UpdateCachedForm(const FormData& live_form, |
- const FormStructure* cached_form, |
- FormStructure** updated_form) WARN_UNUSED_RESULT; |
- |
- // Returns a list of values from the stored profiles that match |type| and the |
- // value of |field| and returns the labels of the matching profiles. |labels| |
- // is filled with the Profile label. |
- void GetProfileSuggestions(FormStructure* form, |
- const FormFieldData& field, |
- AutofillFieldType type, |
- std::vector<string16>* values, |
- std::vector<string16>* labels, |
- std::vector<string16>* icons, |
- std::vector<int>* unique_ids) const; |
- |
- // Returns a list of values from the stored credit cards that match |type| and |
- // the value of |field| and returns the labels of the matching credit cards. |
- void GetCreditCardSuggestions(const FormFieldData& field, |
- AutofillFieldType type, |
- std::vector<string16>* values, |
- std::vector<string16>* labels, |
- std::vector<string16>* icons, |
- std::vector<int>* unique_ids) const; |
- |
- // Parses the forms using heuristic matching and querying the Autofill server. |
- void ParseForms(const std::vector<FormData>& forms); |
- |
- // Imports the form data, submitted by the user, into |personal_data_|. |
- void ImportFormData(const FormStructure& submitted_form); |
- |
- // If |initial_interaction_timestamp_| is unset or is set to a later time than |
- // |interaction_timestamp|, updates the cached timestamp. The latter check is |
- // needed because IPC messages can arrive out of order. |
- void UpdateInitialInteractionTimestamp( |
- const base::TimeTicks& interaction_timestamp); |
- |
- // Send our current field type predictions to the renderer. This is a no-op if |
- // the appropriate command-line flag is not set. |
- void SendAutofillTypePredictions( |
- const std::vector<FormStructure*>& forms) const; |
- |
- autofill::AutofillManagerDelegate* const manager_delegate_; |
- |
- // The personal data manager, used to save and load personal data to/from the |
- // web database. This is overridden by the AutofillManagerTest. |
- // Weak reference. |
- // May be NULL. NULL indicates OTR. |
- PersonalDataManager* personal_data_; |
- |
- std::list<std::string> autofilled_form_signatures_; |
- |
- // Handles queries and uploads to Autofill servers. |
- AutofillDownloadManager download_manager_; |
- |
- // Should be set to true in AutofillManagerTest and other tests, false in |
- // AutofillDownloadManagerTest and in non-test environment. Is false by |
- // default for the public constructor, and true by default for the test-only |
- // constructors. |
- bool disable_download_manager_requests_; |
- |
- // Handles single-field autocomplete form data. |
- AutocompleteHistoryManager autocomplete_history_manager_; |
- |
- // Handles autocheckout flows. |
- autofill::AutocheckoutManager autocheckout_manager_; |
- |
- // For logging UMA metrics. Overridden by metrics tests. |
- scoped_ptr<const AutofillMetrics> metric_logger_; |
- // Have we logged whether Autofill is enabled for this page load? |
- bool has_logged_autofill_enabled_; |
- // Have we logged an address suggestions count metric for this page? |
- bool has_logged_address_suggestions_count_; |
- // Have we shown Autofill suggestions at least once? |
- bool did_show_suggestions_; |
- // Has the user manually edited at least one form field among the autofillable |
- // ones? |
- bool user_did_type_; |
- // Has the user autofilled a form on this page? |
- bool user_did_autofill_; |
- // Has the user edited a field that was previously autofilled? |
- bool user_did_edit_autofilled_field_; |
- // When the page finished loading. |
- base::TimeTicks forms_loaded_timestamp_; |
- // When the user first interacted with a potentially fillable form on this |
- // page. |
- base::TimeTicks initial_interaction_timestamp_; |
- // If password generation is enabled. We cache this value so that we don't |
- // spam the renderer with messages during startup when the sync state |
- // is changing rapidly. |
- bool password_generation_enabled_; |
- // Listens for changes to the 'enabled' state for password generation. |
- PrefChangeRegistrar registrar_; |
- |
- // To be passed to the password generation UI to generate the password. |
- scoped_ptr<autofill::PasswordGenerator> password_generator_; |
- |
- // Our copy of the form data. |
- ScopedVector<FormStructure> form_structures_; |
- |
- // GUID to ID mapping. We keep two maps to convert back and forth. |
- mutable std::map<PersonalDataManager::GUIDPair, int> guid_id_map_; |
- mutable std::map<int, PersonalDataManager::GUIDPair> id_guid_map_; |
- |
- // Delegate to perform external processing (display, selection) on |
- // our behalf. Weak. |
- AutofillExternalDelegate* external_delegate_; |
- |
- base::WeakPtrFactory<AutofillManager> weak_ptr_factory_; |
- |
- friend class AutofillManagerTest; |
- friend class FormStructureBrowserTest; |
- FRIEND_TEST_ALL_PREFIXES(AutofillManagerTest, |
- DeterminePossibleFieldTypesForUpload); |
- FRIEND_TEST_ALL_PREFIXES(AutofillManagerTest, |
- DeterminePossibleFieldTypesForUploadStressTest); |
- FRIEND_TEST_ALL_PREFIXES(AutofillManagerTest, |
- DisabledAutofillDispatchesError); |
- FRIEND_TEST_ALL_PREFIXES(AutofillMetricsTest, AddressSuggestionsCount); |
- FRIEND_TEST_ALL_PREFIXES(AutofillMetricsTest, AutofillIsEnabledAtPageLoad); |
- FRIEND_TEST_ALL_PREFIXES(AutofillMetricsTest, DeveloperEngagement); |
- FRIEND_TEST_ALL_PREFIXES(AutofillMetricsTest, FormFillDuration); |
- FRIEND_TEST_ALL_PREFIXES(AutofillMetricsTest, |
- NoQualityMetricsForNonAutofillableForms); |
- FRIEND_TEST_ALL_PREFIXES(AutofillMetricsTest, QualityMetrics); |
- FRIEND_TEST_ALL_PREFIXES(AutofillMetricsTest, QualityMetricsForFailure); |
- FRIEND_TEST_ALL_PREFIXES(AutofillMetricsTest, QualityMetricsWithExperimentId); |
- FRIEND_TEST_ALL_PREFIXES(AutofillMetricsTest, SaneMetricsWithCacheMismatch); |
- FRIEND_TEST_ALL_PREFIXES(AutofillManagerTest, TestExternalDelegate); |
- FRIEND_TEST_ALL_PREFIXES(AutofillManagerTest, |
- TestTabContentsWithExternalDelegate); |
- FRIEND_TEST_ALL_PREFIXES(AutofillMetricsTest, |
- UserHappinessFormLoadAndSubmission); |
- FRIEND_TEST_ALL_PREFIXES(AutofillMetricsTest, UserHappinessFormInteraction); |
- |
- DISALLOW_COPY_AND_ASSIGN(AutofillManager); |
-}; |
- |
-#endif // CHROME_BROWSER_AUTOFILL_AUTOFILL_MANAGER_H_ |