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

Side by Side Diff: sync/syncable/directory.h

Issue 11533008: Use delete journal to remove bookmarks that are already deleted in sync model (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 11 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
« no previous file with comments | « sync/syncable/delete_journal.cc ('k') | sync/syncable/mutable_entry.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #ifndef SYNC_SYNCABLE_DIRECTORY_H_ 5 #ifndef SYNC_SYNCABLE_DIRECTORY_H_
6 #define SYNC_SYNCABLE_DIRECTORY_H_ 6 #define SYNC_SYNCABLE_DIRECTORY_H_
7 7
8 #include <set> 8 #include <set>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
11 11
12 #include "base/file_util.h" 12 #include "base/file_util.h"
13 #include "base/gtest_prod_util.h" 13 #include "base/gtest_prod_util.h"
14 #include "sync/base/sync_export.h" 14 #include "sync/base/sync_export.h"
15 #include "sync/internal_api/public/util/report_unrecoverable_error_function.h" 15 #include "sync/internal_api/public/util/report_unrecoverable_error_function.h"
16 #include "sync/internal_api/public/util/weak_handle.h" 16 #include "sync/internal_api/public/util/weak_handle.h"
17 #include "sync/syncable/delete_journal.h" 17 #include "sync/syncable/delete_journal.h"
18 #include "sync/syncable/dir_open_result.h" 18 #include "sync/syncable/dir_open_result.h"
19 #include "sync/syncable/entry_kernel.h" 19 #include "sync/syncable/entry_kernel.h"
20 #include "sync/syncable/metahandle_set.h" 20 #include "sync/syncable/metahandle_set.h"
21 #include "sync/syncable/scoped_kernel_lock.h" 21 #include "sync/syncable/scoped_kernel_lock.h"
22 22
23 namespace syncer { 23 namespace syncer {
24 24
25 class Cryptographer; 25 class Cryptographer;
26 class TestUserShare;
26 class UnrecoverableErrorHandler; 27 class UnrecoverableErrorHandler;
27 28
28 namespace syncable { 29 namespace syncable {
29 30
30 class BaseTransaction; 31 class BaseTransaction;
31 class DirectoryChangeDelegate; 32 class DirectoryChangeDelegate;
32 class DirectoryBackingStore; 33 class DirectoryBackingStore;
33 class NigoriHandler; 34 class NigoriHandler;
34 class ScopedKernelLock; 35 class ScopedKernelLock;
35 class TransactionObserver; 36 class TransactionObserver;
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 class SYNC_EXPORT Directory { 124 class SYNC_EXPORT Directory {
124 friend class BaseTransaction; 125 friend class BaseTransaction;
125 friend class Entry; 126 friend class Entry;
126 friend class MutableEntry; 127 friend class MutableEntry;
127 friend class ReadTransaction; 128 friend class ReadTransaction;
128 friend class ReadTransactionWithoutDB; 129 friend class ReadTransactionWithoutDB;
129 friend class ScopedKernelLock; 130 friend class ScopedKernelLock;
130 friend class ScopedKernelUnlock; 131 friend class ScopedKernelUnlock;
131 friend class WriteTransaction; 132 friend class WriteTransaction;
132 friend class SyncableDirectoryTest; 133 friend class SyncableDirectoryTest;
134 friend class syncer::TestUserShare;
133 FRIEND_TEST_ALL_PREFIXES(SyncableDirectoryTest, ManageDeleteJournals); 135 FRIEND_TEST_ALL_PREFIXES(SyncableDirectoryTest, ManageDeleteJournals);
134 FRIEND_TEST_ALL_PREFIXES(SyncableDirectoryTest, 136 FRIEND_TEST_ALL_PREFIXES(SyncableDirectoryTest,
135 TakeSnapshotGetsAllDirtyHandlesTest); 137 TakeSnapshotGetsAllDirtyHandlesTest);
136 FRIEND_TEST_ALL_PREFIXES(SyncableDirectoryTest, 138 FRIEND_TEST_ALL_PREFIXES(SyncableDirectoryTest,
137 TakeSnapshotGetsOnlyDirtyHandlesTest); 139 TakeSnapshotGetsOnlyDirtyHandlesTest);
138 FRIEND_TEST_ALL_PREFIXES(SyncableDirectoryTest, 140 FRIEND_TEST_ALL_PREFIXES(SyncableDirectoryTest,
139 TakeSnapshotGetsMetahandlesToPurge); 141 TakeSnapshotGetsMetahandlesToPurge);
140 142
141 public: 143 public:
142 static const FilePath::CharType kSyncDatabaseFilename[]; 144 static const FilePath::CharType kSyncDatabaseFilename[];
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
300 report_unrecoverable_error_function_(); 302 report_unrecoverable_error_function_();
301 } 303 }
302 } 304 }
303 305
304 // Called to set the unrecoverable error on the directory and to propagate 306 // Called to set the unrecoverable error on the directory and to propagate
305 // the error to upper layers. 307 // the error to upper layers.
306 void OnUnrecoverableError(const BaseTransaction* trans, 308 void OnUnrecoverableError(const BaseTransaction* trans,
307 const tracked_objects::Location& location, 309 const tracked_objects::Location& location,
308 const std::string & message); 310 const std::string & message);
309 311
312 DeleteJournal* delete_journal();
313
310 protected: // for friends, mainly used by Entry constructors 314 protected: // for friends, mainly used by Entry constructors
311 virtual EntryKernel* GetEntryByHandle(int64 handle); 315 virtual EntryKernel* GetEntryByHandle(int64 handle);
312 virtual EntryKernel* GetEntryByHandle(int64 metahandle, 316 virtual EntryKernel* GetEntryByHandle(int64 metahandle,
313 ScopedKernelLock* lock); 317 ScopedKernelLock* lock);
314 virtual EntryKernel* GetEntryById(const Id& id); 318 virtual EntryKernel* GetEntryById(const Id& id);
315 EntryKernel* GetEntryByServerTag(const std::string& tag); 319 EntryKernel* GetEntryByServerTag(const std::string& tag);
316 virtual EntryKernel* GetEntryByClientTag(const std::string& tag); 320 virtual EntryKernel* GetEntryByClientTag(const std::string& tag);
317 EntryKernel* GetRootEntry(); 321 EntryKernel* GetRootEntry();
318 bool ReindexId(WriteTransaction* trans, EntryKernel* const entry, 322 bool ReindexId(WriteTransaction* trans, EntryKernel* const entry,
319 const Id& new_id); 323 const Id& new_id);
320 bool ReindexParentId(WriteTransaction* trans, EntryKernel* const entry, 324 bool ReindexParentId(WriteTransaction* trans, EntryKernel* const entry,
321 const Id& new_parent_id); 325 const Id& new_parent_id);
322 void ClearDirtyMetahandles(); 326 void ClearDirtyMetahandles();
323 327
324 // These don't do semantic checking. 328 // These don't do semantic checking.
325 // The semantic checking is implemented higher up. 329 // The semantic checking is implemented higher up.
326 bool UnlinkEntryFromOrder(EntryKernel* entry, 330 bool UnlinkEntryFromOrder(EntryKernel* entry,
327 WriteTransaction* trans, 331 WriteTransaction* trans,
328 ScopedKernelLock* lock, 332 ScopedKernelLock* lock,
329 UnlinkReason unlink_reason); 333 UnlinkReason unlink_reason);
330 334
331 DirOpenResult OpenImpl( 335 DirOpenResult OpenImpl(
332 const std::string& name, 336 const std::string& name,
333 DirectoryChangeDelegate* delegate, 337 DirectoryChangeDelegate* delegate,
334 const WeakHandle<TransactionObserver>& transaction_observer); 338 const WeakHandle<TransactionObserver>& transaction_observer);
335 339
336 DeleteJournal* delete_journal();
337
338 private: 340 private:
339 // These private versions expect the kernel lock to already be held 341 // These private versions expect the kernel lock to already be held
340 // before calling. 342 // before calling.
341 EntryKernel* GetEntryById(const Id& id, ScopedKernelLock* const lock); 343 EntryKernel* GetEntryById(const Id& id, ScopedKernelLock* const lock);
342 344
343 template <class T> void TestAndSet(T* kernel_data, const T* data_to_set); 345 template <class T> void TestAndSet(T* kernel_data, const T* data_to_set);
344 346
345 public: 347 public:
346 typedef std::vector<int64> ChildHandles; 348 typedef std::vector<int64> ChildHandles;
347 349
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after
633 635
634 // Maintain deleted entries not in |kernel_| until it's verified that they 636 // Maintain deleted entries not in |kernel_| until it's verified that they
635 // are deleted in native models as well. 637 // are deleted in native models as well.
636 scoped_ptr<DeleteJournal> delete_journal_; 638 scoped_ptr<DeleteJournal> delete_journal_;
637 }; 639 };
638 640
639 } // namespace syncable 641 } // namespace syncable
640 } // namespace syncer 642 } // namespace syncer
641 643
642 #endif // SYNC_SYNCABLE_DIRECTORY_H_ 644 #endif // SYNC_SYNCABLE_DIRECTORY_H_
OLDNEW
« no previous file with comments | « sync/syncable/delete_journal.cc ('k') | sync/syncable/mutable_entry.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698