| 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;
 | 
|  
 | 
| 
 |