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

Side by Side Diff: chrome/browser/webdata/web_data_service.cc

Issue 8342048: Make NotificationService an interface in the content namespace, and switch callers to use it. Mov... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/webdata/web_data_service.h" 5 #include "chrome/browser/webdata/web_data_service.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/message_loop.h" 8 #include "base/message_loop.h"
9 #include "base/stl_util.h" 9 #include "base/stl_util.h"
10 #include "base/threading/thread.h" 10 #include "base/threading/thread.h"
11 #include "chrome/browser/autofill/autofill_profile.h" 11 #include "chrome/browser/autofill/autofill_profile.h"
12 #include "chrome/browser/autofill/credit_card.h" 12 #include "chrome/browser/autofill/credit_card.h"
13 #include "chrome/browser/profiles/profile.h" 13 #include "chrome/browser/profiles/profile.h"
14 #include "chrome/browser/search_engines/template_url.h" 14 #include "chrome/browser/search_engines/template_url.h"
15 #include "chrome/browser/ui/profile_error_dialog.h" 15 #include "chrome/browser/ui/profile_error_dialog.h"
16 #include "chrome/browser/webdata/autofill_change.h" 16 #include "chrome/browser/webdata/autofill_change.h"
17 #include "chrome/browser/webdata/autofill_entry.h" 17 #include "chrome/browser/webdata/autofill_entry.h"
18 #include "chrome/browser/webdata/autofill_profile_syncable_service.h" 18 #include "chrome/browser/webdata/autofill_profile_syncable_service.h"
19 #include "chrome/browser/webdata/autofill_table.h" 19 #include "chrome/browser/webdata/autofill_table.h"
20 #include "chrome/browser/webdata/keyword_table.h" 20 #include "chrome/browser/webdata/keyword_table.h"
21 #include "chrome/browser/webdata/logins_table.h" 21 #include "chrome/browser/webdata/logins_table.h"
22 #include "chrome/browser/webdata/token_service_table.h" 22 #include "chrome/browser/webdata/token_service_table.h"
23 #include "chrome/browser/webdata/web_apps_table.h" 23 #include "chrome/browser/webdata/web_apps_table.h"
24 #include "chrome/browser/webdata/web_intents_table.h" 24 #include "chrome/browser/webdata/web_intents_table.h"
25 #include "chrome/browser/webdata/web_database.h" 25 #include "chrome/browser/webdata/web_database.h"
26 #include "chrome/common/chrome_constants.h" 26 #include "chrome/common/chrome_constants.h"
27 #include "chrome/common/chrome_notification_types.h" 27 #include "chrome/common/chrome_notification_types.h"
28 #include "content/common/notification_service.h" 28 #include "content/public/browser/notification_service.h"
29 #include "content/public/browser/notification_details.h" 29 #include "content/public/browser/notification_details.h"
30 #include "content/public/browser/notification_source.h" 30 #include "content/public/browser/notification_source.h"
31 #include "grit/chromium_strings.h" 31 #include "grit/chromium_strings.h"
32 #include "grit/generated_resources.h" 32 #include "grit/generated_resources.h"
33 #include "third_party/skia/include/core/SkBitmap.h" 33 #include "third_party/skia/include/core/SkBitmap.h"
34 #include "webkit/glue/form_field.h" 34 #include "webkit/glue/form_field.h"
35 #include "webkit/glue/password_form.h" 35 #include "webkit/glue/password_form.h"
36 36
37 //////////////////////////////////////////////////////////////////////////////// 37 ////////////////////////////////////////////////////////////////////////////////
38 // 38 //
39 // WebDataService implementation. 39 // WebDataService implementation.
40 // 40 //
41 //////////////////////////////////////////////////////////////////////////////// 41 ////////////////////////////////////////////////////////////////////////////////
42 42
43 using base::Bind; 43 using base::Bind;
44 using base::Time; 44 using base::Time;
45 using webkit_glue::FormField; 45 using webkit_glue::FormField;
46 using webkit_glue::PasswordForm; 46 using webkit_glue::PasswordForm;
47 47
48 namespace { 48 namespace {
49 49
50 // A task used by WebDataService (for Sync mainly) to inform the 50 // A task used by WebDataService (for Sync mainly) to inform the
51 // PersonalDataManager living on the UI thread that it needs to refresh. 51 // PersonalDataManager living on the UI thread that it needs to refresh.
52 void NotifyOfMultipleAutofillChangesTask( 52 void NotifyOfMultipleAutofillChangesTask(
53 const scoped_refptr<WebDataService>& web_data_service) { 53 const scoped_refptr<WebDataService>& web_data_service) {
54 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 54 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
55 55
56 NotificationService::current()->Notify( 56 content::NotificationService::current()->Notify(
57 chrome::NOTIFICATION_AUTOFILL_MULTIPLE_CHANGED, 57 chrome::NOTIFICATION_AUTOFILL_MULTIPLE_CHANGED,
58 content::Source<WebDataService>(web_data_service.get()), 58 content::Source<WebDataService>(web_data_service.get()),
59 NotificationService::NoDetails()); 59 content::NotificationService::NoDetails());
60 } 60 }
61 61
62 } // namespace 62 } // namespace
63 63
64 WDAppImagesResult::WDAppImagesResult() : has_all_images(false) {} 64 WDAppImagesResult::WDAppImagesResult() : has_all_images(false) {}
65 65
66 WDAppImagesResult::~WDAppImagesResult() {} 66 WDAppImagesResult::~WDAppImagesResult() {}
67 67
68 WDKeywordsResult::WDKeywordsResult() 68 WDKeywordsResult::WDKeywordsResult()
69 : default_search_provider_id(0), 69 : default_search_provider_id(0),
(...skipping 564 matching lines...) Expand 10 before | Expand all | Expand 10 after
634 634
635 void WebDataService::InitializeSyncableServices() { 635 void WebDataService::InitializeSyncableServices() {
636 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); 636 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
637 DCHECK(!autofill_profile_syncable_service_); 637 DCHECK(!autofill_profile_syncable_service_);
638 638
639 autofill_profile_syncable_service_ = new AutofillProfileSyncableService(this); 639 autofill_profile_syncable_service_ = new AutofillProfileSyncableService(this);
640 } 640 }
641 641
642 void WebDataService::NotifyDatabaseLoadedOnUIThread() { 642 void WebDataService::NotifyDatabaseLoadedOnUIThread() {
643 // Notify that the database has been initialized. 643 // Notify that the database has been initialized.
644 NotificationService::current()->Notify( 644 content::NotificationService::current()->Notify(
645 chrome::NOTIFICATION_WEB_DATABASE_LOADED, 645 chrome::NOTIFICATION_WEB_DATABASE_LOADED,
646 content::Source<WebDataService>(this), 646 content::Source<WebDataService>(this),
647 NotificationService::NoDetails()); 647 content::NotificationService::NoDetails());
648 } 648 }
649 649
650 void WebDataService::ShutdownDatabase() { 650 void WebDataService::ShutdownDatabase() {
651 should_commit_ = false; 651 should_commit_ = false;
652 652
653 if (db_) { 653 if (db_) {
654 db_->CommitTransaction(); 654 db_->CommitTransaction();
655 delete db_; 655 delete db_;
656 db_ = NULL; 656 db_ = NULL;
657 } 657 }
(...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after
1024 NOTREACHED(); 1024 NOTREACHED();
1025 return; 1025 return;
1026 } 1026 }
1027 request->SetResult( 1027 request->SetResult(
1028 new WDResult<AutofillChangeList>(AUTOFILL_CHANGES, changes)); 1028 new WDResult<AutofillChangeList>(AUTOFILL_CHANGES, changes));
1029 ScheduleCommit(); 1029 ScheduleCommit();
1030 1030
1031 // Post the notifications including the list of affected keys. 1031 // Post the notifications including the list of affected keys.
1032 // This is sent here so that work resulting from this notification will be 1032 // This is sent here so that work resulting from this notification will be
1033 // done on the DB thread, and not the UI thread. 1033 // done on the DB thread, and not the UI thread.
1034 NotificationService::current()->Notify( 1034 content::NotificationService::current()->Notify(
1035 chrome::NOTIFICATION_AUTOFILL_ENTRIES_CHANGED, 1035 chrome::NOTIFICATION_AUTOFILL_ENTRIES_CHANGED,
1036 content::Source<WebDataService>(this), 1036 content::Source<WebDataService>(this),
1037 content::Details<AutofillChangeList>(&changes)); 1037 content::Details<AutofillChangeList>(&changes));
1038 } 1038 }
1039 1039
1040 request->RequestComplete(); 1040 request->RequestComplete();
1041 } 1041 }
1042 1042
1043 void WebDataService::GetFormValuesForElementNameImpl(WebDataRequest* request, 1043 void WebDataService::GetFormValuesForElementNameImpl(WebDataRequest* request,
1044 const string16& name, const string16& prefix, int limit) { 1044 const string16& name, const string16& prefix, int limit) {
(...skipping 15 matching lines...) Expand all
1060 AutofillChangeList changes; 1060 AutofillChangeList changes;
1061 if (db_->GetAutofillTable()->RemoveFormElementsAddedBetween( 1061 if (db_->GetAutofillTable()->RemoveFormElementsAddedBetween(
1062 request->arg1(), request->arg2(), &changes)) { 1062 request->arg1(), request->arg2(), &changes)) {
1063 if (!changes.empty()) { 1063 if (!changes.empty()) {
1064 request->SetResult( 1064 request->SetResult(
1065 new WDResult<AutofillChangeList>(AUTOFILL_CHANGES, changes)); 1065 new WDResult<AutofillChangeList>(AUTOFILL_CHANGES, changes));
1066 1066
1067 // Post the notifications including the list of affected keys. 1067 // Post the notifications including the list of affected keys.
1068 // This is sent here so that work resulting from this notification 1068 // This is sent here so that work resulting from this notification
1069 // will be done on the DB thread, and not the UI thread. 1069 // will be done on the DB thread, and not the UI thread.
1070 NotificationService::current()->Notify( 1070 content::NotificationService::current()->Notify(
1071 chrome::NOTIFICATION_AUTOFILL_ENTRIES_CHANGED, 1071 chrome::NOTIFICATION_AUTOFILL_ENTRIES_CHANGED,
1072 content::Source<WebDataService>(this), 1072 content::Source<WebDataService>(this),
1073 content::Details<AutofillChangeList>(&changes)); 1073 content::Details<AutofillChangeList>(&changes));
1074 } 1074 }
1075 ScheduleCommit(); 1075 ScheduleCommit();
1076 } 1076 }
1077 } 1077 }
1078 request->RequestComplete(); 1078 request->RequestComplete();
1079 } 1079 }
1080 1080
1081 void WebDataService::RemoveFormValueForElementNameImpl( 1081 void WebDataService::RemoveFormValueForElementNameImpl(
1082 GenericRequest2<string16, string16>* request) { 1082 GenericRequest2<string16, string16>* request) {
1083 InitializeDatabaseIfNecessary(); 1083 InitializeDatabaseIfNecessary();
1084 if (db_ && !request->IsCancelled(NULL)) { 1084 if (db_ && !request->IsCancelled(NULL)) {
1085 const string16& name = request->arg1(); 1085 const string16& name = request->arg1();
1086 const string16& value = request->arg2(); 1086 const string16& value = request->arg2();
1087 1087
1088 if (db_->GetAutofillTable()->RemoveFormElement(name, value)) { 1088 if (db_->GetAutofillTable()->RemoveFormElement(name, value)) {
1089 AutofillChangeList changes; 1089 AutofillChangeList changes;
1090 changes.push_back(AutofillChange(AutofillChange::REMOVE, 1090 changes.push_back(AutofillChange(AutofillChange::REMOVE,
1091 AutofillKey(name, value))); 1091 AutofillKey(name, value)));
1092 request->SetResult( 1092 request->SetResult(
1093 new WDResult<AutofillChangeList>(AUTOFILL_CHANGES, changes)); 1093 new WDResult<AutofillChangeList>(AUTOFILL_CHANGES, changes));
1094 ScheduleCommit(); 1094 ScheduleCommit();
1095 1095
1096 // Post the notifications including the list of affected keys. 1096 // Post the notifications including the list of affected keys.
1097 NotificationService::current()->Notify( 1097 content::NotificationService::current()->Notify(
1098 chrome::NOTIFICATION_AUTOFILL_ENTRIES_CHANGED, 1098 chrome::NOTIFICATION_AUTOFILL_ENTRIES_CHANGED,
1099 content::Source<WebDataService>(this), 1099 content::Source<WebDataService>(this),
1100 content::Details<AutofillChangeList>(&changes)); 1100 content::Details<AutofillChangeList>(&changes));
1101 } 1101 }
1102 } 1102 }
1103 request->RequestComplete(); 1103 request->RequestComplete();
1104 } 1104 }
1105 1105
1106 void WebDataService::AddAutofillProfileImpl( 1106 void WebDataService::AddAutofillProfileImpl(
1107 GenericRequest<AutofillProfile>* request) { 1107 GenericRequest<AutofillProfile>* request) {
1108 InitializeDatabaseIfNecessary(); 1108 InitializeDatabaseIfNecessary();
1109 if (db_ && !request->IsCancelled(NULL)) { 1109 if (db_ && !request->IsCancelled(NULL)) {
1110 const AutofillProfile& profile = request->arg(); 1110 const AutofillProfile& profile = request->arg();
1111 if (!db_->GetAutofillTable()->AddAutofillProfile(profile)) { 1111 if (!db_->GetAutofillTable()->AddAutofillProfile(profile)) {
1112 NOTREACHED(); 1112 NOTREACHED();
1113 return; 1113 return;
1114 } 1114 }
1115 ScheduleCommit(); 1115 ScheduleCommit();
1116 1116
1117 // Send GUID-based notification. 1117 // Send GUID-based notification.
1118 AutofillProfileChange change(AutofillProfileChange::ADD, 1118 AutofillProfileChange change(AutofillProfileChange::ADD,
1119 profile.guid(), &profile); 1119 profile.guid(), &profile);
1120 NotificationService::current()->Notify( 1120 content::NotificationService::current()->Notify(
1121 chrome::NOTIFICATION_AUTOFILL_PROFILE_CHANGED, 1121 chrome::NOTIFICATION_AUTOFILL_PROFILE_CHANGED,
1122 content::Source<WebDataService>(this), 1122 content::Source<WebDataService>(this),
1123 content::Details<AutofillProfileChange>(&change)); 1123 content::Details<AutofillProfileChange>(&change));
1124 } 1124 }
1125 request->RequestComplete(); 1125 request->RequestComplete();
1126 } 1126 }
1127 1127
1128 void WebDataService::UpdateAutofillProfileImpl( 1128 void WebDataService::UpdateAutofillProfileImpl(
1129 GenericRequest<AutofillProfile>* request) { 1129 GenericRequest<AutofillProfile>* request) {
1130 InitializeDatabaseIfNecessary(); 1130 InitializeDatabaseIfNecessary();
(...skipping 13 matching lines...) Expand all
1144 1144
1145 if (!db_->GetAutofillTable()->UpdateAutofillProfileMulti(profile)) { 1145 if (!db_->GetAutofillTable()->UpdateAutofillProfileMulti(profile)) {
1146 NOTREACHED(); 1146 NOTREACHED();
1147 return; 1147 return;
1148 } 1148 }
1149 ScheduleCommit(); 1149 ScheduleCommit();
1150 1150
1151 // Send GUID-based notification. 1151 // Send GUID-based notification.
1152 AutofillProfileChange change(AutofillProfileChange::UPDATE, 1152 AutofillProfileChange change(AutofillProfileChange::UPDATE,
1153 profile.guid(), &profile); 1153 profile.guid(), &profile);
1154 NotificationService::current()->Notify( 1154 content::NotificationService::current()->Notify(
1155 chrome::NOTIFICATION_AUTOFILL_PROFILE_CHANGED, 1155 chrome::NOTIFICATION_AUTOFILL_PROFILE_CHANGED,
1156 content::Source<WebDataService>(this), 1156 content::Source<WebDataService>(this),
1157 content::Details<AutofillProfileChange>(&change)); 1157 content::Details<AutofillProfileChange>(&change));
1158 } 1158 }
1159 request->RequestComplete(); 1159 request->RequestComplete();
1160 } 1160 }
1161 1161
1162 void WebDataService::RemoveAutofillProfileImpl( 1162 void WebDataService::RemoveAutofillProfileImpl(
1163 GenericRequest<std::string>* request) { 1163 GenericRequest<std::string>* request) {
1164 InitializeDatabaseIfNecessary(); 1164 InitializeDatabaseIfNecessary();
1165 if (db_ && !request->IsCancelled(NULL)) { 1165 if (db_ && !request->IsCancelled(NULL)) {
1166 const std::string& guid = request->arg(); 1166 const std::string& guid = request->arg();
1167 1167
1168 AutofillProfile* profile = NULL; 1168 AutofillProfile* profile = NULL;
1169 if (!db_->GetAutofillTable()->GetAutofillProfile(guid, &profile)) { 1169 if (!db_->GetAutofillTable()->GetAutofillProfile(guid, &profile)) {
1170 NOTREACHED(); 1170 NOTREACHED();
1171 return; 1171 return;
1172 } 1172 }
1173 scoped_ptr<AutofillProfile> scoped_profile(profile); 1173 scoped_ptr<AutofillProfile> scoped_profile(profile);
1174 1174
1175 if (!db_->GetAutofillTable()->RemoveAutofillProfile(guid)) { 1175 if (!db_->GetAutofillTable()->RemoveAutofillProfile(guid)) {
1176 NOTREACHED(); 1176 NOTREACHED();
1177 return; 1177 return;
1178 } 1178 }
1179 ScheduleCommit(); 1179 ScheduleCommit();
1180 1180
1181 // Send GUID-based notification. 1181 // Send GUID-based notification.
1182 AutofillProfileChange change(AutofillProfileChange::REMOVE, guid, NULL); 1182 AutofillProfileChange change(AutofillProfileChange::REMOVE, guid, NULL);
1183 NotificationService::current()->Notify( 1183 content::NotificationService::current()->Notify(
1184 chrome::NOTIFICATION_AUTOFILL_PROFILE_CHANGED, 1184 chrome::NOTIFICATION_AUTOFILL_PROFILE_CHANGED,
1185 content::Source<WebDataService>(this), 1185 content::Source<WebDataService>(this),
1186 content::Details<AutofillProfileChange>(&change)); 1186 content::Details<AutofillProfileChange>(&change));
1187 } 1187 }
1188 request->RequestComplete(); 1188 request->RequestComplete();
1189 } 1189 }
1190 1190
1191 void WebDataService::GetAutofillProfilesImpl(WebDataRequest* request) { 1191 void WebDataService::GetAutofillProfilesImpl(WebDataRequest* request) {
1192 InitializeDatabaseIfNecessary(); 1192 InitializeDatabaseIfNecessary();
1193 if (db_ && !request->IsCancelled(NULL)) { 1193 if (db_ && !request->IsCancelled(NULL)) {
(...skipping 16 matching lines...) Expand all
1210 if (!db_->GetAutofillTable()->GetAutofillProfilesInTrash(&guids)) { 1210 if (!db_->GetAutofillTable()->GetAutofillProfilesInTrash(&guids)) {
1211 NOTREACHED(); 1211 NOTREACHED();
1212 return; 1212 return;
1213 } 1213 }
1214 1214
1215 for (std::vector<std::string>::const_iterator iter = guids.begin(); 1215 for (std::vector<std::string>::const_iterator iter = guids.begin();
1216 iter != guids.end(); ++iter) { 1216 iter != guids.end(); ++iter) {
1217 // Send GUID-based notification. 1217 // Send GUID-based notification.
1218 AutofillProfileChange change(AutofillProfileChange::REMOVE, 1218 AutofillProfileChange change(AutofillProfileChange::REMOVE,
1219 *iter, NULL); 1219 *iter, NULL);
1220 NotificationService::current()->Notify( 1220 content::NotificationService::current()->Notify(
1221 chrome::NOTIFICATION_AUTOFILL_PROFILE_CHANGED, 1221 chrome::NOTIFICATION_AUTOFILL_PROFILE_CHANGED,
1222 content::Source<WebDataService>(this), 1222 content::Source<WebDataService>(this),
1223 content::Details<AutofillProfileChange>(&change)); 1223 content::Details<AutofillProfileChange>(&change));
1224 } 1224 }
1225 1225
1226 // If we trashed any profiles they may have been merged, so send out 1226 // If we trashed any profiles they may have been merged, so send out
1227 // update notifications as well. 1227 // update notifications as well.
1228 if (!guids.empty()) { 1228 if (!guids.empty()) {
1229 std::vector<AutofillProfile*> profiles; 1229 std::vector<AutofillProfile*> profiles;
1230 db_->GetAutofillTable()->GetAutofillProfiles(&profiles); 1230 db_->GetAutofillTable()->GetAutofillProfiles(&profiles);
1231 for (std::vector<AutofillProfile*>::const_iterator 1231 for (std::vector<AutofillProfile*>::const_iterator
1232 iter = profiles.begin(); 1232 iter = profiles.begin();
1233 iter != profiles.end(); ++iter) { 1233 iter != profiles.end(); ++iter) {
1234 AutofillProfileChange change(AutofillProfileChange::UPDATE, 1234 AutofillProfileChange change(AutofillProfileChange::UPDATE,
1235 (*iter)->guid(), *iter); 1235 (*iter)->guid(), *iter);
1236 NotificationService::current()->Notify( 1236 content::NotificationService::current()->Notify(
1237 chrome::NOTIFICATION_AUTOFILL_PROFILE_CHANGED, 1237 chrome::NOTIFICATION_AUTOFILL_PROFILE_CHANGED,
1238 content::Source<WebDataService>(this), 1238 content::Source<WebDataService>(this),
1239 content::Details<AutofillProfileChange>(&change)); 1239 content::Details<AutofillProfileChange>(&change));
1240 } 1240 }
1241 STLDeleteElements(&profiles); 1241 STLDeleteElements(&profiles);
1242 } 1242 }
1243 } 1243 }
1244 1244
1245 if (!db_->GetAutofillTable()->EmptyAutofillProfilesTrash()) { 1245 if (!db_->GetAutofillTable()->EmptyAutofillProfilesTrash()) {
1246 NOTREACHED(); 1246 NOTREACHED();
(...skipping 11 matching lines...) Expand all
1258 const CreditCard& credit_card = request->arg(); 1258 const CreditCard& credit_card = request->arg();
1259 if (!db_->GetAutofillTable()->AddCreditCard(credit_card)) { 1259 if (!db_->GetAutofillTable()->AddCreditCard(credit_card)) {
1260 NOTREACHED(); 1260 NOTREACHED();
1261 return; 1261 return;
1262 } 1262 }
1263 ScheduleCommit(); 1263 ScheduleCommit();
1264 1264
1265 // Send GUID-based notification. 1265 // Send GUID-based notification.
1266 AutofillCreditCardChange change(AutofillCreditCardChange::ADD, 1266 AutofillCreditCardChange change(AutofillCreditCardChange::ADD,
1267 credit_card.guid(), &credit_card); 1267 credit_card.guid(), &credit_card);
1268 NotificationService::current()->Notify( 1268 content::NotificationService::current()->Notify(
1269 chrome::NOTIFICATION_AUTOFILL_CREDIT_CARD_CHANGED, 1269 chrome::NOTIFICATION_AUTOFILL_CREDIT_CARD_CHANGED,
1270 content::Source<WebDataService>(this), 1270 content::Source<WebDataService>(this),
1271 content::Details<AutofillCreditCardChange>(&change)); 1271 content::Details<AutofillCreditCardChange>(&change));
1272 } 1272 }
1273 request->RequestComplete(); 1273 request->RequestComplete();
1274 } 1274 }
1275 1275
1276 void WebDataService::UpdateCreditCardImpl( 1276 void WebDataService::UpdateCreditCardImpl(
1277 GenericRequest<CreditCard>* request) { 1277 GenericRequest<CreditCard>* request) {
1278 InitializeDatabaseIfNecessary(); 1278 InitializeDatabaseIfNecessary();
(...skipping 12 matching lines...) Expand all
1291 1291
1292 if (!db_->GetAutofillTable()->UpdateCreditCard(credit_card)) { 1292 if (!db_->GetAutofillTable()->UpdateCreditCard(credit_card)) {
1293 NOTREACHED(); 1293 NOTREACHED();
1294 return; 1294 return;
1295 } 1295 }
1296 ScheduleCommit(); 1296 ScheduleCommit();
1297 1297
1298 // Send GUID-based notification. 1298 // Send GUID-based notification.
1299 AutofillCreditCardChange change(AutofillCreditCardChange::UPDATE, 1299 AutofillCreditCardChange change(AutofillCreditCardChange::UPDATE,
1300 credit_card.guid(), &credit_card); 1300 credit_card.guid(), &credit_card);
1301 NotificationService::current()->Notify( 1301 content::NotificationService::current()->Notify(
1302 chrome::NOTIFICATION_AUTOFILL_CREDIT_CARD_CHANGED, 1302 chrome::NOTIFICATION_AUTOFILL_CREDIT_CARD_CHANGED,
1303 content::Source<WebDataService>(this), 1303 content::Source<WebDataService>(this),
1304 content::Details<AutofillCreditCardChange>(&change)); 1304 content::Details<AutofillCreditCardChange>(&change));
1305 } 1305 }
1306 request->RequestComplete(); 1306 request->RequestComplete();
1307 } 1307 }
1308 1308
1309 void WebDataService::RemoveCreditCardImpl( 1309 void WebDataService::RemoveCreditCardImpl(
1310 GenericRequest<std::string>* request) { 1310 GenericRequest<std::string>* request) {
1311 InitializeDatabaseIfNecessary(); 1311 InitializeDatabaseIfNecessary();
1312 if (db_ && !request->IsCancelled(NULL)) { 1312 if (db_ && !request->IsCancelled(NULL)) {
1313 const std::string& guid = request->arg(); 1313 const std::string& guid = request->arg();
1314 if (!db_->GetAutofillTable()->RemoveCreditCard(guid)) { 1314 if (!db_->GetAutofillTable()->RemoveCreditCard(guid)) {
1315 NOTREACHED(); 1315 NOTREACHED();
1316 return; 1316 return;
1317 } 1317 }
1318 ScheduleCommit(); 1318 ScheduleCommit();
1319 1319
1320 // Send GUID-based notification. 1320 // Send GUID-based notification.
1321 AutofillCreditCardChange change(AutofillCreditCardChange::REMOVE, guid, 1321 AutofillCreditCardChange change(AutofillCreditCardChange::REMOVE, guid,
1322 NULL); 1322 NULL);
1323 NotificationService::current()->Notify( 1323 content::NotificationService::current()->Notify(
1324 chrome::NOTIFICATION_AUTOFILL_CREDIT_CARD_CHANGED, 1324 chrome::NOTIFICATION_AUTOFILL_CREDIT_CARD_CHANGED,
1325 content::Source<WebDataService>(this), 1325 content::Source<WebDataService>(this),
1326 content::Details<AutofillCreditCardChange>(&change)); 1326 content::Details<AutofillCreditCardChange>(&change));
1327 } 1327 }
1328 request->RequestComplete(); 1328 request->RequestComplete();
1329 } 1329 }
1330 1330
1331 void WebDataService::GetCreditCardsImpl(WebDataRequest* request) { 1331 void WebDataService::GetCreditCardsImpl(WebDataRequest* request) {
1332 InitializeDatabaseIfNecessary(); 1332 InitializeDatabaseIfNecessary();
1333 if (db_ && !request->IsCancelled(NULL)) { 1333 if (db_ && !request->IsCancelled(NULL)) {
(...skipping 15 matching lines...) Expand all
1349 if (db_->GetAutofillTable()-> 1349 if (db_->GetAutofillTable()->
1350 RemoveAutofillProfilesAndCreditCardsModifiedBetween( 1350 RemoveAutofillProfilesAndCreditCardsModifiedBetween(
1351 request->arg1(), 1351 request->arg1(),
1352 request->arg2(), 1352 request->arg2(),
1353 &profile_guids, 1353 &profile_guids,
1354 &credit_card_guids)) { 1354 &credit_card_guids)) {
1355 for (std::vector<std::string>::iterator iter = profile_guids.begin(); 1355 for (std::vector<std::string>::iterator iter = profile_guids.begin();
1356 iter != profile_guids.end(); ++iter) { 1356 iter != profile_guids.end(); ++iter) {
1357 AutofillProfileChange change(AutofillProfileChange::REMOVE, *iter, 1357 AutofillProfileChange change(AutofillProfileChange::REMOVE, *iter,
1358 NULL); 1358 NULL);
1359 NotificationService::current()->Notify( 1359 content::NotificationService::current()->Notify(
1360 chrome::NOTIFICATION_AUTOFILL_PROFILE_CHANGED, 1360 chrome::NOTIFICATION_AUTOFILL_PROFILE_CHANGED,
1361 content::Source<WebDataService>(this), 1361 content::Source<WebDataService>(this),
1362 content::Details<AutofillProfileChange>(&change)); 1362 content::Details<AutofillProfileChange>(&change));
1363 } 1363 }
1364 1364
1365 for (std::vector<std::string>::iterator iter = credit_card_guids.begin(); 1365 for (std::vector<std::string>::iterator iter = credit_card_guids.begin();
1366 iter != credit_card_guids.end(); ++iter) { 1366 iter != credit_card_guids.end(); ++iter) {
1367 AutofillCreditCardChange change(AutofillCreditCardChange::REMOVE, 1367 AutofillCreditCardChange change(AutofillCreditCardChange::REMOVE,
1368 *iter, NULL); 1368 *iter, NULL);
1369 NotificationService::current()->Notify( 1369 content::NotificationService::current()->Notify(
1370 chrome::NOTIFICATION_AUTOFILL_CREDIT_CARD_CHANGED, 1370 chrome::NOTIFICATION_AUTOFILL_CREDIT_CARD_CHANGED,
1371 content::Source<WebDataService>(this), 1371 content::Source<WebDataService>(this),
1372 content::Details<AutofillCreditCardChange>(&change)); 1372 content::Details<AutofillCreditCardChange>(&change));
1373 } 1373 }
1374 // Note: It is the caller's responsibility to post notifications for any 1374 // Note: It is the caller's responsibility to post notifications for any
1375 // changes, e.g. by calling the Refresh() method of PersonalDataManager. 1375 // changes, e.g. by calling the Refresh() method of PersonalDataManager.
1376 ScheduleCommit(); 1376 ScheduleCommit();
1377 } 1377 }
1378 } 1378 }
1379 request->RequestComplete(); 1379 request->RequestComplete();
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
1431 } 1431 }
1432 1432
1433 const WDTypedResult* WebDataService::WebDataRequest::GetResult() const { 1433 const WDTypedResult* WebDataService::WebDataRequest::GetResult() const {
1434 return result_; 1434 return result_;
1435 } 1435 }
1436 1436
1437 void WebDataService::WebDataRequest::RequestComplete() { 1437 void WebDataService::WebDataRequest::RequestComplete() {
1438 message_loop_->PostTask(FROM_HERE, Bind(&WebDataService::RequestCompleted, 1438 message_loop_->PostTask(FROM_HERE, Bind(&WebDataService::RequestCompleted,
1439 service_.get(), handle_)); 1439 service_.get(), handle_));
1440 } 1440 }
OLDNEW
« no previous file with comments | « chrome/browser/webdata/autofill_profile_syncable_service.cc ('k') | chrome/browser/webdata/web_data_service_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698