OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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 "components/sync_bookmarks/bookmark_model_associator.h" | 5 #include "components/sync_bookmarks/bookmark_model_associator.h" |
6 | 6 |
7 #include <memory> | 7 #include <utility> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
11 #include "base/containers/hash_tables.h" | 11 #include "base/containers/hash_tables.h" |
12 #include "base/format_macros.h" | 12 #include "base/format_macros.h" |
13 #include "base/location.h" | 13 #include "base/location.h" |
14 #include "base/macros.h" | 14 #include "base/macros.h" |
15 #include "base/single_thread_task_runner.h" | 15 #include "base/single_thread_task_runner.h" |
16 #include "base/strings/string_number_conversions.h" | 16 #include "base/strings/string_number_conversions.h" |
17 #include "base/strings/string_util.h" | 17 #include "base/strings/string_util.h" |
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
303 | 303 |
304 void BookmarkModelAssociator::Context::MarkForVersionUpdate( | 304 void BookmarkModelAssociator::Context::MarkForVersionUpdate( |
305 const bookmarks::BookmarkNode* node) { | 305 const bookmarks::BookmarkNode* node) { |
306 bookmarks_for_version_update_.push_back(node); | 306 bookmarks_for_version_update_.push_back(node); |
307 } | 307 } |
308 | 308 |
309 BookmarkModelAssociator::BookmarkModelAssociator( | 309 BookmarkModelAssociator::BookmarkModelAssociator( |
310 BookmarkModel* bookmark_model, | 310 BookmarkModel* bookmark_model, |
311 sync_driver::SyncClient* sync_client, | 311 sync_driver::SyncClient* sync_client, |
312 syncer::UserShare* user_share, | 312 syncer::UserShare* user_share, |
313 syncer::DataTypeErrorHandler* unrecoverable_error_handler, | 313 std::unique_ptr<syncer::DataTypeErrorHandler> unrecoverable_error_handler, |
314 bool expect_mobile_bookmarks_folder) | 314 bool expect_mobile_bookmarks_folder) |
315 : bookmark_model_(bookmark_model), | 315 : bookmark_model_(bookmark_model), |
316 sync_client_(sync_client), | 316 sync_client_(sync_client), |
317 user_share_(user_share), | 317 user_share_(user_share), |
318 unrecoverable_error_handler_(unrecoverable_error_handler), | 318 unrecoverable_error_handler_(std::move(unrecoverable_error_handler)), |
319 expect_mobile_bookmarks_folder_(expect_mobile_bookmarks_folder), | 319 expect_mobile_bookmarks_folder_(expect_mobile_bookmarks_folder), |
320 weak_factory_(this) { | 320 weak_factory_(this) { |
321 DCHECK(bookmark_model_); | 321 DCHECK(bookmark_model_); |
322 DCHECK(user_share_); | 322 DCHECK(user_share_); |
323 DCHECK(unrecoverable_error_handler_); | 323 DCHECK(unrecoverable_error_handler_); |
324 } | 324 } |
325 | 325 |
326 BookmarkModelAssociator::~BookmarkModelAssociator() { | 326 BookmarkModelAssociator::~BookmarkModelAssociator() { |
327 DCHECK(thread_checker_.CalledOnValidThread()); | 327 DCHECK(thread_checker_.CalledOnValidThread()); |
328 } | 328 } |
(...skipping 393 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
722 } | 722 } |
723 | 723 |
724 // At this point all the children nodes of the parent sync node have | 724 // At this point all the children nodes of the parent sync node have |
725 // corresponding children in the parent bookmark node and they are all in | 725 // corresponding children in the parent bookmark node and they are all in |
726 // the right positions: from 0 to index - 1. | 726 // the right positions: from 0 to index - 1. |
727 // So the children starting from index in the parent bookmark node are the | 727 // So the children starting from index in the parent bookmark node are the |
728 // ones that are not present in the parent sync node. So create them. | 728 // ones that are not present in the parent sync node. So create them. |
729 for (int i = index; i < parent_node->child_count(); ++i) { | 729 for (int i = index; i < parent_node->child_count(); ++i) { |
730 int64_t sync_child_id = BookmarkChangeProcessor::CreateSyncNode( | 730 int64_t sync_child_id = BookmarkChangeProcessor::CreateSyncNode( |
731 parent_node, bookmark_model_, i, trans, this, | 731 parent_node, bookmark_model_, i, trans, this, |
732 unrecoverable_error_handler_); | 732 unrecoverable_error_handler_.get()); |
733 if (syncer::kInvalidId == sync_child_id) { | 733 if (syncer::kInvalidId == sync_child_id) { |
734 return unrecoverable_error_handler_->CreateAndUploadError( | 734 return unrecoverable_error_handler_->CreateAndUploadError( |
735 FROM_HERE, "Failed to create sync node.", model_type()); | 735 FROM_HERE, "Failed to create sync node.", model_type()); |
736 } | 736 } |
737 | 737 |
738 context->IncrementSyncItemsAdded(); | 738 context->IncrementSyncItemsAdded(); |
739 const BookmarkNode* child_node = parent_node->GetChild(i); | 739 const BookmarkNode* child_node = parent_node->GetChild(i); |
740 context->MarkForVersionUpdate(child_node); | 740 context->MarkForVersionUpdate(child_node); |
741 if (child_node->is_folder()) | 741 if (child_node->is_folder()) |
742 context->PushNode(sync_child_id); | 742 context->PushNode(sync_child_id); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
784 } | 784 } |
785 | 785 |
786 int BookmarkModelAssociator::RemoveSyncNodeHierarchy( | 786 int BookmarkModelAssociator::RemoveSyncNodeHierarchy( |
787 syncer::WriteTransaction* trans, | 787 syncer::WriteTransaction* trans, |
788 int64_t sync_id) { | 788 int64_t sync_id) { |
789 syncer::WriteNode sync_node(trans); | 789 syncer::WriteNode sync_node(trans); |
790 if (sync_node.InitByIdLookup(sync_id) != syncer::BaseNode::INIT_OK) { | 790 if (sync_node.InitByIdLookup(sync_id) != syncer::BaseNode::INIT_OK) { |
791 syncer::SyncError error(FROM_HERE, syncer::SyncError::DATATYPE_ERROR, | 791 syncer::SyncError error(FROM_HERE, syncer::SyncError::DATATYPE_ERROR, |
792 "Could not lookup bookmark node for ID deletion.", | 792 "Could not lookup bookmark node for ID deletion.", |
793 syncer::BOOKMARKS); | 793 syncer::BOOKMARKS); |
794 unrecoverable_error_handler_->OnSingleDataTypeUnrecoverableError(error); | 794 unrecoverable_error_handler_->OnUnrecoverableError(error); |
795 return 0; | 795 return 0; |
796 } | 796 } |
797 | 797 |
798 return BookmarkChangeProcessor::RemoveSyncNodeHierarchy(trans, &sync_node, | 798 return BookmarkChangeProcessor::RemoveSyncNodeHierarchy(trans, &sync_node, |
799 this); | 799 this); |
800 } | 800 } |
801 | 801 |
802 struct FolderInfo { | 802 struct FolderInfo { |
803 FolderInfo(const BookmarkNode* f, const BookmarkNode* p, int64_t id) | 803 FolderInfo(const BookmarkNode* f, const BookmarkNode* p, int64_t id) |
804 : folder(f), parent(p), sync_id(id) {} | 804 : folder(f), parent(p), sync_id(id) {} |
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
939 iter != dirty_associations_sync_ids_.end(); | 939 iter != dirty_associations_sync_ids_.end(); |
940 ++iter) { | 940 ++iter) { |
941 int64_t sync_id = *iter; | 941 int64_t sync_id = *iter; |
942 syncer::WriteNode sync_node(&trans); | 942 syncer::WriteNode sync_node(&trans); |
943 if (sync_node.InitByIdLookup(sync_id) != syncer::BaseNode::INIT_OK) { | 943 if (sync_node.InitByIdLookup(sync_id) != syncer::BaseNode::INIT_OK) { |
944 syncer::SyncError error( | 944 syncer::SyncError error( |
945 FROM_HERE, | 945 FROM_HERE, |
946 syncer::SyncError::DATATYPE_ERROR, | 946 syncer::SyncError::DATATYPE_ERROR, |
947 "Could not lookup bookmark node for ID persistence.", | 947 "Could not lookup bookmark node for ID persistence.", |
948 syncer::BOOKMARKS); | 948 syncer::BOOKMARKS); |
949 unrecoverable_error_handler_->OnSingleDataTypeUnrecoverableError(error); | 949 unrecoverable_error_handler_->OnUnrecoverableError(error); |
950 return; | 950 return; |
951 } | 951 } |
952 const BookmarkNode* node = GetChromeNodeFromSyncId(sync_id); | 952 const BookmarkNode* node = GetChromeNodeFromSyncId(sync_id); |
953 if (node && sync_node.GetExternalId() != node->id()) { | 953 if (node && sync_node.GetExternalId() != node->id()) { |
954 sync_node.SetExternalId(node->id()); | 954 sync_node.SetExternalId(node->id()); |
955 bnodes.push_back(node); | 955 bnodes.push_back(node); |
956 } | 956 } |
957 } | 957 } |
958 dirty_associations_sync_ids_.clear(); | 958 dirty_associations_sync_ids_.clear(); |
959 } | 959 } |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1009 syncer::BOOKMARKS); | 1009 syncer::BOOKMARKS); |
1010 } else { | 1010 } else { |
1011 context->set_native_model_sync_state(BEHIND); | 1011 context->set_native_model_sync_state(BEHIND); |
1012 } | 1012 } |
1013 } | 1013 } |
1014 } | 1014 } |
1015 return syncer::SyncError(); | 1015 return syncer::SyncError(); |
1016 } | 1016 } |
1017 | 1017 |
1018 } // namespace browser_sync | 1018 } // namespace browser_sync |
OLD | NEW |