OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_MANAGER_H_ | 5 #ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_MANAGER_H_ |
6 #define COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_MANAGER_H_ | 6 #define COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_MANAGER_H_ |
7 | 7 |
8 #include <deque> | 8 #include <deque> |
9 #include <map> | 9 #include <map> |
| 10 #include <memory> |
10 #include <string> | 11 #include <string> |
11 #include <vector> | 12 #include <vector> |
12 | 13 |
13 #include "base/callback_forward.h" | 14 #include "base/callback_forward.h" |
14 #include "base/compiler_specific.h" | 15 #include "base/compiler_specific.h" |
15 #include "base/gtest_prod_util.h" | 16 #include "base/gtest_prod_util.h" |
16 #include "base/macros.h" | 17 #include "base/macros.h" |
17 #include "base/memory/scoped_ptr.h" | |
18 #include "base/memory/scoped_vector.h" | 18 #include "base/memory/scoped_vector.h" |
19 #include "base/memory/weak_ptr.h" | 19 #include "base/memory/weak_ptr.h" |
20 #include "base/strings/string16.h" | 20 #include "base/strings/string16.h" |
21 #include "base/time/time.h" | 21 #include "base/time/time.h" |
22 #include "build/build_config.h" | 22 #include "build/build_config.h" |
23 #include "components/autofill/core/browser/autocomplete_history_manager.h" | 23 #include "components/autofill/core/browser/autocomplete_history_manager.h" |
24 #include "components/autofill/core/browser/autofill_client.h" | 24 #include "components/autofill/core/browser/autofill_client.h" |
25 #include "components/autofill/core/browser/autofill_download_manager.h" | 25 #include "components/autofill/core/browser/autofill_download_manager.h" |
26 #include "components/autofill/core/browser/autofill_driver.h" | 26 #include "components/autofill/core/browser/autofill_driver.h" |
27 #include "components/autofill/core/browser/autofill_metrics.h" | 27 #include "components/autofill/core/browser/autofill_metrics.h" |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
161 // if this form is not relevant for Autofill. | 161 // if this form is not relevant for Autofill. |
162 bool OnWillSubmitForm(const FormData& form, const base::TimeTicks& timestamp); | 162 bool OnWillSubmitForm(const FormData& form, const base::TimeTicks& timestamp); |
163 | 163 |
164 // Processes the submitted |form|, saving any new Autofill data to the user's | 164 // Processes the submitted |form|, saving any new Autofill data to the user's |
165 // personal profile. Returns false if this form is not relevant for Autofill. | 165 // personal profile. Returns false if this form is not relevant for Autofill. |
166 bool OnFormSubmitted(const FormData& form); | 166 bool OnFormSubmitted(const FormData& form); |
167 | 167 |
168 // Will send an upload based on the |form_structure| data and the local | 168 // Will send an upload based on the |form_structure| data and the local |
169 // Autofill profile data. |observed_submission| is specified if the upload | 169 // Autofill profile data. |observed_submission| is specified if the upload |
170 // follows an observed submission event. | 170 // follows an observed submission event. |
171 void StartUploadProcess(scoped_ptr<FormStructure> form_structure, | 171 void StartUploadProcess(std::unique_ptr<FormStructure> form_structure, |
172 const base::TimeTicks& timestamp, | 172 const base::TimeTicks& timestamp, |
173 bool observed_submission); | 173 bool observed_submission); |
174 | 174 |
175 // Update the pending form with |form|, possibly processing the current | 175 // Update the pending form with |form|, possibly processing the current |
176 // pending form for upload. | 176 // pending form for upload. |
177 void UpdatePendingForm(const FormData& form); | 177 void UpdatePendingForm(const FormData& form); |
178 | 178 |
179 // Upload the current pending form. | 179 // Upload the current pending form. |
180 void ProcessPendingFormForUpload(); | 180 void ProcessPendingFormForUpload(); |
181 | 181 |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
271 void OnUnmaskResponse(const UnmaskResponse& response) override; | 271 void OnUnmaskResponse(const UnmaskResponse& response) override; |
272 void OnUnmaskPromptClosed() override; | 272 void OnUnmaskPromptClosed() override; |
273 | 273 |
274 // payments::PaymentsClientDelegate: | 274 // payments::PaymentsClientDelegate: |
275 IdentityProvider* GetIdentityProvider() override; | 275 IdentityProvider* GetIdentityProvider() override; |
276 void OnDidGetRealPan(AutofillClient::PaymentsRpcResult result, | 276 void OnDidGetRealPan(AutofillClient::PaymentsRpcResult result, |
277 const std::string& real_pan) override; | 277 const std::string& real_pan) override; |
278 void OnDidGetUploadDetails( | 278 void OnDidGetUploadDetails( |
279 AutofillClient::PaymentsRpcResult result, | 279 AutofillClient::PaymentsRpcResult result, |
280 const base::string16& context_token, | 280 const base::string16& context_token, |
281 scoped_ptr<base::DictionaryValue> legal_message) override; | 281 std::unique_ptr<base::DictionaryValue> legal_message) override; |
282 void OnDidUploadCard(AutofillClient::PaymentsRpcResult result) override; | 282 void OnDidUploadCard(AutofillClient::PaymentsRpcResult result) override; |
283 | 283 |
284 // Saves risk data in |unmasking_risk_data_| and calls UnmaskCard if the user | 284 // Saves risk data in |unmasking_risk_data_| and calls UnmaskCard if the user |
285 // has accepted the prompt. | 285 // has accepted the prompt. |
286 void OnDidGetUnmaskRiskData(const std::string& risk_data); | 286 void OnDidGetUnmaskRiskData(const std::string& risk_data); |
287 | 287 |
288 // Sets |user_did_accept_upload_prompt_| and calls UploadCard if the risk data | 288 // Sets |user_did_accept_upload_prompt_| and calls UploadCard if the risk data |
289 // is available. | 289 // is available. |
290 void OnUserDidAcceptUpload(); | 290 void OnUserDidAcceptUpload(); |
291 | 291 |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
335 void FillOrPreviewDataModelForm(AutofillDriver::RendererFormDataAction action, | 335 void FillOrPreviewDataModelForm(AutofillDriver::RendererFormDataAction action, |
336 int query_id, | 336 int query_id, |
337 const FormData& form, | 337 const FormData& form, |
338 const FormFieldData& field, | 338 const FormFieldData& field, |
339 const AutofillDataModel& data_model, | 339 const AutofillDataModel& data_model, |
340 bool is_credit_card); | 340 bool is_credit_card); |
341 | 341 |
342 // Creates a FormStructure using the FormData received from the renderer. Will | 342 // Creates a FormStructure using the FormData received from the renderer. Will |
343 // return an empty scoped_ptr if the data should not be processed for upload | 343 // return an empty scoped_ptr if the data should not be processed for upload |
344 // or personal data. | 344 // or personal data. |
345 scoped_ptr<FormStructure> ValidateSubmittedForm(const FormData& form); | 345 std::unique_ptr<FormStructure> ValidateSubmittedForm(const FormData& form); |
346 | 346 |
347 // Fills |form_structure| cached element corresponding to |form|. | 347 // Fills |form_structure| cached element corresponding to |form|. |
348 // Returns false if the cached element was not found. | 348 // Returns false if the cached element was not found. |
349 bool FindCachedForm(const FormData& form, | 349 bool FindCachedForm(const FormData& form, |
350 FormStructure** form_structure) const WARN_UNUSED_RESULT; | 350 FormStructure** form_structure) const WARN_UNUSED_RESULT; |
351 | 351 |
352 // Fills |form_structure| and |autofill_field| with the cached elements | 352 // Fills |form_structure| and |autofill_field| with the cached elements |
353 // corresponding to |form| and |field|. This might have the side-effect of | 353 // corresponding to |form| and |field|. This might have the side-effect of |
354 // updating the cache. Returns false if the |form| is not autofillable, or if | 354 // updating the cache. Returns false if the |form| is not autofillable, or if |
355 // it is not already present in the cache and the cache is full. | 355 // it is not already present in the cache and the cache is full. |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
439 void DumpAutofillData(bool imported_cc) const; | 439 void DumpAutofillData(bool imported_cc) const; |
440 #endif | 440 #endif |
441 | 441 |
442 // Provides driver-level context to the shared code of the component. Must | 442 // Provides driver-level context to the shared code of the component. Must |
443 // outlive this object. | 443 // outlive this object. |
444 AutofillDriver* driver_; | 444 AutofillDriver* driver_; |
445 | 445 |
446 AutofillClient* const client_; | 446 AutofillClient* const client_; |
447 | 447 |
448 // Handles Payments service requests. | 448 // Handles Payments service requests. |
449 scoped_ptr<payments::PaymentsClient> payments_client_; | 449 std::unique_ptr<payments::PaymentsClient> payments_client_; |
450 | 450 |
451 std::string app_locale_; | 451 std::string app_locale_; |
452 | 452 |
453 // The personal data manager, used to save and load personal data to/from the | 453 // The personal data manager, used to save and load personal data to/from the |
454 // web database. This is overridden by the AutofillManagerTest. | 454 // web database. This is overridden by the AutofillManagerTest. |
455 // Weak reference. | 455 // Weak reference. |
456 // May be NULL. NULL indicates OTR. | 456 // May be NULL. NULL indicates OTR. |
457 PersonalDataManager* personal_data_; | 457 PersonalDataManager* personal_data_; |
458 | 458 |
459 std::deque<std::string> autofilled_form_signatures_; | 459 std::deque<std::string> autofilled_form_signatures_; |
460 | 460 |
461 // Handles queries and uploads to Autofill servers. Will be NULL if | 461 // Handles queries and uploads to Autofill servers. Will be NULL if |
462 // the download manager functionality is disabled. | 462 // the download manager functionality is disabled. |
463 scoped_ptr<AutofillDownloadManager> download_manager_; | 463 std::unique_ptr<AutofillDownloadManager> download_manager_; |
464 | 464 |
465 // Handles single-field autocomplete form data. | 465 // Handles single-field autocomplete form data. |
466 scoped_ptr<AutocompleteHistoryManager> autocomplete_history_manager_; | 466 std::unique_ptr<AutocompleteHistoryManager> autocomplete_history_manager_; |
467 | 467 |
468 // Utilities for logging form events. | 468 // Utilities for logging form events. |
469 scoped_ptr<AutofillMetrics::FormEventLogger> address_form_event_logger_; | 469 std::unique_ptr<AutofillMetrics::FormEventLogger> address_form_event_logger_; |
470 scoped_ptr<AutofillMetrics::FormEventLogger> credit_card_form_event_logger_; | 470 std::unique_ptr<AutofillMetrics::FormEventLogger> |
| 471 credit_card_form_event_logger_; |
471 | 472 |
472 // Have we logged whether Autofill is enabled for this page load? | 473 // Have we logged whether Autofill is enabled for this page load? |
473 bool has_logged_autofill_enabled_; | 474 bool has_logged_autofill_enabled_; |
474 // Have we logged an address suggestions count metric for this page? | 475 // Have we logged an address suggestions count metric for this page? |
475 bool has_logged_address_suggestions_count_; | 476 bool has_logged_address_suggestions_count_; |
476 // Have we shown Autofill suggestions at least once? | 477 // Have we shown Autofill suggestions at least once? |
477 bool did_show_suggestions_; | 478 bool did_show_suggestions_; |
478 // Has the user manually edited at least one form field among the autofillable | 479 // Has the user manually edited at least one form field among the autofillable |
479 // ones? | 480 // ones? |
480 bool user_did_type_; | 481 bool user_did_type_; |
481 // Has the user autofilled a form on this page? | 482 // Has the user autofilled a form on this page? |
482 bool user_did_autofill_; | 483 bool user_did_autofill_; |
483 // Has the user edited a field that was previously autofilled? | 484 // Has the user edited a field that was previously autofilled? |
484 bool user_did_edit_autofilled_field_; | 485 bool user_did_edit_autofilled_field_; |
485 // When the form finished loading. | 486 // When the form finished loading. |
486 std::map<FormData, base::TimeTicks> forms_loaded_timestamps_; | 487 std::map<FormData, base::TimeTicks> forms_loaded_timestamps_; |
487 // When the user first interacted with a potentially fillable form on this | 488 // When the user first interacted with a potentially fillable form on this |
488 // page. | 489 // page. |
489 base::TimeTicks initial_interaction_timestamp_; | 490 base::TimeTicks initial_interaction_timestamp_; |
490 | 491 |
491 // Our copy of the form data. | 492 // Our copy of the form data. |
492 ScopedVector<FormStructure> form_structures_; | 493 ScopedVector<FormStructure> form_structures_; |
493 | 494 |
494 // A copy of the currently interacted form data. | 495 // A copy of the currently interacted form data. |
495 scoped_ptr<FormData> pending_form_data_; | 496 std::unique_ptr<FormData> pending_form_data_; |
496 | 497 |
497 // Collected information about a pending unmask request, and data about the | 498 // Collected information about a pending unmask request, and data about the |
498 // form. | 499 // form. |
499 payments::PaymentsClient::UnmaskRequestDetails unmask_request_; | 500 payments::PaymentsClient::UnmaskRequestDetails unmask_request_; |
500 int unmasking_query_id_; | 501 int unmasking_query_id_; |
501 FormData unmasking_form_; | 502 FormData unmasking_form_; |
502 FormFieldData unmasking_field_; | 503 FormFieldData unmasking_field_; |
503 // Time when we requested the last real pan. | 504 // Time when we requested the last real pan. |
504 base::Time real_pan_request_timestamp_; | 505 base::Time real_pan_request_timestamp_; |
505 | 506 |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
583 FRIEND_TEST_ALL_PREFIXES(AutofillManagerTest, | 584 FRIEND_TEST_ALL_PREFIXES(AutofillManagerTest, |
584 DontSaveCvcInAutocompleteHistory); | 585 DontSaveCvcInAutocompleteHistory); |
585 FRIEND_TEST_ALL_PREFIXES(AutofillManagerTest, DontOfferToSavePaymentsCard); | 586 FRIEND_TEST_ALL_PREFIXES(AutofillManagerTest, DontOfferToSavePaymentsCard); |
586 FRIEND_TEST_ALL_PREFIXES(AutofillManagerTest, FillInUpdatedExpirationDate); | 587 FRIEND_TEST_ALL_PREFIXES(AutofillManagerTest, FillInUpdatedExpirationDate); |
587 DISALLOW_COPY_AND_ASSIGN(AutofillManager); | 588 DISALLOW_COPY_AND_ASSIGN(AutofillManager); |
588 }; | 589 }; |
589 | 590 |
590 } // namespace autofill | 591 } // namespace autofill |
591 | 592 |
592 #endif // COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_MANAGER_H_ | 593 #endif // COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_MANAGER_H_ |
OLD | NEW |