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/bookmark_change_processor.h" | 5 #include "chrome/browser/sync/glue/bookmark_change_processor.h" |
6 | 6 |
7 #include <stack> | 7 #include <stack> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/location.h" | 10 #include "base/location.h" |
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
170 BookmarkModelAssociator* associator, | 170 BookmarkModelAssociator* associator, |
171 DataTypeErrorHandler* error_handler) { | 171 DataTypeErrorHandler* error_handler) { |
172 const BookmarkNode* child = parent->GetChild(index); | 172 const BookmarkNode* child = parent->GetChild(index); |
173 DCHECK(child); | 173 DCHECK(child); |
174 | 174 |
175 // Create a WriteNode container to hold the new node. | 175 // Create a WriteNode container to hold the new node. |
176 sync_api::WriteNode sync_child(trans); | 176 sync_api::WriteNode sync_child(trans); |
177 | 177 |
178 // Actually create the node with the appropriate initial position. | 178 // Actually create the node with the appropriate initial position. |
179 if (!PlaceSyncNode(CREATE, parent, index, trans, &sync_child, associator)) { | 179 if (!PlaceSyncNode(CREATE, parent, index, trans, &sync_child, associator)) { |
180 error_handler->OnUnrecoverableError(FROM_HERE, | 180 error_handler->OnSingleDatatypeUnrecoverableError(FROM_HERE, |
181 "Sync node creation failed; recovery unlikely"); | 181 "Sync node creation failed; recovery unlikely"); |
182 return sync_api::kInvalidId; | 182 return sync_api::kInvalidId; |
183 } | 183 } |
184 | 184 |
185 UpdateSyncNodeProperties(child, model, &sync_child); | 185 UpdateSyncNodeProperties(child, model, &sync_child); |
186 | 186 |
187 // Associate the ID from the sync domain with the bookmark node, so that we | 187 // Associate the ID from the sync domain with the bookmark node, so that we |
188 // can refer back to this item later. | 188 // can refer back to this item later. |
189 associator->Associate(child, sync_child.GetId()); | 189 associator->Associate(child, sync_child.GetId()); |
190 | 190 |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
296 // Lookup the sync node that's associated with |child|. | 296 // Lookup the sync node that's associated with |child|. |
297 sync_api::WriteNode sync_node(&trans); | 297 sync_api::WriteNode sync_node(&trans); |
298 if (!model_associator_->InitSyncNodeFromChromeId(child->id(), &sync_node)) { | 298 if (!model_associator_->InitSyncNodeFromChromeId(child->id(), &sync_node)) { |
299 error_handler()->OnSingleDatatypeUnrecoverableError(FROM_HERE, | 299 error_handler()->OnSingleDatatypeUnrecoverableError(FROM_HERE, |
300 std::string()); | 300 std::string()); |
301 return; | 301 return; |
302 } | 302 } |
303 | 303 |
304 if (!PlaceSyncNode(MOVE, new_parent, new_index, &trans, &sync_node, | 304 if (!PlaceSyncNode(MOVE, new_parent, new_index, &trans, &sync_node, |
305 model_associator_)) { | 305 model_associator_)) { |
306 error_handler()->OnUnrecoverableError(FROM_HERE, std::string()); | 306 error_handler()->OnSingleDatatypeUnrecoverableError(FROM_HERE, |
| 307 std::string()); |
307 return; | 308 return; |
308 } | 309 } |
309 } | 310 } |
310 | 311 |
311 void BookmarkChangeProcessor::BookmarkNodeFaviconChanged( | 312 void BookmarkChangeProcessor::BookmarkNodeFaviconChanged( |
312 BookmarkModel* model, | 313 BookmarkModel* model, |
313 const BookmarkNode* node) { | 314 const BookmarkNode* node) { |
314 DCHECK(running()); | 315 DCHECK(running()); |
315 BookmarkNodeChanged(model, node); | 316 BookmarkNodeChanged(model, node); |
316 } | 317 } |
(...skipping 12 matching lines...) Expand all Loading... |
329 &sync_child)) { | 330 &sync_child)) { |
330 error_handler()->OnSingleDatatypeUnrecoverableError(FROM_HERE, | 331 error_handler()->OnSingleDatatypeUnrecoverableError(FROM_HERE, |
331 std::string()); | 332 std::string()); |
332 return; | 333 return; |
333 } | 334 } |
334 DCHECK_EQ(sync_child.GetParentId(), | 335 DCHECK_EQ(sync_child.GetParentId(), |
335 model_associator_->GetSyncIdFromChromeId(node->id())); | 336 model_associator_->GetSyncIdFromChromeId(node->id())); |
336 | 337 |
337 if (!PlaceSyncNode(MOVE, node, i, &trans, &sync_child, | 338 if (!PlaceSyncNode(MOVE, node, i, &trans, &sync_child, |
338 model_associator_)) { | 339 model_associator_)) { |
339 error_handler()->OnUnrecoverableError(FROM_HERE, std::string()); | 340 error_handler()->OnSingleDatatypeUnrecoverableError(FROM_HERE, |
| 341 std::string()); |
340 return; | 342 return; |
341 } | 343 } |
342 } | 344 } |
343 } | 345 } |
344 | 346 |
345 // static | 347 // static |
346 bool BookmarkChangeProcessor::PlaceSyncNode(MoveOrCreate operation, | 348 bool BookmarkChangeProcessor::PlaceSyncNode(MoveOrCreate operation, |
347 const BookmarkNode* parent, int index, sync_api::WriteTransaction* trans, | 349 const BookmarkNode* parent, int index, sync_api::WriteTransaction* trans, |
348 sync_api::WriteNode* dst, BookmarkModelAssociator* associator) { | 350 sync_api::WriteNode* dst, BookmarkModelAssociator* associator) { |
349 sync_api::ReadNode sync_parent(trans); | 351 sync_api::ReadNode sync_parent(trans); |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
461 // reparented by a later change record. Move them to a temporary place. | 463 // reparented by a later change record. Move them to a temporary place. |
462 if (!dst) // Can't do anything if we can't find the chrome node. | 464 if (!dst) // Can't do anything if we can't find the chrome node. |
463 continue; | 465 continue; |
464 const BookmarkNode* parent = dst->parent(); | 466 const BookmarkNode* parent = dst->parent(); |
465 if (!dst->empty()) { | 467 if (!dst->empty()) { |
466 if (!foster_parent) { | 468 if (!foster_parent) { |
467 foster_parent = model->AddFolder(model->other_node(), | 469 foster_parent = model->AddFolder(model->other_node(), |
468 model->other_node()->child_count(), | 470 model->other_node()->child_count(), |
469 string16()); | 471 string16()); |
470 if (!foster_parent) { | 472 if (!foster_parent) { |
471 error_handler()->OnUnrecoverableError(FROM_HERE, | 473 error_handler()->OnSingleDatatypeUnrecoverableError(FROM_HERE, |
472 "Failed to create foster parent."); | 474 "Failed to create foster parent."); |
473 return; | 475 return; |
474 } | 476 } |
475 } | 477 } |
476 for (int i = dst->child_count() - 1; i >= 0; --i) { | 478 for (int i = dst->child_count() - 1; i >= 0; --i) { |
477 model->Move(dst->GetChild(i), foster_parent, | 479 model->Move(dst->GetChild(i), foster_parent, |
478 foster_parent->child_count()); | 480 foster_parent->child_count()); |
479 } | 481 } |
480 } | 482 } |
481 DCHECK_EQ(dst->child_count(), 0) << "Node being deleted has children"; | 483 DCHECK_EQ(dst->child_count(), 0) << "Node being deleted has children"; |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
648 const BookmarkNode* bookmark_node, | 650 const BookmarkNode* bookmark_node, |
649 BookmarkModel* model, | 651 BookmarkModel* model, |
650 sync_api::WriteNode* sync_node) { | 652 sync_api::WriteNode* sync_node) { |
651 std::vector<unsigned char> favicon_bytes; | 653 std::vector<unsigned char> favicon_bytes; |
652 EncodeFavicon(bookmark_node, model, &favicon_bytes); | 654 EncodeFavicon(bookmark_node, model, &favicon_bytes); |
653 if (!favicon_bytes.empty()) | 655 if (!favicon_bytes.empty()) |
654 sync_node->SetFaviconBytes(favicon_bytes); | 656 sync_node->SetFaviconBytes(favicon_bytes); |
655 } | 657 } |
656 | 658 |
657 } // namespace browser_sync | 659 } // namespace browser_sync |
OLD | NEW |