OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 #include "chrome/browser/autofill/autofill_manager.h" | 5 #include "chrome/browser/autofill/autofill_manager.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "chrome/browser/autofill/autofill_dialog.h" | 10 #include "chrome/browser/autofill/autofill_dialog.h" |
11 #include "chrome/browser/autofill/autofill_infobar_delegate.h" | 11 #include "chrome/browser/autofill/autofill_infobar_delegate.h" |
12 #include "chrome/browser/autofill/form_structure.h" | 12 #include "chrome/browser/autofill/form_structure.h" |
13 #include "chrome/browser/autofill/personal_data_manager.h" | |
14 #include "chrome/browser/profile.h" | 13 #include "chrome/browser/profile.h" |
15 #include "chrome/browser/tab_contents/tab_contents.h" | 14 #include "chrome/browser/tab_contents/tab_contents.h" |
16 #include "chrome/common/chrome_switches.h" | 15 #include "chrome/common/chrome_switches.h" |
17 #include "chrome/common/pref_names.h" | 16 #include "chrome/common/pref_names.h" |
18 #include "chrome/common/pref_service.h" | 17 #include "chrome/common/pref_service.h" |
19 #include "webkit/glue/form_field_values.h" | 18 #include "webkit/glue/form_field_values.h" |
20 | 19 |
21 AutoFillManager::AutoFillManager(TabContents* tab_contents) | 20 AutoFillManager::AutoFillManager(TabContents* tab_contents) |
22 : tab_contents_(tab_contents), | 21 : tab_contents_(tab_contents), |
23 infobar_(NULL) { | 22 infobar_(NULL) { |
(...skipping 30 matching lines...) Expand all Loading... |
54 bool infobar_shown = prefs->GetBoolean(prefs::kAutoFillInfoBarShown); | 53 bool infobar_shown = prefs->GetBoolean(prefs::kAutoFillInfoBarShown); |
55 if (!infobar_shown) { | 54 if (!infobar_shown) { |
56 // Ask the user for permission to save form information. | 55 // Ask the user for permission to save form information. |
57 infobar_.reset(new AutoFillInfoBarDelegate(tab_contents_, this)); | 56 infobar_.reset(new AutoFillInfoBarDelegate(tab_contents_, this)); |
58 } else if (autofill_enabled) { | 57 } else if (autofill_enabled) { |
59 HandleSubmit(); | 58 HandleSubmit(); |
60 } | 59 } |
61 } | 60 } |
62 | 61 |
63 void AutoFillManager::OnAutoFillDialogApply( | 62 void AutoFillManager::OnAutoFillDialogApply( |
64 const std::vector<AutoFillProfile>& profiles, | 63 std::vector<AutoFillProfile>* profiles, |
65 const std::vector<CreditCard>& credit_cards) { | 64 std::vector<CreditCard>* credit_cards) { |
66 // TODO(jhawkins): Pass the profile data onto the PersonalDataManager. | 65 // Save the personal data. |
| 66 personal_data_->SetProfiles(profiles); |
| 67 // TODO(jhawkins): Set the credit cards. |
| 68 |
| 69 HandleSubmit(); |
| 70 } |
| 71 |
| 72 void AutoFillManager::OnPersonalDataLoaded() { |
| 73 // We might have been alerted that the PersonalDataManager has loaded, so |
| 74 // remove ourselves as observer. |
| 75 personal_data_->RemoveObserver(this); |
| 76 |
| 77 // TODO(jhawkins): Actually send in the real credit cards from the personal |
| 78 // data manager. |
| 79 std::vector<CreditCard*> credit_cards; |
| 80 ShowAutoFillDialog(this, personal_data_->profiles(), credit_cards); |
67 } | 81 } |
68 | 82 |
69 void AutoFillManager::DeterminePossibleFieldTypes( | 83 void AutoFillManager::DeterminePossibleFieldTypes( |
70 FormStructure* form_structure) { | 84 FormStructure* form_structure) { |
71 // TODO(jhawkins): Update field text. | 85 // TODO(jhawkins): Update field text. |
72 | 86 |
73 form_structure->GetHeuristicAutoFillTypes(); | 87 form_structure->GetHeuristicAutoFillTypes(); |
74 | 88 |
75 for (size_t i = 0; i < form_structure->field_count(); i++) { | 89 for (size_t i = 0; i < form_structure->field_count(); i++) { |
76 const AutoFillField* field = form_structure->field(i); | 90 const AutoFillField* field = form_structure->field(i); |
77 FieldTypeSet field_types; | 91 FieldTypeSet field_types; |
78 personal_data_->GetPossibleFieldTypes(field->value(), &field_types); | 92 personal_data_->GetPossibleFieldTypes(field->value(), &field_types); |
79 form_structure->set_possible_types(i, field_types); | 93 form_structure->set_possible_types(i, field_types); |
80 } | 94 } |
81 } | 95 } |
82 | 96 |
83 void AutoFillManager::HandleSubmit() { | 97 void AutoFillManager::HandleSubmit() { |
84 // If there wasn't enough data to import then we don't want to send an upload | 98 // If there wasn't enough data to import then we don't want to send an upload |
85 // to the server. | 99 // to the server. |
86 if (!personal_data_->ImportFormData(form_structures_, this)) | 100 if (!personal_data_->ImportFormData(form_structures_, this)) |
87 return; | 101 return; |
88 | 102 |
89 UploadFormData(); | 103 UploadFormData(); |
90 } | 104 } |
91 | 105 |
92 void AutoFillManager::OnInfoBarAccepted() { | 106 void AutoFillManager::OnInfoBarAccepted() { |
93 PrefService* prefs = tab_contents_->profile()->GetPrefs(); | 107 PrefService* prefs = tab_contents_->profile()->GetPrefs(); |
94 prefs->SetBoolean(prefs::kAutoFillEnabled, true); | 108 prefs->SetBoolean(prefs::kAutoFillEnabled, true); |
95 | 109 |
96 // TODO(jhawkins): Actually send in the real profiles and credit cards from | 110 // If the personal data manager has not loaded the data yet, set ourselves as |
97 // the personal data manager. | 111 // its observer so that we can listen for the OnPersonalDataLoaded signal. |
98 std::vector<AutoFillProfile> profiles; | 112 if (!personal_data_->IsDataLoaded()) |
99 std::vector<CreditCard> credit_cards; | 113 personal_data_->SetObserver(this); |
100 ShowAutoFillDialog(this, profiles, credit_cards); | 114 else |
101 | 115 OnPersonalDataLoaded(); |
102 HandleSubmit(); | |
103 } | 116 } |
104 | 117 |
105 void AutoFillManager::SaveFormData() { | 118 void AutoFillManager::SaveFormData() { |
106 // TODO(jhawkins): Save the form data to the web database. | 119 // TODO(jhawkins): Save the form data to the web database. |
107 } | 120 } |
108 | 121 |
109 void AutoFillManager::UploadFormData() { | 122 void AutoFillManager::UploadFormData() { |
110 std::string xml; | 123 std::string xml; |
111 bool ok = upload_form_structure_->EncodeUploadRequest(false, &xml); | 124 bool ok = upload_form_structure_->EncodeUploadRequest(false, &xml); |
112 DCHECK(ok); | 125 DCHECK(ok); |
113 | 126 |
114 // TODO(jhawkins): Initiate the upload request thread. | 127 // TODO(jhawkins): Initiate the upload request thread. |
115 } | 128 } |
116 | 129 |
117 void AutoFillManager::Reset() { | 130 void AutoFillManager::Reset() { |
118 upload_form_structure_.reset(); | 131 upload_form_structure_.reset(); |
119 } | 132 } |
OLD | NEW |