Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(53)

Side by Side Diff: components/autofill/core/browser/autofill_manager.h

Issue 1899893002: Card unmasking without form filling (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Use the credit card number field in metrics tests, because ios single-field form fill will not requ… Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 <memory>
11 #include <string> 11 #include <string>
12 #include <vector> 12 #include <vector>
13 13
14 #include "base/callback_forward.h" 14 #include "base/callback_forward.h"
15 #include "base/compiler_specific.h" 15 #include "base/compiler_specific.h"
16 #include "base/gtest_prod_util.h" 16 #include "base/gtest_prod_util.h"
17 #include "base/macros.h" 17 #include "base/macros.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"
28 #include "components/autofill/core/browser/card_unmask_delegate.h" 28 #include "components/autofill/core/browser/card_unmask_delegate.h"
29 #include "components/autofill/core/browser/form_structure.h" 29 #include "components/autofill/core/browser/form_structure.h"
30 #include "components/autofill/core/browser/payments/full_card_request.h"
30 #include "components/autofill/core/browser/payments/payments_client.h" 31 #include "components/autofill/core/browser/payments/payments_client.h"
31 #include "components/autofill/core/browser/personal_data_manager.h" 32 #include "components/autofill/core/browser/personal_data_manager.h"
32 #include "components/autofill/core/common/form_data.h" 33 #include "components/autofill/core/common/form_data.h"
33 34
34 // This define protects some debugging code (see DumpAutofillData). This 35 // This define protects some debugging code (see DumpAutofillData). This
35 // is here to make it easier to delete this code when the test is complete, 36 // is here to make it easier to delete this code when the test is complete,
36 // and to prevent adding the code on mobile where there is no desktop (the 37 // and to prevent adding the code on mobile where there is no desktop (the
37 // debug dump file is written to the desktop) or command-line flags to enable. 38 // debug dump file is written to the desktop) or command-line flags to enable.
38 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) 39 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
39 #define ENABLE_FORM_DEBUG_DUMP 40 #define ENABLE_FORM_DEBUG_DUMP
(...skipping 20 matching lines...) Expand all
60 class AutofillType; 61 class AutofillType;
61 class CreditCard; 62 class CreditCard;
62 class FormStructureBrowserTest; 63 class FormStructureBrowserTest;
63 64
64 struct FormData; 65 struct FormData;
65 struct FormFieldData; 66 struct FormFieldData;
66 67
67 // Manages saving and restoring the user's personal information entered into web 68 // Manages saving and restoring the user's personal information entered into web
68 // forms. One per frame; owned by the AutofillDriver. 69 // forms. One per frame; owned by the AutofillDriver.
69 class AutofillManager : public AutofillDownloadManager::Observer, 70 class AutofillManager : public AutofillDownloadManager::Observer,
70 public CardUnmaskDelegate, 71 public payments::PaymentsClientDelegate,
71 public payments::PaymentsClientDelegate { 72 public payments::FullCardRequest::Delegate {
72 public: 73 public:
73 enum AutofillDownloadManagerState { 74 enum AutofillDownloadManagerState {
74 ENABLE_AUTOFILL_DOWNLOAD_MANAGER, 75 ENABLE_AUTOFILL_DOWNLOAD_MANAGER,
75 DISABLE_AUTOFILL_DOWNLOAD_MANAGER, 76 DISABLE_AUTOFILL_DOWNLOAD_MANAGER,
76 }; 77 };
77 78
78 // Registers our Enable/Disable Autofill pref. 79 // Registers our Enable/Disable Autofill pref.
79 static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); 80 static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry);
80 81
81 AutofillManager(AutofillDriver* driver, 82 AutofillManager(AutofillDriver* driver,
(...skipping 13 matching lines...) Expand all
95 96
96 // Called from our external delegate so they cannot be private. 97 // Called from our external delegate so they cannot be private.
97 virtual void FillOrPreviewForm(AutofillDriver::RendererFormDataAction action, 98 virtual void FillOrPreviewForm(AutofillDriver::RendererFormDataAction action,
98 int query_id, 99 int query_id,
99 const FormData& form, 100 const FormData& form,
100 const FormFieldData& field, 101 const FormFieldData& field,
101 int unique_id); 102 int unique_id);
102 virtual void FillCreditCardForm(int query_id, 103 virtual void FillCreditCardForm(int query_id,
103 const FormData& form, 104 const FormData& form,
104 const FormFieldData& field, 105 const FormFieldData& field,
105 const CreditCard& credit_card); 106 const CreditCard& credit_card,
107 const base::string16& cvc);
106 void DidShowSuggestions(bool is_new_popup, 108 void DidShowSuggestions(bool is_new_popup,
107 const FormData& form, 109 const FormData& form,
108 const FormFieldData& field); 110 const FormFieldData& field);
109 void OnFocusNoLongerOnForm(); 111 void OnFocusNoLongerOnForm();
110 void OnDidFillAutofillFormData(const FormData& form, 112 void OnDidFillAutofillFormData(const FormData& form,
111 const base::TimeTicks& timestamp); 113 const base::TimeTicks& timestamp);
112 void OnDidPreviewAutofillFormData(); 114 void OnDidPreviewAutofillFormData();
113 115
114 // Returns true if the value/identifier is deletable. Fills out 116 // Returns true if the value/identifier is deletable. Fills out
115 // |title| and |body| with relevant user-facing text. 117 // |title| and |body| with relevant user-facing text.
(...skipping 18 matching lines...) Expand all
134 136
135 // Happens when the autocomplete dialog runs its callback when being closed. 137 // Happens when the autocomplete dialog runs its callback when being closed.
136 void RequestAutocompleteDialogClosed(); 138 void RequestAutocompleteDialogClosed();
137 139
138 AutofillClient* client() { return client_; } 140 AutofillClient* client() { return client_; }
139 141
140 AutofillDownloadManager* download_manager() { 142 AutofillDownloadManager* download_manager() {
141 return download_manager_.get(); 143 return download_manager_.get();
142 } 144 }
143 145
146 payments::FullCardRequest* GetOrCreateFullCardRequest();
147
144 const std::string& app_locale() const { return app_locale_; } 148 const std::string& app_locale() const { return app_locale_; }
145 149
146 // Only for testing. 150 // Only for testing.
147 void SetTestDelegate(AutofillManagerTestDelegate* delegate); 151 void SetTestDelegate(AutofillManagerTestDelegate* delegate);
148 152
149 void OnFormsSeen(const std::vector<FormData>& forms, 153 void OnFormsSeen(const std::vector<FormData>& forms,
150 const base::TimeTicks& timestamp); 154 const base::TimeTicks& timestamp);
151 155
152 void set_app_locale(std::string app_locale) { app_locale_ = app_locale; } 156 void set_app_locale(std::string app_locale) { app_locale_ = app_locale; }
153 157
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 void set_payments_client(payments::PaymentsClient* payments_client) { 264 void set_payments_client(payments::PaymentsClient* payments_client) {
261 payments_client_.reset(payments_client); 265 payments_client_.reset(payments_client);
262 } 266 }
263 267
264 private: 268 private:
265 // AutofillDownloadManager::Observer: 269 // AutofillDownloadManager::Observer:
266 void OnLoadedServerPredictions( 270 void OnLoadedServerPredictions(
267 std::string response, 271 std::string response,
268 const std::vector<std::string>& form_signatures) override; 272 const std::vector<std::string>& form_signatures) override;
269 273
270 // CardUnmaskDelegate:
271 void OnUnmaskResponse(const UnmaskResponse& response) override;
272 void OnUnmaskPromptClosed() override;
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 std::unique_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 // FullCardRequest::Delegate:
285 void OnFullCardDetails(const CreditCard& card,
286 const base::string16& cvc) override;
287 void OnFullCardError() override;
288
284 // Saves risk data in |unmasking_risk_data_| and calls UnmaskCard if the user 289 // Saves risk data in |unmasking_risk_data_| and calls UnmaskCard if the user
285 // has accepted the prompt. 290 // has accepted the prompt.
286 void OnDidGetUnmaskRiskData(const std::string& risk_data); 291 void OnDidGetUnmaskRiskData(const std::string& risk_data);
287 292
288 // Sets |user_did_accept_upload_prompt_| and calls UploadCard if the risk data 293 // Sets |user_did_accept_upload_prompt_| and calls UploadCard if the risk data
289 // is available. 294 // is available.
290 void OnUserDidAcceptUpload(); 295 void OnUserDidAcceptUpload();
291 296
292 // Saves risk data in |uploading_risk_data_| and calls UploadCard if the user 297 // Saves risk data in |uploading_risk_data_| and calls UploadCard if the user
293 // has accepted the prompt. 298 // has accepted the prompt.
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
330 const FormData& form, 335 const FormData& form,
331 const FormFieldData& field, 336 const FormFieldData& field,
332 const AutofillProfile& profile); 337 const AutofillProfile& profile);
333 338
334 // Fills or previews |data_model| in the |form|. 339 // Fills or previews |data_model| in the |form|.
335 void FillOrPreviewDataModelForm(AutofillDriver::RendererFormDataAction action, 340 void FillOrPreviewDataModelForm(AutofillDriver::RendererFormDataAction action,
336 int query_id, 341 int query_id,
337 const FormData& form, 342 const FormData& form,
338 const FormFieldData& field, 343 const FormFieldData& field,
339 const AutofillDataModel& data_model, 344 const AutofillDataModel& data_model,
340 bool is_credit_card); 345 bool is_credit_card,
346 const base::string16& cvc);
341 347
342 // Creates a FormStructure using the FormData received from the renderer. Will 348 // 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 349 // return an empty scoped_ptr if the data should not be processed for upload
344 // or personal data. 350 // or personal data.
345 std::unique_ptr<FormStructure> ValidateSubmittedForm(const FormData& form); 351 std::unique_ptr<FormStructure> ValidateSubmittedForm(const FormData& form);
346 352
347 // Fills |form_structure| cached element corresponding to |form|. 353 // Fills |form_structure| cached element corresponding to |form|.
348 // Returns false if the cached element was not found. 354 // Returns false if the cached element was not found.
349 bool FindCachedForm(const FormData& form, 355 bool FindCachedForm(const FormData& form,
350 FormStructure** form_structure) const WARN_UNUSED_RESULT; 356 FormStructure** form_structure) const WARN_UNUSED_RESULT;
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
488 // When the user first interacted with a potentially fillable form on this 494 // When the user first interacted with a potentially fillable form on this
489 // page. 495 // page.
490 base::TimeTicks initial_interaction_timestamp_; 496 base::TimeTicks initial_interaction_timestamp_;
491 497
492 // Our copy of the form data. 498 // Our copy of the form data.
493 ScopedVector<FormStructure> form_structures_; 499 ScopedVector<FormStructure> form_structures_;
494 500
495 // A copy of the currently interacted form data. 501 // A copy of the currently interacted form data.
496 std::unique_ptr<FormData> pending_form_data_; 502 std::unique_ptr<FormData> pending_form_data_;
497 503
498 // Collected information about a pending unmask request, and data about the 504 // Responsible for getting the full card details, including the PAN and the
499 // form. 505 // CVC.
500 payments::PaymentsClient::UnmaskRequestDetails unmask_request_; 506 std::unique_ptr<payments::FullCardRequest> full_card_request_;
507
508 // Collected information about the autofill form where unmasked card will be
509 // filled.
501 int unmasking_query_id_; 510 int unmasking_query_id_;
502 FormData unmasking_form_; 511 FormData unmasking_form_;
503 FormFieldData unmasking_field_; 512 FormFieldData unmasking_field_;
504 // Time when we requested the last real pan. 513 CreditCard masked_card_;
505 base::Time real_pan_request_timestamp_;
506 514
507 // Collected information about a pending upload request. 515 // Collected information about a pending upload request.
508 payments::PaymentsClient::UploadRequestDetails upload_request_; 516 payments::PaymentsClient::UploadRequestDetails upload_request_;
509 bool user_did_accept_upload_prompt_; 517 bool user_did_accept_upload_prompt_;
510 518
511 #ifdef ENABLE_FORM_DEBUG_DUMP 519 #ifdef ENABLE_FORM_DEBUG_DUMP
512 // The last few autofilled forms (key/value pairs) submitted, for debugging. 520 // The last few autofilled forms (key/value pairs) submitted, for debugging.
513 // TODO(brettw) this should be removed. See DumpAutofillData. 521 // TODO(brettw) this should be removed. See DumpAutofillData.
514 std::vector<std::map<std::string, base::string16>> 522 std::vector<std::map<std::string, base::string16>>
515 recently_autofilled_forms_; 523 recently_autofilled_forms_;
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
587 FRIEND_TEST_ALL_PREFIXES(AutofillManagerTest, 595 FRIEND_TEST_ALL_PREFIXES(AutofillManagerTest,
588 DontSaveCvcInAutocompleteHistory); 596 DontSaveCvcInAutocompleteHistory);
589 FRIEND_TEST_ALL_PREFIXES(AutofillManagerTest, DontOfferToSavePaymentsCard); 597 FRIEND_TEST_ALL_PREFIXES(AutofillManagerTest, DontOfferToSavePaymentsCard);
590 FRIEND_TEST_ALL_PREFIXES(AutofillManagerTest, FillInUpdatedExpirationDate); 598 FRIEND_TEST_ALL_PREFIXES(AutofillManagerTest, FillInUpdatedExpirationDate);
591 DISALLOW_COPY_AND_ASSIGN(AutofillManager); 599 DISALLOW_COPY_AND_ASSIGN(AutofillManager);
592 }; 600 };
593 601
594 } // namespace autofill 602 } // namespace autofill
595 603
596 #endif // COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_MANAGER_H_ 604 #endif // COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_MANAGER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698