| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/generic_change_processor.h" | 5 #include "chrome/browser/sync/glue/generic_change_processor.h" |
| 6 | 6 |
| 7 #include "base/location.h" | 7 #include "base/location.h" |
| 8 #include "base/strings/string_number_conversions.h" | 8 #include "base/strings/string_number_conversions.h" |
| 9 #include "base/utf_string_conversions.h" | 9 #include "base/utf_string_conversions.h" |
| 10 #include "content/public/browser/browser_thread.h" | 10 #include "content/public/browser/browser_thread.h" |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 74 syncer::SyncData::CreateRemoteData( | 74 syncer::SyncData::CreateRemoteData( |
| 75 it->id, read_node.GetEntitySpecifics()))); | 75 it->id, read_node.GetEntitySpecifics()))); |
| 76 } | 76 } |
| 77 } | 77 } |
| 78 } | 78 } |
| 79 | 79 |
| 80 void GenericChangeProcessor::CommitChangesFromSyncModel() { | 80 void GenericChangeProcessor::CommitChangesFromSyncModel() { |
| 81 DCHECK(CalledOnValidThread()); | 81 DCHECK(CalledOnValidThread()); |
| 82 if (syncer_changes_.empty()) | 82 if (syncer_changes_.empty()) |
| 83 return; | 83 return; |
| 84 if (!local_service_) { | 84 if (!local_service_.get()) { |
| 85 syncer::ModelType type = syncer_changes_[0].sync_data().GetDataType(); | 85 syncer::ModelType type = syncer_changes_[0].sync_data().GetDataType(); |
| 86 syncer::SyncError error(FROM_HERE, "Local service destroyed.", type); | 86 syncer::SyncError error(FROM_HERE, "Local service destroyed.", type); |
| 87 error_handler()->OnSingleDatatypeUnrecoverableError(error.location(), | 87 error_handler()->OnSingleDatatypeUnrecoverableError(error.location(), |
| 88 error.message()); | 88 error.message()); |
| 89 return; | 89 return; |
| 90 } | 90 } |
| 91 syncer::SyncError error = local_service_->ProcessSyncChanges(FROM_HERE, | 91 syncer::SyncError error = local_service_->ProcessSyncChanges(FROM_HERE, |
| 92 syncer_changes_); | 92 syncer_changes_); |
| 93 syncer_changes_.clear(); | 93 syncer_changes_.clear(); |
| 94 if (error.IsSet()) { | 94 if (error.IsSet()) { |
| (...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 278 std::string type_str = syncer::ModelTypeToString(type); | 278 std::string type_str = syncer::ModelTypeToString(type); |
| 279 syncer::WriteNode sync_node(&trans); | 279 syncer::WriteNode sync_node(&trans); |
| 280 if (change.change_type() == syncer::SyncChange::ACTION_DELETE) { | 280 if (change.change_type() == syncer::SyncChange::ACTION_DELETE) { |
| 281 syncer::SyncError error = | 281 syncer::SyncError error = |
| 282 AttemptDelete(change, type, type_str, &sync_node, | 282 AttemptDelete(change, type, type_str, &sync_node, |
| 283 error_handler()); | 283 error_handler()); |
| 284 if (error.IsSet()) { | 284 if (error.IsSet()) { |
| 285 NOTREACHED(); | 285 NOTREACHED(); |
| 286 return error; | 286 return error; |
| 287 } | 287 } |
| 288 if (merge_result_) { | 288 if (merge_result_.get()) { |
| 289 merge_result_->set_num_items_deleted( | 289 merge_result_->set_num_items_deleted( |
| 290 merge_result_->num_items_deleted() + 1); | 290 merge_result_->num_items_deleted() + 1); |
| 291 } | 291 } |
| 292 } else if (change.change_type() == syncer::SyncChange::ACTION_ADD) { | 292 } else if (change.change_type() == syncer::SyncChange::ACTION_ADD) { |
| 293 // TODO(sync): Handle other types of creation (custom parents, folders, | 293 // TODO(sync): Handle other types of creation (custom parents, folders, |
| 294 // etc.). | 294 // etc.). |
| 295 syncer::ReadNode root_node(&trans); | 295 syncer::ReadNode root_node(&trans); |
| 296 if (root_node.InitByTagLookup( | 296 if (root_node.InitByTagLookup( |
| 297 syncer::ModelTypeToRootTag(change.sync_data().GetDataType())) != | 297 syncer::ModelTypeToRootTag(change.sync_data().GetDataType())) != |
| 298 syncer::BaseNode::INIT_OK) { | 298 syncer::BaseNode::INIT_OK) { |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 352 error.Reset(FROM_HERE, error_prefix + "unknown error", type); | 352 error.Reset(FROM_HERE, error_prefix + "unknown error", type); |
| 353 error_handler()->OnSingleDatatypeUnrecoverableError( | 353 error_handler()->OnSingleDatatypeUnrecoverableError( |
| 354 FROM_HERE, error.message()); | 354 FROM_HERE, error.message()); |
| 355 LOG(ERROR) << "Create: Unknown error."; | 355 LOG(ERROR) << "Create: Unknown error."; |
| 356 return error; | 356 return error; |
| 357 } | 357 } |
| 358 } | 358 } |
| 359 } | 359 } |
| 360 sync_node.SetTitle(UTF8ToWide(change.sync_data().GetTitle())); | 360 sync_node.SetTitle(UTF8ToWide(change.sync_data().GetTitle())); |
| 361 sync_node.SetEntitySpecifics(change.sync_data().GetSpecifics()); | 361 sync_node.SetEntitySpecifics(change.sync_data().GetSpecifics()); |
| 362 if (merge_result_) { | 362 if (merge_result_.get()) { |
| 363 merge_result_->set_num_items_added( | 363 merge_result_->set_num_items_added(merge_result_->num_items_added() + |
| 364 merge_result_->num_items_added() + 1); | 364 1); |
| 365 } | 365 } |
| 366 } else if (change.change_type() == syncer::SyncChange::ACTION_UPDATE) { | 366 } else if (change.change_type() == syncer::SyncChange::ACTION_UPDATE) { |
| 367 // TODO(zea): consider having this logic for all possible changes? | 367 // TODO(zea): consider having this logic for all possible changes? |
| 368 syncer::BaseNode::InitByLookupResult result = | 368 syncer::BaseNode::InitByLookupResult result = |
| 369 sync_node.InitByClientTagLookup(change.sync_data().GetDataType(), | 369 sync_node.InitByClientTagLookup(change.sync_data().GetDataType(), |
| 370 change.sync_data().GetTag()); | 370 change.sync_data().GetTag()); |
| 371 if (result != syncer::BaseNode::INIT_OK) { | 371 if (result != syncer::BaseNode::INIT_OK) { |
| 372 std::string error_prefix = "Failed to load " + type_str + " node. " + | 372 std::string error_prefix = "Failed to load " + type_str + " node. " + |
| 373 change.location().ToString() + ", "; | 373 change.location().ToString() + ", "; |
| 374 if (result == syncer::BaseNode::INIT_FAILED_PRECONDITION) { | 374 if (result == syncer::BaseNode::INIT_FAILED_PRECONDITION) { |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 445 error_handler()->OnSingleDatatypeUnrecoverableError( | 445 error_handler()->OnSingleDatatypeUnrecoverableError( |
| 446 FROM_HERE, error.message()); | 446 FROM_HERE, error.message()); |
| 447 LOG(ERROR) << "Update: encr case 4."; | 447 LOG(ERROR) << "Update: encr case 4."; |
| 448 return error; | 448 return error; |
| 449 } | 449 } |
| 450 } | 450 } |
| 451 } | 451 } |
| 452 | 452 |
| 453 sync_node.SetTitle(UTF8ToWide(change.sync_data().GetTitle())); | 453 sync_node.SetTitle(UTF8ToWide(change.sync_data().GetTitle())); |
| 454 sync_node.SetEntitySpecifics(change.sync_data().GetSpecifics()); | 454 sync_node.SetEntitySpecifics(change.sync_data().GetSpecifics()); |
| 455 if (merge_result_) { | 455 if (merge_result_.get()) { |
| 456 merge_result_->set_num_items_modified( | 456 merge_result_->set_num_items_modified( |
| 457 merge_result_->num_items_modified() + 1); | 457 merge_result_->num_items_modified() + 1); |
| 458 } | 458 } |
| 459 // TODO(sync): Support updating other parts of the sync node (title, | 459 // TODO(sync): Support updating other parts of the sync node (title, |
| 460 // successor, parent, etc.). | 460 // successor, parent, etc.). |
| 461 } else { | 461 } else { |
| 462 syncer::SyncError error( | 462 syncer::SyncError error( |
| 463 FROM_HERE, | 463 FROM_HERE, |
| 464 "Received unset SyncChange in the change processor, " + | 464 "Received unset SyncChange in the change processor, " + |
| 465 change.location().ToString(), | 465 change.location().ToString(), |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 511 void GenericChangeProcessor::StartImpl(Profile* profile) { | 511 void GenericChangeProcessor::StartImpl(Profile* profile) { |
| 512 DCHECK(CalledOnValidThread()); | 512 DCHECK(CalledOnValidThread()); |
| 513 } | 513 } |
| 514 | 514 |
| 515 syncer::UserShare* GenericChangeProcessor::share_handle() const { | 515 syncer::UserShare* GenericChangeProcessor::share_handle() const { |
| 516 DCHECK(CalledOnValidThread()); | 516 DCHECK(CalledOnValidThread()); |
| 517 return share_handle_; | 517 return share_handle_; |
| 518 } | 518 } |
| 519 | 519 |
| 520 } // namespace browser_sync | 520 } // namespace browser_sync |
| OLD | NEW |