| 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_change_processor.h" | 5 #include "components/sync_bookmarks/bookmark_change_processor.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <map> | 9 #include <map> |
| 10 #include <stack> | 10 #include <stack> |
| (...skipping 27 matching lines...) Expand all Loading... |
| 38 using syncer::ChangeRecord; | 38 using syncer::ChangeRecord; |
| 39 using syncer::ChangeRecordList; | 39 using syncer::ChangeRecordList; |
| 40 | 40 |
| 41 namespace browser_sync { | 41 namespace browser_sync { |
| 42 | 42 |
| 43 static const char kMobileBookmarksTag[] = "synced_bookmarks"; | 43 static const char kMobileBookmarksTag[] = "synced_bookmarks"; |
| 44 | 44 |
| 45 BookmarkChangeProcessor::BookmarkChangeProcessor( | 45 BookmarkChangeProcessor::BookmarkChangeProcessor( |
| 46 sync_driver::SyncClient* sync_client, | 46 sync_driver::SyncClient* sync_client, |
| 47 BookmarkModelAssociator* model_associator, | 47 BookmarkModelAssociator* model_associator, |
| 48 sync_driver::DataTypeErrorHandler* error_handler) | 48 syncer::DataTypeErrorHandler* error_handler) |
| 49 : sync_driver::ChangeProcessor(error_handler), | 49 : sync_driver::ChangeProcessor(error_handler), |
| 50 bookmark_model_(NULL), | 50 bookmark_model_(NULL), |
| 51 sync_client_(sync_client), | 51 sync_client_(sync_client), |
| 52 model_associator_(model_associator) { | 52 model_associator_(model_associator) { |
| 53 DCHECK(model_associator); | 53 DCHECK(model_associator); |
| 54 DCHECK(sync_client); | 54 DCHECK(sync_client); |
| 55 DCHECK(error_handler); | 55 DCHECK(error_handler); |
| 56 } | 56 } |
| 57 | 57 |
| 58 BookmarkChangeProcessor::~BookmarkChangeProcessor() { | 58 BookmarkChangeProcessor::~BookmarkChangeProcessor() { |
| 59 if (bookmark_model_) | 59 if (bookmark_model_) |
| 60 bookmark_model_->RemoveObserver(this); | 60 bookmark_model_->RemoveObserver(this); |
| 61 } | 61 } |
| 62 | 62 |
| 63 void BookmarkChangeProcessor::StartImpl() { | 63 void BookmarkChangeProcessor::StartImpl() { |
| 64 DCHECK(thread_checker_.CalledOnValidThread()); | 64 DCHECK(thread_checker_.CalledOnValidThread()); |
| 65 DCHECK(!bookmark_model_); | 65 DCHECK(!bookmark_model_); |
| 66 bookmark_model_ = sync_client_->GetBookmarkModel(); | 66 bookmark_model_ = sync_client_->GetBookmarkModel(); |
| 67 DCHECK(bookmark_model_->loaded()); | 67 DCHECK(bookmark_model_->loaded()); |
| 68 bookmark_model_->AddObserver(this); | 68 bookmark_model_->AddObserver(this); |
| 69 } | 69 } |
| 70 | 70 |
| 71 void BookmarkChangeProcessor::UpdateSyncNodeProperties( | 71 void BookmarkChangeProcessor::UpdateSyncNodeProperties( |
| 72 const BookmarkNode* src, | 72 const BookmarkNode* src, |
| 73 BookmarkModel* model, | 73 BookmarkModel* model, |
| 74 syncer::WriteNode* dst, | 74 syncer::WriteNode* dst, |
| 75 sync_driver::DataTypeErrorHandler* error_handler) { | 75 syncer::DataTypeErrorHandler* error_handler) { |
| 76 // Set the properties of the item. | 76 // Set the properties of the item. |
| 77 dst->SetIsFolder(src->is_folder()); | 77 dst->SetIsFolder(src->is_folder()); |
| 78 dst->SetTitle(base::UTF16ToUTF8(src->GetTitle())); | 78 dst->SetTitle(base::UTF16ToUTF8(src->GetTitle())); |
| 79 sync_pb::BookmarkSpecifics bookmark_specifics(dst->GetBookmarkSpecifics()); | 79 sync_pb::BookmarkSpecifics bookmark_specifics(dst->GetBookmarkSpecifics()); |
| 80 if (!src->is_folder()) { | 80 if (!src->is_folder()) { |
| 81 if (!src->url().is_valid()) { | 81 if (!src->url().is_valid()) { |
| 82 // Report the invalid URL and continue. | 82 // Report the invalid URL and continue. |
| 83 // TODO(stanisc): crbug/482155: Revisit this once the root cause for | 83 // TODO(stanisc): crbug/482155: Revisit this once the root cause for |
| 84 // invalid URLs is understood. | 84 // invalid URLs is understood. |
| 85 error_handler->CreateAndUploadError( | 85 error_handler->CreateAndUploadError( |
| (...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 292 CreateOrUpdateSyncNode(node); | 292 CreateOrUpdateSyncNode(node); |
| 293 } | 293 } |
| 294 | 294 |
| 295 // static | 295 // static |
| 296 int64_t BookmarkChangeProcessor::CreateSyncNode( | 296 int64_t BookmarkChangeProcessor::CreateSyncNode( |
| 297 const BookmarkNode* parent, | 297 const BookmarkNode* parent, |
| 298 BookmarkModel* model, | 298 BookmarkModel* model, |
| 299 int index, | 299 int index, |
| 300 syncer::WriteTransaction* trans, | 300 syncer::WriteTransaction* trans, |
| 301 BookmarkModelAssociator* associator, | 301 BookmarkModelAssociator* associator, |
| 302 sync_driver::DataTypeErrorHandler* error_handler) { | 302 syncer::DataTypeErrorHandler* error_handler) { |
| 303 const BookmarkNode* child = parent->GetChild(index); | 303 const BookmarkNode* child = parent->GetChild(index); |
| 304 DCHECK(child); | 304 DCHECK(child); |
| 305 | 305 |
| 306 // Create a WriteNode container to hold the new node. | 306 // Create a WriteNode container to hold the new node. |
| 307 syncer::WriteNode sync_child(trans); | 307 syncer::WriteNode sync_child(trans); |
| 308 | 308 |
| 309 // Actually create the node with the appropriate initial position. | 309 // Actually create the node with the appropriate initial position. |
| 310 if (!PlaceSyncNode(CREATE, parent, index, trans, &sync_child, associator)) { | 310 if (!PlaceSyncNode(CREATE, parent, index, trans, &sync_child, associator)) { |
| 311 syncer::SyncError error(FROM_HERE, syncer::SyncError::DATATYPE_ERROR, | 311 syncer::SyncError error(FROM_HERE, syncer::SyncError::DATATYPE_ERROR, |
| 312 "Failed to create sync node.", syncer::BOOKMARKS); | 312 "Failed to create sync node.", syncer::BOOKMARKS); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 359 } | 359 } |
| 360 CreateOrUpdateSyncNode(node); | 360 CreateOrUpdateSyncNode(node); |
| 361 } | 361 } |
| 362 | 362 |
| 363 // Static. | 363 // Static. |
| 364 int64_t BookmarkChangeProcessor::UpdateSyncNode( | 364 int64_t BookmarkChangeProcessor::UpdateSyncNode( |
| 365 const BookmarkNode* node, | 365 const BookmarkNode* node, |
| 366 BookmarkModel* model, | 366 BookmarkModel* model, |
| 367 syncer::WriteTransaction* trans, | 367 syncer::WriteTransaction* trans, |
| 368 BookmarkModelAssociator* associator, | 368 BookmarkModelAssociator* associator, |
| 369 sync_driver::DataTypeErrorHandler* error_handler) { | 369 syncer::DataTypeErrorHandler* error_handler) { |
| 370 // Lookup the sync node that's associated with |node|. | 370 // Lookup the sync node that's associated with |node|. |
| 371 syncer::WriteNode sync_node(trans); | 371 syncer::WriteNode sync_node(trans); |
| 372 if (!associator->InitSyncNodeFromChromeId(node->id(), &sync_node)) { | 372 if (!associator->InitSyncNodeFromChromeId(node->id(), &sync_node)) { |
| 373 syncer::SyncError error(FROM_HERE, | 373 syncer::SyncError error(FROM_HERE, |
| 374 syncer::SyncError::DATATYPE_ERROR, | 374 syncer::SyncError::DATATYPE_ERROR, |
| 375 "Failed to init sync node from chrome node", | 375 "Failed to init sync node from chrome node", |
| 376 syncer::BOOKMARKS); | 376 syncer::BOOKMARKS); |
| 377 error_handler->OnSingleDataTypeUnrecoverableError(error); | 377 error_handler->OnSingleDataTypeUnrecoverableError(error); |
| 378 return syncer::kInvalidId; | 378 return syncer::kInvalidId; |
| 379 } | 379 } |
| (...skipping 591 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 971 updated_specifics.set_icon_url(bookmark_node->icon_url().spec()); | 971 updated_specifics.set_icon_url(bookmark_node->icon_url().spec()); |
| 972 sync_node->SetBookmarkSpecifics(updated_specifics); | 972 sync_node->SetBookmarkSpecifics(updated_specifics); |
| 973 } | 973 } |
| 974 } | 974 } |
| 975 | 975 |
| 976 bool BookmarkChangeProcessor::CanSyncNode(const BookmarkNode* node) { | 976 bool BookmarkChangeProcessor::CanSyncNode(const BookmarkNode* node) { |
| 977 return bookmark_model_->client()->CanSyncNode(node); | 977 return bookmark_model_->client()->CanSyncNode(node); |
| 978 } | 978 } |
| 979 | 979 |
| 980 } // namespace browser_sync | 980 } // namespace browser_sync |
| OLD | NEW |