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