Index: chrome/browser/sync/syncable/syncable.h |
diff --git a/chrome/browser/sync/syncable/syncable.h b/chrome/browser/sync/syncable/syncable.h |
index b5c196a5bcbb708f219bace845899f07ba7a3be1..e561de3ba2fef30223b93cde5f7c2b71eead0225 100644 |
--- a/chrome/browser/sync/syncable/syncable.h |
+++ b/chrome/browser/sync/syncable/syncable.h |
@@ -26,6 +26,7 @@ |
#include "chrome/browser/sync/syncable/path_name_cmp.h" |
#include "chrome/browser/sync/syncable/syncable_id.h" |
#include "chrome/browser/sync/syncable/model_type.h" |
+#include "chrome/browser/sync/util/channel.h" |
#include "chrome/browser/sync/util/dbgq.h" |
#include "chrome/browser/sync/util/row_iterator.h" |
#include "chrome/browser/sync/util/sync_types.h" |
@@ -672,6 +673,8 @@ class Directory { |
FRIEND_TEST(SyncableDirectoryTest, TakeSnapshotGetsOnlyDirtyHandlesTest); |
public: |
+ class EventListenerHookup; |
+ |
// Various data that the Directory::Kernel we are backing (persisting data |
// for) needs saved across runs of the application. |
struct PersistedKernelInfo { |
@@ -780,6 +783,9 @@ class Directory { |
// Unique to each account / client pair. |
std::string cache_guid() const; |
+ browser_sync::ChannelHookup<DirectoryChangeEvent>* AddChangeObserver( |
+ browser_sync::ChannelEventHandler<DirectoryChangeEvent>* observer); |
+ |
protected: // for friends, mainly used by Entry constructors |
EntryKernel* GetEntryByHandle(const int64 handle); |
EntryKernel* GetEntryByHandle(const int64 metahandle, ScopedKernelLock* lock); |
@@ -816,7 +822,6 @@ class Directory { |
}; |
public: |
typedef EventChannel<DirectoryEventTraits, Lock> Channel; |
- typedef EventChannel<DirectoryChangeEvent, Lock> ChangesChannel; |
typedef std::vector<int64> ChildHandles; |
// Returns the child meta handles for given parent id. |
@@ -869,9 +874,6 @@ class Directory { |
inline Channel* channel() const { |
return kernel_->channel; |
} |
- inline ChangesChannel* changes_channel() const { |
- return kernel_->changes_channel; |
- } |
// Checks tree metadata consistency. |
// If full_scan is false, the function will avoid pulling any entries from the |
@@ -998,7 +1000,8 @@ class Directory { |
// The changes channel mutex is explicit because it must be locked |
// while holding the transaction mutex and released after |
// releasing the transaction mutex. |
- ChangesChannel* const changes_channel; |
+ browser_sync::Channel<DirectoryChangeEvent> changes_channel; |
+ |
Lock changes_channel_mutex; |
KernelShareInfoStatus info_status; |