Index: chrome/browser/sync_file_system/sync_file_system_service.cc |
diff --git a/chrome/browser/sync_file_system/sync_file_system_service.cc b/chrome/browser/sync_file_system/sync_file_system_service.cc |
index 2c2d7df6c9fbb0098524eb68258e1913095b5f62..78d1aee785df6884036689aa4d746962252fc4a6 100644 |
--- a/chrome/browser/sync_file_system/sync_file_system_service.cc |
+++ b/chrome/browser/sync_file_system/sync_file_system_service.cc |
@@ -221,6 +221,36 @@ void SyncFileSystemService::GetConflictFileInfo( |
url, callback_runner->CreateAssignAndRunCallback(remote_metadata)); |
} |
+void SyncFileSystemService::GetFileSyncStatus( |
+ const fileapi::FileSystemURL& url, |
+ const fileapi::SyncFileStatusCallback& callback) { |
+ DCHECK(local_file_service_); |
+ DCHECK(remote_file_service_); |
+ |
+ if (!ContainsKey(initialized_app_origins_, url.origin())) { |
+ base::MessageLoopProxy::current()->PostTask( |
+ FROM_HERE, |
+ base::Bind(callback, |
+ fileapi::SYNC_STATUS_NOT_INITIALIZED, |
+ fileapi::SYNC_FILE_STATUS_UNKNOWN)); |
+ return; |
+ } |
+ |
+ if (remote_file_service_->IsConflicting(url)) { |
+ base::MessageLoopProxy::current()->PostTask( |
+ FROM_HERE, |
+ base::Bind(callback, |
+ fileapi::SYNC_STATUS_OK, |
+ fileapi::SYNC_FILE_STATUS_CONFLICTING)); |
+ return; |
+ } |
+ |
+ local_file_service_->HasPendingLocalChanges( |
+ url, |
+ base::Bind(&SyncFileSystemService::DidGetLocalChangeStatus, |
+ AsWeakPtr(), callback)); |
+} |
+ |
void SyncFileSystemService::AddSyncEventObserver(SyncEventObserver* observer) { |
observers_.AddObserver(observer); |
} |
@@ -385,6 +415,15 @@ void SyncFileSystemService::DidProcessLocalChange( |
AsWeakPtr())); |
} |
+void SyncFileSystemService::DidGetLocalChangeStatus( |
+ const fileapi::SyncFileStatusCallback& callback, |
+ bool has_pending_local_changes) { |
+ callback.Run( |
+ fileapi::SYNC_STATUS_OK, |
+ has_pending_local_changes ? fileapi::SYNC_FILE_STATUS_HAS_PENDING_CHANGES |
+ : fileapi::SYNC_FILE_STATUS_SYNCED); |
+} |
+ |
void SyncFileSystemService::OnSyncEnabledForRemoteSync() { |
is_waiting_remote_sync_enabled_ = false; |
MaybeStartRemoteSync(); |