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

Side by Side Diff: chrome/browser/history/delete_directive_handler.cc

Issue 15701022: [Sync] Add support for sync Persistence Errors (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Move bookmark change into separate patch Created 7 years, 5 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) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 #include "chrome/browser/history/delete_directive_handler.h" 5 #include "chrome/browser/history/delete_directive_handler.h"
6 6
7 #include "base/json/json_writer.h" 7 #include "base/json/json_writer.h"
8 #include "base/rand_util.h" 8 #include "base/rand_util.h"
9 #include "base/time/time.h" 9 #include "base/time/time.h"
10 #include "base/values.h" 10 #include "base/values.h"
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after
337 syncer::SyncError error = ProcessLocalDeleteDirective(delete_directive); 337 syncer::SyncError error = ProcessLocalDeleteDirective(delete_directive);
338 return !error.IsSet(); 338 return !error.IsSet();
339 } 339 }
340 340
341 syncer::SyncError DeleteDirectiveHandler::ProcessLocalDeleteDirective( 341 syncer::SyncError DeleteDirectiveHandler::ProcessLocalDeleteDirective(
342 const sync_pb::HistoryDeleteDirectiveSpecifics& delete_directive) { 342 const sync_pb::HistoryDeleteDirectiveSpecifics& delete_directive) {
343 DCHECK(thread_checker_.CalledOnValidThread()); 343 DCHECK(thread_checker_.CalledOnValidThread());
344 if (!sync_processor_) { 344 if (!sync_processor_) {
345 return syncer::SyncError( 345 return syncer::SyncError(
346 FROM_HERE, 346 FROM_HERE,
347 syncer::SyncError::DATATYPE_ERROR,
347 "Cannot send local delete directive to sync", 348 "Cannot send local delete directive to sync",
348 syncer::HISTORY_DELETE_DIRECTIVES); 349 syncer::HISTORY_DELETE_DIRECTIVES);
349 } 350 }
350 #if !defined(NDEBUG) 351 #if !defined(NDEBUG)
351 CheckDeleteDirectiveValid(delete_directive); 352 CheckDeleteDirectiveValid(delete_directive);
352 #endif 353 #endif
353 354
354 // Generate a random sync tag since history delete directives don't 355 // Generate a random sync tag since history delete directives don't
355 // have a 'built-in' ID. 8 bytes should suffice. 356 // have a 'built-in' ID. 8 bytes should suffice.
356 std::string sync_tag = base::RandBytesAsString(8); 357 std::string sync_tag = base::RandBytesAsString(8);
357 sync_pb::EntitySpecifics entity_specifics; 358 sync_pb::EntitySpecifics entity_specifics;
358 entity_specifics.mutable_history_delete_directive()->CopyFrom( 359 entity_specifics.mutable_history_delete_directive()->CopyFrom(
359 delete_directive); 360 delete_directive);
360 syncer::SyncData sync_data = 361 syncer::SyncData sync_data =
361 syncer::SyncData::CreateLocalData( 362 syncer::SyncData::CreateLocalData(
362 sync_tag, sync_tag, entity_specifics); 363 sync_tag, sync_tag, entity_specifics);
363 syncer::SyncChange change( 364 syncer::SyncChange change(
364 FROM_HERE, syncer::SyncChange::ACTION_ADD, sync_data); 365 FROM_HERE, syncer::SyncChange::ACTION_ADD, sync_data);
365 syncer::SyncChangeList changes(1, change); 366 syncer::SyncChangeList changes(1, change);
366 return sync_processor_->ProcessSyncChanges(FROM_HERE, changes); 367 return sync_processor_->ProcessSyncChanges(FROM_HERE, changes);
367 } 368 }
368 369
369 syncer::SyncError DeleteDirectiveHandler::ProcessSyncChanges( 370 syncer::SyncError DeleteDirectiveHandler::ProcessSyncChanges(
370 HistoryService* history_service, 371 HistoryService* history_service,
371 const syncer::SyncChangeList& change_list) { 372 const syncer::SyncChangeList& change_list) {
372 DCHECK(thread_checker_.CalledOnValidThread()); 373 DCHECK(thread_checker_.CalledOnValidThread());
373 if (!sync_processor_) { 374 if (!sync_processor_) {
374 return syncer::SyncError( 375 return syncer::SyncError(
375 FROM_HERE, "Sync is disabled.", syncer::HISTORY_DELETE_DIRECTIVES); 376 FROM_HERE,
377 syncer::SyncError::DATATYPE_ERROR,
378 "Sync is disabled.",
379 syncer::HISTORY_DELETE_DIRECTIVES);
376 } 380 }
377 381
378 syncer::SyncDataList delete_directives; 382 syncer::SyncDataList delete_directives;
379 for (syncer::SyncChangeList::const_iterator it = change_list.begin(); 383 for (syncer::SyncChangeList::const_iterator it = change_list.begin();
380 it != change_list.end(); ++it) { 384 it != change_list.end(); ++it) {
381 switch (it->change_type()) { 385 switch (it->change_type()) {
382 case syncer::SyncChange::ACTION_ADD: 386 case syncer::SyncChange::ACTION_ADD:
383 delete_directives.push_back(it->sync_data()); 387 delete_directives.push_back(it->sync_data());
384 break; 388 break;
385 case syncer::SyncChange::ACTION_DELETE: 389 case syncer::SyncChange::ACTION_DELETE:
(...skipping 30 matching lines...) Expand all
416 for (size_t i = 0; i < delete_directives.size(); ++i) { 420 for (size_t i = 0; i < delete_directives.size(); ++i) {
417 change_list.push_back( 421 change_list.push_back(
418 syncer::SyncChange(FROM_HERE, syncer::SyncChange::ACTION_DELETE, 422 syncer::SyncChange(FROM_HERE, syncer::SyncChange::ACTION_DELETE,
419 delete_directives[i])); 423 delete_directives[i]));
420 } 424 }
421 sync_processor_->ProcessSyncChanges(FROM_HERE, change_list); 425 sync_processor_->ProcessSyncChanges(FROM_HERE, change_list);
422 } 426 }
423 } 427 }
424 428
425 } // namespace history 429 } // namespace history
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698