OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/sync_file_system/local_file_sync_service.h" | 5 #include "chrome/browser/sync_file_system/local_file_sync_service.h" |
6 | 6 |
7 #include "base/stl_util.h" | 7 #include "base/stl_util.h" |
8 #include "chrome/browser/sync_file_system/local_change_processor.h" | 8 #include "chrome/browser/sync_file_system/local_change_processor.h" |
9 #include "content/public/browser/browser_thread.h" | 9 #include "content/public/browser/browser_thread.h" |
10 #include "googleurl/src/gurl.h" | 10 #include "googleurl/src/gurl.h" |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
141 } | 141 } |
142 | 142 |
143 void LocalFileSyncService::HasPendingLocalChanges( | 143 void LocalFileSyncService::HasPendingLocalChanges( |
144 const fileapi::FileSystemURL& url, | 144 const fileapi::FileSystemURL& url, |
145 const HasPendingLocalChangeCallback& callback) { | 145 const HasPendingLocalChangeCallback& callback) { |
146 DCHECK(ContainsKey(origin_to_contexts_, url.origin())); | 146 DCHECK(ContainsKey(origin_to_contexts_, url.origin())); |
147 sync_context_->HasPendingLocalChanges( | 147 sync_context_->HasPendingLocalChanges( |
148 origin_to_contexts_[url.origin()], url, callback); | 148 origin_to_contexts_[url.origin()], url, callback); |
149 } | 149 } |
150 | 150 |
| 151 void LocalFileSyncService::ClearSyncFlagForURL( |
| 152 const fileapi::FileSystemURL& url) { |
| 153 DCHECK(ContainsKey(origin_to_contexts_, url.origin())); |
| 154 sync_context_->ClearSyncFlagForURL(url); |
| 155 } |
| 156 |
151 void LocalFileSyncService::GetLocalFileMetadata( | 157 void LocalFileSyncService::GetLocalFileMetadata( |
152 const fileapi::FileSystemURL& url, | 158 const fileapi::FileSystemURL& url, |
153 const SyncFileMetadataCallback& callback) { | 159 const SyncFileMetadataCallback& callback) { |
154 DCHECK(ContainsKey(origin_to_contexts_, url.origin())); | 160 DCHECK(ContainsKey(origin_to_contexts_, url.origin())); |
155 sync_context_->GetFileMetadata(origin_to_contexts_[url.origin()], | 161 sync_context_->GetFileMetadata(origin_to_contexts_[url.origin()], |
156 url, callback); | 162 url, callback); |
157 } | 163 } |
158 | 164 |
159 void LocalFileSyncService::PrepareForProcessRemoteChange( | 165 void LocalFileSyncService::PrepareForProcessRemoteChange( |
160 const FileSystemURL& url, | 166 const FileSystemURL& url, |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
210 local_sync_callback_.Reset(); | 216 local_sync_callback_.Reset(); |
211 callback.Run(status, url); | 217 callback.Run(status, url); |
212 } | 218 } |
213 | 219 |
214 void LocalFileSyncService::DidGetFileForLocalSync( | 220 void LocalFileSyncService::DidGetFileForLocalSync( |
215 LocalChangeProcessor* processor, | 221 LocalChangeProcessor* processor, |
216 SyncStatusCode status, | 222 SyncStatusCode status, |
217 const LocalFileSyncInfo& sync_file_info) { | 223 const LocalFileSyncInfo& sync_file_info) { |
218 DCHECK(!local_sync_callback_.is_null()); | 224 DCHECK(!local_sync_callback_.is_null()); |
219 if (status != fileapi::SYNC_STATUS_OK) { | 225 if (status != fileapi::SYNC_STATUS_OK) { |
220 RunLocalSyncCallback(status, FileSystemURL()); | 226 RunLocalSyncCallback(status, sync_file_info.url); |
221 return; | 227 return; |
222 } | 228 } |
223 if (sync_file_info.changes.empty()) { | 229 if (sync_file_info.changes.empty()) { |
224 // There's a slight chance this could happen. | 230 // There's a slight chance this could happen. |
225 fileapi::SyncFileCallback callback = local_sync_callback_; | 231 fileapi::SyncFileCallback callback = local_sync_callback_; |
226 local_sync_callback_.Reset(); | 232 local_sync_callback_.Reset(); |
227 ProcessLocalChange(processor, callback); | 233 ProcessLocalChange(processor, callback); |
228 return; | 234 return; |
229 } | 235 } |
230 | 236 |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
265 // a sync error. | 271 // a sync error. |
266 | 272 |
267 const FileSystemURL& url = sync_file_info.url; | 273 const FileSystemURL& url = sync_file_info.url; |
268 if (status != fileapi::SYNC_STATUS_OK || changes.empty()) { | 274 if (status != fileapi::SYNC_STATUS_OK || changes.empty()) { |
269 if (status == fileapi::SYNC_STATUS_OK || | 275 if (status == fileapi::SYNC_STATUS_OK || |
270 status == fileapi::SYNC_STATUS_HAS_CONFLICT) { | 276 status == fileapi::SYNC_STATUS_HAS_CONFLICT) { |
271 // Clear the recorded changes for the URL if the sync was successfull | 277 // Clear the recorded changes for the URL if the sync was successfull |
272 // OR has failed due to conflict (so that we won't stick to the same | 278 // OR has failed due to conflict (so that we won't stick to the same |
273 // conflicting file again and again). | 279 // conflicting file again and again). |
274 DCHECK(ContainsKey(origin_to_contexts_, url.origin())); | 280 DCHECK(ContainsKey(origin_to_contexts_, url.origin())); |
275 sync_context_->FinalizeSyncForURL(origin_to_contexts_[url.origin()], url); | 281 sync_context_->ClearChangesForURL( |
| 282 origin_to_contexts_[url.origin()], url, |
| 283 base::Bind(&LocalFileSyncService::RunLocalSyncCallback, |
| 284 AsWeakPtr(), status, url)); |
| 285 return; |
276 } | 286 } |
277 RunLocalSyncCallback(status, url); | 287 RunLocalSyncCallback(status, url); |
278 return; | 288 return; |
279 } | 289 } |
280 | 290 |
281 DCHECK(processor); | 291 DCHECK(processor); |
282 processor->ApplyLocalChange( | 292 processor->ApplyLocalChange( |
283 changes.front(), | 293 changes.front(), |
284 sync_file_info.local_file_path, | 294 sync_file_info.local_file_path, |
285 sync_file_info.metadata, | 295 sync_file_info.metadata, |
286 url, | 296 url, |
287 base::Bind(&LocalFileSyncService::ProcessNextChangeForURL, | 297 base::Bind(&LocalFileSyncService::ProcessNextChangeForURL, |
288 AsWeakPtr(), processor, sync_file_info, | 298 AsWeakPtr(), processor, sync_file_info, |
289 changes.front(), changes.PopAndGetNewList())); | 299 changes.front(), changes.PopAndGetNewList())); |
290 } | 300 } |
291 | 301 |
292 } // namespace sync_file_system | 302 } // namespace sync_file_system |
OLD | NEW |