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

Side by Side Diff: chrome/browser/autofill/autofill_ie_toolbar_import_win.cc

Issue 3836005: Move pe_image and registry from base to base/win and use the namespace. It re... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 2 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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_ie_toolbar_import_win.h" 5 #include "chrome/browser/autofill/autofill_ie_toolbar_import_win.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/registry.h"
9 #include "base/string16.h" 8 #include "base/string16.h"
9 #include "base/win/registry.h"
10 #include "chrome/browser/autofill/autofill_profile.h" 10 #include "chrome/browser/autofill/autofill_profile.h"
11 #include "chrome/browser/autofill/credit_card.h" 11 #include "chrome/browser/autofill/credit_card.h"
12 #include "chrome/browser/autofill/field_types.h" 12 #include "chrome/browser/autofill/field_types.h"
13 #include "chrome/browser/autofill/personal_data_manager.h" 13 #include "chrome/browser/autofill/personal_data_manager.h"
14 #include "chrome/browser/sync/util/data_encryption.h" 14 #include "chrome/browser/sync/util/data_encryption.h"
15 15
16 using base::win::RegKey;
17
16 // Forward declaration. This function is not in unnamed namespace as it 18 // Forward declaration. This function is not in unnamed namespace as it
17 // is referenced in the unittest. 19 // is referenced in the unittest.
18 bool ImportCurrentUserProfiles(std::vector<AutoFillProfile>* profiles, 20 bool ImportCurrentUserProfiles(std::vector<AutoFillProfile>* profiles,
19 std::vector<CreditCard>* credit_cards); 21 std::vector<CreditCard>* credit_cards);
20 namespace { 22 namespace {
21 23
22 #if defined(GOOGLE_CHROME_BUILD) 24 #if defined(GOOGLE_CHROME_BUILD)
23 #include "chrome/browser/autofill/internal/autofill_ie_toolbar_decryption.h" 25 #include "chrome/browser/autofill/internal/autofill_ie_toolbar_decryption.h"
24 #else // defined(GOOGLE_CHROME_BUILD) 26 #else // defined(GOOGLE_CHROME_BUILD)
25 inline std::wstring DecryptCCNumber(const std::wstring& data) { 27 inline std::wstring DecryptCCNumber(const std::wstring& data) {
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 DCHECK(profiles); 172 DCHECK(profiles);
171 DCHECK(credit_cards); 173 DCHECK(credit_cards);
172 174
173 // Create a map of possible fields for a quick access. 175 // Create a map of possible fields for a quick access.
174 RegToFieldMap reg_to_field; 176 RegToFieldMap reg_to_field;
175 for (size_t i = 0; i < arraysize(profile_reg_values); ++i) { 177 for (size_t i = 0; i < arraysize(profile_reg_values); ++i) {
176 reg_to_field[std::wstring(profile_reg_values[i].reg_value_name)] = 178 reg_to_field[std::wstring(profile_reg_values[i].reg_value_name)] =
177 profile_reg_values[i].field_type; 179 profile_reg_values[i].field_type;
178 } 180 }
179 181
180 RegistryKeyIterator iterator_profiles(HKEY_CURRENT_USER, kProfileKey); 182 base::win::RegistryKeyIterator iterator_profiles(HKEY_CURRENT_USER,
183 kProfileKey);
181 for (; iterator_profiles.Valid(); ++iterator_profiles) { 184 for (; iterator_profiles.Valid(); ++iterator_profiles) {
182 std::wstring key_name(kProfileKey); 185 std::wstring key_name(kProfileKey);
183 key_name.append(L"\\"); 186 key_name.append(L"\\");
184 key_name.append(iterator_profiles.Name()); 187 key_name.append(iterator_profiles.Name());
185 RegKey key(HKEY_CURRENT_USER, key_name.c_str(), KEY_READ); 188 RegKey key(HKEY_CURRENT_USER, key_name.c_str(), KEY_READ);
186 AutoFillProfile profile; 189 AutoFillProfile profile;
187 if (ImportSingleProfile(&profile, &key, reg_to_field)) { 190 if (ImportSingleProfile(&profile, &key, reg_to_field)) {
188 // Combine phones into whole phone #. 191 // Combine phones into whole phone #.
189 string16 phone; 192 string16 phone;
190 phone = profile.GetFieldText(AutoFillType(PHONE_HOME_COUNTRY_CODE)); 193 phone = profile.GetFieldText(AutoFillType(PHONE_HOME_COUNTRY_CODE));
(...skipping 10 matching lines...) Expand all
201 string16 password_hash; 204 string16 password_hash;
202 string16 salt; 205 string16 salt;
203 RegKey cc_key(HKEY_CURRENT_USER, kCreditCardKey, KEY_READ); 206 RegKey cc_key(HKEY_CURRENT_USER, kCreditCardKey, KEY_READ);
204 if (cc_key.Valid()) { 207 if (cc_key.Valid()) {
205 password_hash = ReadAndDecryptValue(&cc_key, kPasswordHashValue); 208 password_hash = ReadAndDecryptValue(&cc_key, kPasswordHashValue);
206 salt = ReadAndDecryptValue(&cc_key, kSaltValue); 209 salt = ReadAndDecryptValue(&cc_key, kSaltValue);
207 } 210 }
208 211
209 // We import CC profiles only if they are not password protected. 212 // We import CC profiles only if they are not password protected.
210 if (password_hash.empty() && IsEmptySalt(salt)) { 213 if (password_hash.empty() && IsEmptySalt(salt)) {
211 RegistryKeyIterator iterator_cc(HKEY_CURRENT_USER, kCreditCardKey); 214 base::win::RegistryKeyIterator iterator_cc(HKEY_CURRENT_USER,
215 kCreditCardKey);
212 for (; iterator_cc.Valid(); ++iterator_cc) { 216 for (; iterator_cc.Valid(); ++iterator_cc) {
213 std::wstring key_name(kCreditCardKey); 217 std::wstring key_name(kCreditCardKey);
214 key_name.append(L"\\"); 218 key_name.append(L"\\");
215 key_name.append(iterator_cc.Name()); 219 key_name.append(iterator_cc.Name());
216 RegKey key(HKEY_CURRENT_USER, key_name.c_str(), KEY_READ); 220 RegKey key(HKEY_CURRENT_USER, key_name.c_str(), KEY_READ);
217 CreditCard credit_card; 221 CreditCard credit_card;
218 if (ImportSingleProfile(&credit_card, &key, reg_to_field)) { 222 if (ImportSingleProfile(&credit_card, &key, reg_to_field)) {
219 string16 cc_number = credit_card.GetFieldText( 223 string16 cc_number = credit_card.GetFieldText(
220 AutoFillType(CREDIT_CARD_NUMBER)); 224 AutoFillType(CREDIT_CARD_NUMBER));
221 225
222 if (!cc_number.empty()) { 226 if (!cc_number.empty()) {
223 // No additional password, and CC# is not empty, decrypt CC#. 227 // No additional password, and CC# is not empty, decrypt CC#.
224 cc_number = DecryptCCNumber(cc_number); 228 cc_number = DecryptCCNumber(cc_number);
225 } 229 }
226 credit_card.SetInfo(AutoFillType(CREDIT_CARD_NUMBER), cc_number); 230 credit_card.SetInfo(AutoFillType(CREDIT_CARD_NUMBER), cc_number);
227 if (!cc_number.empty()) 231 if (!cc_number.empty())
228 credit_cards->push_back(credit_card); 232 credit_cards->push_back(credit_card);
229 } 233 }
230 } 234 }
231 } 235 }
232 return (profiles->size() + credit_cards->size()) > 0; 236 return (profiles->size() + credit_cards->size()) > 0;
233 } 237 }
234 238
235 bool ImportAutofillDataWin(PersonalDataManager* pdm) { 239 bool ImportAutofillDataWin(PersonalDataManager* pdm) {
236 AutoFillImporter *importer = new AutoFillImporter(pdm); 240 AutoFillImporter *importer = new AutoFillImporter(pdm);
237 // importer will self delete. 241 // importer will self delete.
238 return importer->ImportProfiles(); 242 return importer->ImportProfiles();
239 } 243 }
240 244
OLDNEW
« no previous file with comments | « chrome/app/breakpad_win.cc ('k') | chrome/browser/autofill/autofill_ie_toolbar_import_win_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698