Index: components/autofill/browser/autofill_manager.h |
diff --git a/components/autofill/browser/autofill_manager.h b/components/autofill/browser/autofill_manager.h |
deleted file mode 100644 |
index bac6bc709ce088ab8a363eb2f00be19518b1f071..0000000000000000000000000000000000000000 |
--- a/components/autofill/browser/autofill_manager.h |
+++ /dev/null |
@@ -1,430 +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 COMPONENTS_AUTOFILL_BROWSER_AUTOFILL_MANAGER_H_ |
-#define COMPONENTS_AUTOFILL_BROWSER_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/strings/string16.h" |
-#include "base/time.h" |
-#include "components/autofill/browser/autocomplete_history_manager.h" |
-#include "components/autofill/browser/autofill_download.h" |
-#include "components/autofill/browser/autofill_manager_delegate.h" |
-#include "components/autofill/browser/field_types.h" |
-#include "components/autofill/browser/form_structure.h" |
-#include "components/autofill/browser/personal_data_manager.h" |
-#include "components/autofill/content/browser/autocheckout_manager.h" |
-#include "components/autofill/core/common/autocheckout_status.h" |
-#include "components/autofill/core/common/form_data.h" |
-#include "components/autofill/core/common/forms_seen_state.h" |
-#include "content/public/common/ssl_status.h" |
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebFormElement.h" |
- |
-class GURL; |
- |
-namespace content { |
-class RenderViewHost; |
-class WebContents; |
-struct FrameNavigateParams; |
-struct LoadCommittedDetails; |
-} |
- |
-namespace gfx { |
-class Rect; |
-class RectF; |
-} |
- |
-namespace IPC { |
-class Message; |
-} |
- |
-namespace user_prefs { |
-class PrefRegistrySyncable; |
-} |
- |
-namespace autofill { |
- |
-class AutofillDriver; |
-class AutofillDataModel; |
-class AutofillDownloadManager; |
-class AutofillExternalDelegate; |
-class AutofillField; |
-class AutofillProfile; |
-class AutofillManagerDelegate; |
-class AutofillManagerTestDelegate; |
-class AutofillMetrics; |
-class CreditCard; |
-class FormStructureBrowserTest; |
- |
-struct FormData; |
-struct FormFieldData; |
-struct PasswordFormFillData; |
- |
-// Manages saving and restoring the user's personal information entered into web |
-// forms. |
-class AutofillManager : public AutofillDownloadManager::Observer { |
- public: |
- enum AutofillDownloadManagerState { |
- ENABLE_AUTOFILL_DOWNLOAD_MANAGER, |
- DISABLE_AUTOFILL_DOWNLOAD_MANAGER, |
- }; |
- |
- // Registers our Enable/Disable Autofill pref. |
- static void RegisterUserPrefs(user_prefs::PrefRegistrySyncable* registry); |
- |
- AutofillManager(AutofillDriver* driver, |
- autofill::AutofillManagerDelegate* delegate, |
- const std::string& app_locale, |
- AutofillDownloadManagerState enable_download_manager); |
- virtual ~AutofillManager(); |
- |
- // 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(); |
- |
- // 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 base::string16& name, |
- const base::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, |
- autofill::DialogType dialog_type, |
- const base::Callback<void(const FormStructure*, |
- const std::string&)>& callback); |
- |
- // Happens when the autocomplete dialog runs its callback when being closed. |
- void RequestAutocompleteDialogClosed(); |
- |
- autofill::AutofillManagerDelegate* delegate() const { |
- return manager_delegate_; |
- } |
- |
- const std::string& app_locale() const { return app_locale_; } |
- |
- // Only for testing. |
- void SetTestDelegate(autofill::AutofillManagerTestDelegate* delegate); |
- |
- // TODO(blundell): Move the logic in these methods into AutofillDriver and |
- // eliminate these methods. |
- virtual void DidNavigateMainFrame( |
- const content::LoadCommittedDetails& details, |
- const content::FrameNavigateParams& params); |
- virtual bool OnMessageReceived(const IPC::Message& message); |
- |
- protected: |
- // Test code should prefer to use this constructor. |
- AutofillManager(AutofillDriver* driver, |
- 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(); |
- |
- // 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); |
- |
- // Shows the Autocheckout bubble if conditions are right. See comments for |
- // AutocheckoutManager::MaybeShowAutocheckoutBubble. Input element requesting |
- // bubble belongs to |form|. |bounding_box| is the bounding box of the input |
- // field in focus. |
- virtual void OnMaybeShowAutocheckoutBubble(const FormData& form, |
- const gfx::RectF& bounding_box); |
- |
- // 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: |
- |
- // AutofillDownloadManager::Observer: |
- virtual void OnLoadedServerPredictions( |
- const std::string& response_xml) OVERRIDE; |
- |
- void OnFormsSeen(const std::vector<FormData>& forms, |
- const base::TimeTicks& timestamp, |
- autofill::FormsSeenState state); |
- 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 OnHideAutofillUi(); |
- void OnAddPasswordFormMapping( |
- const FormFieldData& form, |
- const PasswordFormFillData& fill_data); |
- void OnShowPasswordSuggestions( |
- const FormFieldData& field, |
- const gfx::RectF& bounds, |
- const std::vector<base::string16>& suggestions); |
- void OnSetDataList(const std::vector<base::string16>& values, |
- const std::vector<base::string16>& labels, |
- const std::vector<base::string16>& icons, |
- const std::vector<int>& unique_ids); |
- |
- // Requests an interactive autocomplete UI be shown. |
- void OnRequestAutocomplete(const FormData& form, |
- const GURL& frame_url); |
- |
- // Passes return data for an OnRequestAutocomplete call back to the page. |
- void ReturnAutocompleteData(const FormStructure* result, |
- const std::string& unused_transaction_id); |
- |
- // 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. |
- virtual 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 AutofillDataModel** data_model, |
- 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<base::string16>* values, |
- std::vector<base::string16>* labels, |
- std::vector<base::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<base::string16>* values, |
- std::vector<base::string16>* labels, |
- std::vector<base::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; |
- |
- // Provides driver-level context to the shared code of the component. Must |
- // outlive this object. |
- AutofillDriver* driver_; |
- |
- autofill::AutofillManagerDelegate* const manager_delegate_; |
- |
- std::string app_locale_; |
- |
- // 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. Will be NULL if |
- // the download manager functionality is disabled. |
- scoped_ptr<AutofillDownloadManager> download_manager_; |
- |
- // 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_; |
- |
- // 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_; |
- |
- // Delegate used in test to get notifications on certain events. |
- autofill::AutofillManagerTestDelegate* test_delegate_; |
- |
- base::WeakPtrFactory<AutofillManager> weak_ptr_factory_; |
- |
- friend class AutofillManagerTest; |
- friend class autofill::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); |
-}; |
- |
-} // namespace autofill |
- |
-#endif // COMPONENTS_AUTOFILL_BROWSER_AUTOFILL_MANAGER_H_ |