Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1010)

Side by Side Diff: chrome/browser/sync/engine/conflict_resolver.cc

Issue 211019: Fix compiling of sync on linux. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 entry. 3 // found in the LICENSE entry.
4 4
5 #include "chrome/browser/sync/engine/conflict_resolver.h" 5 #include "chrome/browser/sync/engine/conflict_resolver.h"
6 6
7 #include <map> 7 #include <map>
8 #include <set> 8 #include <set>
9 9
10 #include "chrome/browser/sync/engine/syncer.h" 10 #include "chrome/browser/sync/engine/syncer.h"
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 date.append(IntToPathString(now->tm_mday)); 58 date.append(IntToPathString(now->tm_mday));
59 return base + PSTR(" (Edited on ") + date + PSTR(")"); 59 return base + PSTR(" (Edited on ") + date + PSTR(")");
60 } 60 }
61 61
62 // TODO(ncarter): Remove title/path conflicts and the code to resolve them. 62 // TODO(ncarter): Remove title/path conflicts and the code to resolve them.
63 Name FindNewName(BaseTransaction* trans, 63 Name FindNewName(BaseTransaction* trans,
64 Id parent_id, 64 Id parent_id,
65 const SyncName& original_name) { 65 const SyncName& original_name) {
66 const PathString name = original_name.value(); 66 const PathString name = original_name.value();
67 // 255 is defined in our spec. 67 // 255 is defined in our spec.
68 const int allowed_length = kSyncProtocolMaxNameLengthBytes; 68 const size_t allowed_length = kSyncProtocolMaxNameLengthBytes;
69 // TODO(sync): How do we get length on other platforms? The limit is 69 // TODO(sync): How do we get length on other platforms? The limit is
70 // checked in java on the server, so it's not the number of glyphs its the 70 // checked in java on the server, so it's not the number of glyphs its the
71 // number of 16 bit characters in the UTF-16 representation. 71 // number of 16 bit characters in the UTF-16 representation.
72 72
73 // 10 characters for 32 bit numbers + 2 characters for brackets means 12 73 // 10 characters for 32 bit numbers + 2 characters for brackets means 12
74 // characters should be more than enough for the name. Doubling this ensures 74 // characters should be more than enough for the name. Doubling this ensures
75 // that we will have enough space. 75 // that we will have enough space.
76 COMPILE_ASSERT(kSyncProtocolMaxNameLengthBytes >= 24, 76 COMPILE_ASSERT(kSyncProtocolMaxNameLengthBytes >= 24,
77 maximum_name_too_short); 77 maximum_name_too_short);
78 CHECK(name.length() <= allowed_length); 78 CHECK(name.length() <= allowed_length);
(...skipping 578 matching lines...) Expand 10 before | Expand all | Expand 10 after
657 Id id = *conflicting_item_it; 657 Id id = *conflicting_item_it;
658 map<Id, ConflictSet*>::const_iterator item_set_it = 658 map<Id, ConflictSet*>::const_iterator item_set_it =
659 view->IdToConflictSetFind(id); 659 view->IdToConflictSetFind(id);
660 if (item_set_it == view->IdToConflictSetEnd() || 660 if (item_set_it == view->IdToConflictSetEnd() ||
661 0 == item_set_it->second) { 661 0 == item_set_it->second) {
662 // We have a simple conflict. 662 // We have a simple conflict.
663 switch(ProcessSimpleConflict(&trans, id, session)) { 663 switch(ProcessSimpleConflict(&trans, id, session)) {
664 case NO_SYNC_PROGRESS: 664 case NO_SYNC_PROGRESS:
665 { 665 {
666 int conflict_count = (simple_conflict_count_map_[id] += 2); 666 int conflict_count = (simple_conflict_count_map_[id] += 2);
667 bool stuck = LogAndSignalIfConflictStuck(&trans, conflict_count, 667 LogAndSignalIfConflictStuck(&trans, conflict_count,
668 &id, &id + 1, view); 668 &id, &id + 1, view);
669 break; 669 break;
670 } 670 }
671 case SYNC_PROGRESS: 671 case SYNC_PROGRESS:
672 forward_progress = true; 672 forward_progress = true;
673 break; 673 break;
674 } 674 }
675 } 675 }
676 } 676 }
677 // Reduce the simple_conflict_count for each item currently tracked. 677 // Reduce the simple_conflict_count for each item currently tracked.
678 SimpleConflictCountMap::iterator i = simple_conflict_count_map_.begin(); 678 SimpleConflictCountMap::iterator i = simple_conflict_count_map_.begin();
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
717 conflict_set->begin(), 717 conflict_set->begin(),
718 conflict_set->end())) { 718 conflict_set->end())) {
719 LOG(INFO) << "Accelerating resolution for hierarchical merge."; 719 LOG(INFO) << "Accelerating resolution for hierarchical merge.";
720 conflict_count += 2; 720 conflict_count += 2;
721 } 721 }
722 // See if we should process this set. 722 // See if we should process this set.
723 if (ProcessConflictSet(&trans, conflict_set, conflict_count, session)) { 723 if (ProcessConflictSet(&trans, conflict_set, conflict_count, session)) {
724 rv = true; 724 rv = true;
725 } 725 }
726 SyncerStatus status(session); 726 SyncerStatus status(session);
727 bool stuck = LogAndSignalIfConflictStuck(&trans, conflict_count, 727 LogAndSignalIfConflictStuck(&trans, conflict_count,
728 conflict_set->begin(), 728 conflict_set->begin(),
729 conflict_set->end(), view); 729 conflict_set->end(), view);
730 } 730 }
731 if (rv) { 731 if (rv) {
732 // This code means we don't signal that syncing is stuck when any conflict 732 // This code means we don't signal that syncing is stuck when any conflict
733 // resolution has occured. 733 // resolution has occured.
734 // TODO(sync): As this will also reduce our sensitivity to problem 734 // TODO(sync): As this will also reduce our sensitivity to problem
735 // conditions and increase the time for cascading resolutions we may have to 735 // conditions and increase the time for cascading resolutions we may have to
736 // revisit this code later, doing something more intelligent. 736 // revisit this code later, doing something more intelligent.
737 conflict_set_count_map_.clear(); 737 conflict_set_count_map_.clear();
738 simple_conflict_count_map_.clear(); 738 simple_conflict_count_map_.clear();
739 } 739 }
740 ConflictSetCountMap::iterator i = conflict_set_count_map_.begin(); 740 ConflictSetCountMap::iterator i = conflict_set_count_map_.begin();
741 while (i != conflict_set_count_map_.end()) { 741 while (i != conflict_set_count_map_.end()) {
742 if (0 == --i->second) { 742 if (0 == --i->second) {
743 conflict_set_count_map_.erase(i++); 743 conflict_set_count_map_.erase(i++);
744 // METRIC self resolved conflict sets ++. 744 // METRIC self resolved conflict sets ++.
745 } else { 745 } else {
746 ++i; 746 ++i;
747 } 747 }
748 } 748 }
749 return rv; 749 return rv;
750 } 750 }
751 751
752 } // namespace browser_sync 752 } // namespace browser_sync
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698