OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/engine/syncer_util.h" | 5 #include "chrome/browser/sync/engine/syncer_util.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <set> | 8 #include <set> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
11 | 11 |
| 12 #include "base/tracked.h" |
12 #include "chrome/browser/sync/engine/conflict_resolver.h" | 13 #include "chrome/browser/sync/engine/conflict_resolver.h" |
13 #include "chrome/browser/sync/engine/syncer_proto_util.h" | 14 #include "chrome/browser/sync/engine/syncer_proto_util.h" |
14 #include "chrome/browser/sync/engine/syncer_types.h" | 15 #include "chrome/browser/sync/engine/syncer_types.h" |
15 #include "chrome/browser/sync/engine/syncproto.h" | 16 #include "chrome/browser/sync/engine/syncproto.h" |
16 #include "chrome/browser/sync/protocol/bookmark_specifics.pb.h" | 17 #include "chrome/browser/sync/protocol/bookmark_specifics.pb.h" |
17 #include "chrome/browser/sync/protocol/nigori_specifics.pb.h" | 18 #include "chrome/browser/sync/protocol/nigori_specifics.pb.h" |
18 #include "chrome/browser/sync/protocol/password_specifics.pb.h" | 19 #include "chrome/browser/sync/protocol/password_specifics.pb.h" |
19 #include "chrome/browser/sync/protocol/sync.pb.h" | 20 #include "chrome/browser/sync/protocol/sync.pb.h" |
20 #include "chrome/browser/sync/syncable/directory_manager.h" | 21 #include "chrome/browser/sync/syncable/directory_manager.h" |
21 #include "chrome/browser/sync/syncable/model_type.h" | 22 #include "chrome/browser/sync/syncable/model_type.h" |
(...skipping 630 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
652 // 1. Scan deleted unsynced entries looking up their pre-delete tree for any | 653 // 1. Scan deleted unsynced entries looking up their pre-delete tree for any |
653 // of the deleted folders. | 654 // of the deleted folders. |
654 // 2. Take each folder and do a tree walk of all entries underneath it. | 655 // 2. Take each folder and do a tree walk of all entries underneath it. |
655 // #2 has a lower big O cost, but writing code to limit the time spent inside | 656 // #2 has a lower big O cost, but writing code to limit the time spent inside |
656 // the transaction during each step is simpler with 1. Changing this decision | 657 // the transaction during each step is simpler with 1. Changing this decision |
657 // may be sensible if this code shows up in profiling. | 658 // may be sensible if this code shows up in profiling. |
658 if (deleted_folders->empty()) | 659 if (deleted_folders->empty()) |
659 return; | 660 return; |
660 Directory::UnsyncedMetaHandles handles; | 661 Directory::UnsyncedMetaHandles handles; |
661 { | 662 { |
662 ReadTransaction trans(dir, __FILE__, __LINE__); | 663 ReadTransaction trans(dir, FROM_HERE); |
663 dir->GetUnsyncedMetaHandles(&trans, &handles); | 664 dir->GetUnsyncedMetaHandles(&trans, &handles); |
664 } | 665 } |
665 if (handles.empty()) | 666 if (handles.empty()) |
666 return; | 667 return; |
667 Directory::UnsyncedMetaHandles::iterator it; | 668 Directory::UnsyncedMetaHandles::iterator it; |
668 for (it = handles.begin() ; it != handles.end() ; ++it) { | 669 for (it = handles.begin() ; it != handles.end() ; ++it) { |
669 // Single transaction / entry we deal with. | 670 // Single transaction / entry we deal with. |
670 WriteTransaction trans(dir, SYNCER, __FILE__, __LINE__); | 671 WriteTransaction trans(dir, SYNCER, FROM_HERE); |
671 MutableEntry entry(&trans, GET_BY_HANDLE, *it); | 672 MutableEntry entry(&trans, GET_BY_HANDLE, *it); |
672 if (!entry.Get(IS_UNSYNCED) || !entry.Get(IS_DEL)) | 673 if (!entry.Get(IS_UNSYNCED) || !entry.Get(IS_DEL)) |
673 continue; | 674 continue; |
674 syncable::Id id = entry.Get(PARENT_ID); | 675 syncable::Id id = entry.Get(PARENT_ID); |
675 while (id != trans.root_id()) { | 676 while (id != trans.root_id()) { |
676 if (deleted_folders->find(id) != deleted_folders->end()) { | 677 if (deleted_folders->find(id) != deleted_folders->end()) { |
677 // We've synced the deletion of this deleted entries parent. | 678 // We've synced the deletion of this deleted entries parent. |
678 entry.Put(IS_UNSYNCED, false); | 679 entry.Put(IS_UNSYNCED, false); |
679 break; | 680 break; |
680 } | 681 } |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
820 if (update.version() < target->Get(SERVER_VERSION)) { | 821 if (update.version() < target->Get(SERVER_VERSION)) { |
821 LOG(WARNING) << "Update older than current server version for " | 822 LOG(WARNING) << "Update older than current server version for " |
822 << *target << " Update:" | 823 << *target << " Update:" |
823 << SyncerProtoUtil::SyncEntityDebugString(update); | 824 << SyncerProtoUtil::SyncEntityDebugString(update); |
824 return VERIFY_SUCCESS; // Expected in new sync protocol. | 825 return VERIFY_SUCCESS; // Expected in new sync protocol. |
825 } | 826 } |
826 return VERIFY_UNDECIDED; | 827 return VERIFY_UNDECIDED; |
827 } | 828 } |
828 | 829 |
829 } // namespace browser_sync | 830 } // namespace browser_sync |
OLD | NEW |