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

Side by Side Diff: chrome/browser/sync/glue/autofill_change_processor.cc

Issue 8341094: Changed change processors to use ScopedStopObserving (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Removed unnecessary call to StartObserving(). Created 9 years, 1 month 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/sync/glue/autofill_change_processor.h" 5 #include "chrome/browser/sync/glue/autofill_change_processor.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/location.h" 10 #include "base/location.h"
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 sync_node.Remove(); 189 sync_node.Remove();
190 } 190 }
191 } 191 }
192 192
193 void AutofillChangeProcessor::ApplyChangesFromSyncModel( 193 void AutofillChangeProcessor::ApplyChangesFromSyncModel(
194 const sync_api::BaseTransaction* trans, 194 const sync_api::BaseTransaction* trans,
195 const sync_api::ImmutableChangeRecordList& changes) { 195 const sync_api::ImmutableChangeRecordList& changes) {
196 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); 196 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
197 if (!running()) 197 if (!running())
198 return; 198 return;
199 StopObserving(); 199 ScopedStopObserving<AutofillChangeProcessor> stop_observing(this);
200 200
201 sync_api::ReadNode autofill_root(trans); 201 sync_api::ReadNode autofill_root(trans);
202 if (!autofill_root.InitByTagLookup(kAutofillTag)) { 202 if (!autofill_root.InitByTagLookup(kAutofillTag)) {
203 error_handler()->OnUnrecoverableError(FROM_HERE, 203 error_handler()->OnUnrecoverableError(FROM_HERE,
204 "Autofill root node lookup failed."); 204 "Autofill root node lookup failed.");
205 return; 205 return;
206 } 206 }
207 207
208 for (sync_api::ChangeRecordList::const_iterator it = 208 for (sync_api::ChangeRecordList::const_iterator it =
209 changes.Get().begin(); it != changes.Get().end(); ++it) { 209 changes.Get().begin(); it != changes.Get().end(); ++it) {
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 int64 sync_id = sync_node.GetId(); 242 int64 sync_id = sync_node.GetId();
243 if (autofill.has_value()) { 243 if (autofill.has_value()) {
244 autofill_changes_.push_back(AutofillChangeRecord(it->action, 244 autofill_changes_.push_back(AutofillChangeRecord(it->action,
245 sync_id, autofill)); 245 sync_id, autofill));
246 } else if (autofill.has_profile()) { 246 } else if (autofill.has_profile()) {
247 LOG(WARNING) << "Change for old-style autofill profile being dropped!"; 247 LOG(WARNING) << "Change for old-style autofill profile being dropped!";
248 } else { 248 } else {
249 NOTREACHED() << "Autofill specifics has no data!"; 249 NOTREACHED() << "Autofill specifics has no data!";
250 } 250 }
251 } 251 }
252
253 StartObserving();
254 } 252 }
255 253
256 void AutofillChangeProcessor::CommitChangesFromSyncModel() { 254 void AutofillChangeProcessor::CommitChangesFromSyncModel() {
257 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); 255 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
258 if (!running()) 256 if (!running())
259 return; 257 return;
260 StopObserving(); 258 ScopedStopObserving<AutofillChangeProcessor> stop_observing(this);
261 259
262 std::vector<AutofillEntry> new_entries; 260 std::vector<AutofillEntry> new_entries;
263 for (unsigned int i = 0; i < autofill_changes_.size(); i++) { 261 for (unsigned int i = 0; i < autofill_changes_.size(); i++) {
264 // Handle deletions. 262 // Handle deletions.
265 if (sync_api::ChangeRecord::ACTION_DELETE == 263 if (sync_api::ChangeRecord::ACTION_DELETE ==
266 autofill_changes_[i].action_) { 264 autofill_changes_[i].action_) {
267 if (autofill_changes_[i].autofill_.has_value()) { 265 if (autofill_changes_[i].autofill_.has_value()) {
268 ApplySyncAutofillEntryDelete(autofill_changes_[i].autofill_); 266 ApplySyncAutofillEntryDelete(autofill_changes_[i].autofill_);
269 } else if (autofill_changes_[i].autofill_.has_profile()) { 267 } else if (autofill_changes_[i].autofill_.has_profile()) {
270 ApplySyncAutofillProfileDelete(autofill_changes_[i].id_); 268 ApplySyncAutofillProfileDelete(autofill_changes_[i].id_);
(...skipping 22 matching lines...) Expand all
293 // Make changes 291 // Make changes
294 if (!web_database_->GetAutofillTable()->UpdateAutofillEntries(new_entries)) { 292 if (!web_database_->GetAutofillTable()->UpdateAutofillEntries(new_entries)) {
295 error_handler()->OnUnrecoverableError(FROM_HERE, 293 error_handler()->OnUnrecoverableError(FROM_HERE,
296 "Could not update autofill entries."); 294 "Could not update autofill entries.");
297 return; 295 return;
298 } 296 }
299 297
300 WebDataService::NotifyOfMultipleAutofillChanges( 298 WebDataService::NotifyOfMultipleAutofillChanges(
301 profile_->GetWebDataService(Profile::EXPLICIT_ACCESS)); 299 profile_->GetWebDataService(Profile::EXPLICIT_ACCESS));
302 300
303 StartObserving();
304 } 301 }
305 302
306 void AutofillChangeProcessor::ApplySyncAutofillEntryDelete( 303 void AutofillChangeProcessor::ApplySyncAutofillEntryDelete(
307 const sync_pb::AutofillSpecifics& autofill) { 304 const sync_pb::AutofillSpecifics& autofill) {
308 if (!web_database_->GetAutofillTable()->RemoveFormElement( 305 if (!web_database_->GetAutofillTable()->RemoveFormElement(
309 UTF8ToUTF16(autofill.name()), UTF8ToUTF16(autofill.value()))) { 306 UTF8ToUTF16(autofill.name()), UTF8ToUTF16(autofill.value()))) {
310 error_handler()->OnUnrecoverableError(FROM_HERE, 307 error_handler()->OnUnrecoverableError(FROM_HERE,
311 "Could not remove autofill node."); 308 "Could not remove autofill node.");
312 return; 309 return;
313 } 310 }
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
439 autofill.set_value(UTF16ToUTF8(entry.key().value())); 436 autofill.set_value(UTF16ToUTF8(entry.key().value()));
440 const std::vector<base::Time>& ts(entry.timestamps()); 437 const std::vector<base::Time>& ts(entry.timestamps());
441 for (std::vector<base::Time>::const_iterator timestamp = ts.begin(); 438 for (std::vector<base::Time>::const_iterator timestamp = ts.begin();
442 timestamp != ts.end(); ++timestamp) { 439 timestamp != ts.end(); ++timestamp) {
443 autofill.add_usage_timestamp(timestamp->ToInternalValue()); 440 autofill.add_usage_timestamp(timestamp->ToInternalValue());
444 } 441 }
445 node->SetAutofillSpecifics(autofill); 442 node->SetAutofillSpecifics(autofill);
446 } 443 }
447 444
448 } // namespace browser_sync 445 } // namespace browser_sync
OLDNEW
« no previous file with comments | « chrome/browser/sync/glue/autofill_change_processor.h ('k') | chrome/browser/sync/glue/password_change_processor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698