| 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_
|
|
|