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

Unified Diff: components/sync/syncable/syncable_delete_journal.h

Issue 2292393004: Remove stl_util from sync. (Closed)
Patch Set: Created 4 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/sync/syncable/syncable-inl.h ('k') | components/sync/syncable/syncable_delete_journal.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/sync/syncable/syncable_delete_journal.h
diff --git a/components/sync/syncable/syncable_delete_journal.h b/components/sync/syncable/syncable_delete_journal.h
index 218f516b31c154e27e8fa9433e0615043615aa89..8fc4635a04136336f12092eee322bc274381063c 100644
--- a/components/sync/syncable/syncable_delete_journal.h
+++ b/components/sync/syncable/syncable_delete_journal.h
@@ -7,21 +7,31 @@
#include <stddef.h>
-#include <set>
+#include <map>
#include "base/gtest_prod_util.h"
#include "base/macros.h"
#include "base/synchronization/lock.h"
+#include "components/sync/syncable/entry_kernel.h"
#include "components/sync/syncable/metahandle_set.h"
-#include "components/sync/syncable/syncable-inl.h"
namespace syncer {
namespace syncable {
class BaseTransaction;
-struct EntryKernel;
-typedef std::set<const EntryKernel*, LessField<IdField, ID>> JournalIndex;
+class LessByID {
+ public:
+ inline bool operator()(const EntryKernel* a, const EntryKernel* b) const {
+ return a->ref(ID) < b->ref(ID);
+ }
+};
+// This should be |std::set<std::unique_ptr<EntryKernel>, LessByID>|. However,
+// DeleteJournal::TakeSnapshotAndClear needs to remove the unique_ptr from the
+// set, and std::set::extract is only available in C++17. TODO(avi): Switch to
+// using a std::set when Chromium allows C++17 use.
+typedef std::map<const EntryKernel*, std::unique_ptr<EntryKernel>, LessByID>
Avi (use Gerrit) 2016/08/31 20:14:19 Maybe this should be a map from ID to unique_ptr<E
+ JournalIndex;
// DeleteJournal manages deleted entries that are not in sync directory until
// it's safe to drop them after the deletion is confirmed with native models.
@@ -30,9 +40,8 @@ typedef std::set<const EntryKernel*, LessField<IdField, ID>> JournalIndex;
// method requires a non-null |trans| parameter.
class DeleteJournal {
public:
- // Initialize |delete_journals_| using |intitial_journal|, whose content is
- // destroyed during initialization.
- explicit DeleteJournal(JournalIndex* initial_journal);
+ // Initialize |delete_journals_| using |initial_journal|.
+ explicit DeleteJournal(std::unique_ptr<JournalIndex> initial_journal);
~DeleteJournal();
// For testing only.
@@ -67,7 +76,7 @@ class DeleteJournal {
// |passive_delete_journal_types_| to |journal_entries|. Move handles in
// |delete_journals_to_purge_| to |journals_to_purge|. Called on sync thread.
void TakeSnapshotAndClear(BaseTransaction* trans,
- EntryKernelSet* journal_entries,
+ OwnedEntryKernelSet* journal_entries,
MetahandleSet* journals_to_purge);
// Add |entries| to |delete_journals_| regardless of their SERVER_IS_DEL
@@ -76,7 +85,8 @@ class DeleteJournal {
// * batch add entries of a data type with unrecoverable error to delete
// journal before purging them.
// Called on sync thread.
- void AddJournalBatch(BaseTransaction* trans, const EntryKernelSet& entries);
+ void AddJournalBatch(BaseTransaction* trans,
+ const OwnedEntryKernelSet& entries);
// Return true if delete journals of |type| are maintained.
static bool IsDeleteJournalEnabled(ModelType type);
« no previous file with comments | « components/sync/syncable/syncable-inl.h ('k') | components/sync/syncable/syncable_delete_journal.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698