Index: chrome/browser/sync/syncable/syncable.cc |
diff --git a/chrome/browser/sync/syncable/syncable.cc b/chrome/browser/sync/syncable/syncable.cc |
index ae0307cbb94cdca7dd4881ab5d821ead05c3729c..42e48674c538c3d0a500d8c7f36ed930277b2d66 100644 |
--- a/chrome/browser/sync/syncable/syncable.cc |
+++ b/chrome/browser/sync/syncable/syncable.cc |
@@ -172,7 +172,6 @@ Directory::Kernel::Kernel(const FilePath& db_path, |
unsynced_metahandles(new MetahandleSet), |
dirty_metahandles(new MetahandleSet), |
channel(new Directory::Channel(syncable::DIRECTORY_DESTROYED)), |
- changes_channel(new Directory::ChangesChannel(kShutdownChangesEvent)), |
info_status(Directory::KERNEL_SHARE_INFO_VALID), |
persisted_info(info.kernel_info), |
cache_guid(info.cache_guid), |
@@ -195,7 +194,7 @@ void Directory::Kernel::Release() { |
Directory::Kernel::~Kernel() { |
CHECK(0 == refcount); |
delete channel; |
- delete changes_channel; |
+ changes_channel.Notify(kShutdownChangesEvent); |
delete unsynced_metahandles; |
delete unapplied_update_metahandles; |
delete dirty_metahandles; |
@@ -898,6 +897,11 @@ void Directory::CheckTreeInvariants(syncable::BaseTransaction* trans, |
// pulling entries into RAM |
} |
+browser_sync::ChannelHookup<DirectoryChangeEvent>* Directory::AddChangeObserver( |
+ browser_sync::ChannelEventHandler<DirectoryChangeEvent>* observer) { |
+ return kernel_->changes_channel.AddObserver(observer); |
+} |
+ |
/////////////////////////////////////////////////////////////////////////////// |
// ScopedKernelLocks |
@@ -954,14 +958,14 @@ void BaseTransaction::UnlockAndLog(OriginalEntries* originals_arg) { |
// Tell listeners to calculate changes while we still have the mutex. |
DirectoryChangeEvent event = { DirectoryChangeEvent::CALCULATE_CHANGES, |
originals.get(), this, writer_ }; |
- dirkernel_->changes_channel->NotifyListeners(event); |
+ dirkernel_->changes_channel.Notify(event); |
dirkernel_->transaction_mutex.Release(); |
DirectoryChangeEvent complete_event = |
{ DirectoryChangeEvent::TRANSACTION_COMPLETE, |
NULL, NULL, INVALID }; |
- dirkernel_->changes_channel->NotifyListeners(complete_event); |
+ dirkernel_->changes_channel.Notify(complete_event); |
} |
ReadTransaction::ReadTransaction(Directory* directory, const char* file, |