Index: webkit/fileapi/syncable/local_file_sync_status.cc |
diff --git a/webkit/fileapi/syncable/local_file_sync_status.cc b/webkit/fileapi/syncable/local_file_sync_status.cc |
index 3be00e3c92b19b3b24b6a204b2ea291486f428bb..e543306b0e6c5c3106fb5a18828b241e44dbf1b4 100644 |
--- a/webkit/fileapi/syncable/local_file_sync_status.cc |
+++ b/webkit/fileapi/syncable/local_file_sync_status.cc |
@@ -21,8 +21,10 @@ void LocalFileSyncStatus::StartWriting(const FileSystemURL& url) { |
void LocalFileSyncStatus::EndWriting(const FileSystemURL& url) { |
DCHECK(CalledOnValidThread()); |
int count = --writing_[url]; |
- if (count == 0) |
+ if (count == 0) { |
writing_.erase(url); |
+ FOR_EACH_OBSERVER(Observer, observer_list_, OnSyncEnabled(url)); |
+ } |
} |
void LocalFileSyncStatus::StartSyncing(const FileSystemURL& url) { |
@@ -34,6 +36,7 @@ void LocalFileSyncStatus::StartSyncing(const FileSystemURL& url) { |
void LocalFileSyncStatus::EndSyncing(const FileSystemURL& url) { |
DCHECK(CalledOnValidThread()); |
syncing_.erase(url); |
+ FOR_EACH_OBSERVER(Observer, observer_list_, OnWriteEnabled(url)); |
} |
bool LocalFileSyncStatus::IsWriting(const FileSystemURL& url) const { |
@@ -46,6 +49,16 @@ bool LocalFileSyncStatus::IsWritable(const FileSystemURL& url) const { |
return !IsChildOrParentSyncing(url); |
} |
+void LocalFileSyncStatus::AddObserver(Observer* observer) { |
+ DCHECK(CalledOnValidThread()); |
+ observer_list_.AddObserver(observer); |
+} |
+ |
+void LocalFileSyncStatus::RemoveObserver(Observer* observer) { |
+ DCHECK(CalledOnValidThread()); |
+ observer_list_.RemoveObserver(observer); |
+} |
+ |
bool LocalFileSyncStatus::IsChildOrParentWriting( |
const FileSystemURL& url) const { |
DCHECK(CalledOnValidThread()); |