Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(221)

Side by Side Diff: chrome/browser/sync_file_system/local/local_file_sync_context.cc

Issue 2826943002: Rewrite base::Bind to base::BindOnce with base_bind_rewriters in //chrome/browser/sync_file_system (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/local_file_sync_context.h" 5 #include "chrome/browser/sync_file_system/local/local_file_sync_context.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/files/file_util.h" 10 #include "base/files/file_util.h"
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 } 64 }
65 65
66 void LocalFileSyncContext::MaybeInitializeFileSystemContext( 66 void LocalFileSyncContext::MaybeInitializeFileSystemContext(
67 const GURL& source_url, 67 const GURL& source_url,
68 FileSystemContext* file_system_context, 68 FileSystemContext* file_system_context,
69 const SyncStatusCallback& callback) { 69 const SyncStatusCallback& callback) {
70 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread()); 70 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread());
71 if (base::ContainsKey(file_system_contexts_, file_system_context)) { 71 if (base::ContainsKey(file_system_contexts_, file_system_context)) {
72 // The context has been already initialized. Just dispatch the callback 72 // The context has been already initialized. Just dispatch the callback
73 // with SYNC_STATUS_OK. 73 // with SYNC_STATUS_OK.
74 ui_task_runner_->PostTask(FROM_HERE, base::Bind(callback, SYNC_STATUS_OK)); 74 ui_task_runner_->PostTask(FROM_HERE,
75 base::BindOnce(callback, SYNC_STATUS_OK));
75 return; 76 return;
76 } 77 }
77 78
78 StatusCallbackQueue& callback_queue = 79 StatusCallbackQueue& callback_queue =
79 pending_initialize_callbacks_[file_system_context]; 80 pending_initialize_callbacks_[file_system_context];
80 callback_queue.push_back(callback); 81 callback_queue.push_back(callback);
81 if (callback_queue.size() > 1) 82 if (callback_queue.size() > 1)
82 return; 83 return;
83 84
84 // The sync service always expects the origin (app) is initialized 85 // The sync service always expects the origin (app) is initialized
85 // for writable way (even when MaybeInitializeFileSystemContext is called 86 // for writable way (even when MaybeInitializeFileSystemContext is called
86 // from read-only OpenFileSystem), so open the filesystem with 87 // from read-only OpenFileSystem), so open the filesystem with
87 // CREATE_IF_NONEXISTENT here. 88 // CREATE_IF_NONEXISTENT here.
88 storage::FileSystemBackend::OpenFileSystemCallback open_filesystem_callback = 89 storage::FileSystemBackend::OpenFileSystemCallback open_filesystem_callback =
89 base::Bind(&LocalFileSyncContext::InitializeFileSystemContextOnIOThread, 90 base::Bind(&LocalFileSyncContext::InitializeFileSystemContextOnIOThread,
90 this, source_url, base::RetainedRef(file_system_context)); 91 this, source_url, base::RetainedRef(file_system_context));
91 io_task_runner_->PostTask( 92 io_task_runner_->PostTask(
92 FROM_HERE, 93 FROM_HERE,
93 base::Bind(&storage::SandboxFileSystemBackendDelegate::OpenFileSystem, 94 base::BindOnce(&storage::SandboxFileSystemBackendDelegate::OpenFileSystem,
94 base::Unretained(file_system_context->sandbox_delegate()), 95 base::Unretained(file_system_context->sandbox_delegate()),
95 source_url, 96 source_url, storage::kFileSystemTypeSyncable,
96 storage::kFileSystemTypeSyncable, 97 storage::OPEN_FILE_SYSTEM_CREATE_IF_NONEXISTENT,
97 storage::OPEN_FILE_SYSTEM_CREATE_IF_NONEXISTENT, 98 open_filesystem_callback, GURL()));
98 open_filesystem_callback,
99 GURL()));
100 } 99 }
101 100
102 void LocalFileSyncContext::ShutdownOnUIThread() { 101 void LocalFileSyncContext::ShutdownOnUIThread() {
103 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread()); 102 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread());
104 shutdown_on_ui_ = true; 103 shutdown_on_ui_ = true;
105 io_task_runner_->PostTask( 104 io_task_runner_->PostTask(
106 FROM_HERE, 105 FROM_HERE,
107 base::Bind(&LocalFileSyncContext::ShutdownOnIOThread, this)); 106 base::BindOnce(&LocalFileSyncContext::ShutdownOnIOThread, this));
108 } 107 }
109 108
110 void LocalFileSyncContext::GetFileForLocalSync( 109 void LocalFileSyncContext::GetFileForLocalSync(
111 FileSystemContext* file_system_context, 110 FileSystemContext* file_system_context,
112 const LocalFileSyncInfoCallback& callback) { 111 const LocalFileSyncInfoCallback& callback) {
113 DCHECK(file_system_context); 112 DCHECK(file_system_context);
114 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread()); 113 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread());
115 114
116 base::PostTaskAndReplyWithResult( 115 base::PostTaskAndReplyWithResult(
117 file_system_context->default_file_task_runner(), FROM_HERE, 116 file_system_context->default_file_task_runner(), FROM_HERE,
118 base::Bind(&LocalFileSyncContext::GetNextURLsForSyncOnFileThread, this, 117 base::Bind(&LocalFileSyncContext::GetNextURLsForSyncOnFileThread, this,
119 base::RetainedRef(file_system_context)), 118 base::RetainedRef(file_system_context)),
120 base::Bind(&LocalFileSyncContext::TryPrepareForLocalSync, this, 119 base::Bind(&LocalFileSyncContext::TryPrepareForLocalSync, this,
121 base::RetainedRef(file_system_context), callback)); 120 base::RetainedRef(file_system_context), callback));
122 } 121 }
123 122
124 void LocalFileSyncContext::ClearChangesForURL( 123 void LocalFileSyncContext::ClearChangesForURL(
125 FileSystemContext* file_system_context, 124 FileSystemContext* file_system_context,
126 const FileSystemURL& url, 125 const FileSystemURL& url,
127 const base::Closure& done_callback) { 126 const base::Closure& done_callback) {
128 // This is initially called on UI thread and to be relayed to FILE thread. 127 // This is initially called on UI thread and to be relayed to FILE thread.
129 DCHECK(file_system_context); 128 DCHECK(file_system_context);
130 if (!file_system_context->default_file_task_runner()-> 129 if (!file_system_context->default_file_task_runner()->
131 RunsTasksOnCurrentThread()) { 130 RunsTasksOnCurrentThread()) {
132 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread()); 131 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread());
133 file_system_context->default_file_task_runner()->PostTask( 132 file_system_context->default_file_task_runner()->PostTask(
134 FROM_HERE, 133 FROM_HERE, base::BindOnce(&LocalFileSyncContext::ClearChangesForURL,
135 base::Bind(&LocalFileSyncContext::ClearChangesForURL, this, 134 this, base::RetainedRef(file_system_context),
136 base::RetainedRef(file_system_context), url, done_callback)); 135 url, done_callback));
137 return; 136 return;
138 } 137 }
139 138
140 SyncFileSystemBackend* backend = 139 SyncFileSystemBackend* backend =
141 SyncFileSystemBackend::GetBackend(file_system_context); 140 SyncFileSystemBackend::GetBackend(file_system_context);
142 DCHECK(backend); 141 DCHECK(backend);
143 DCHECK(backend->change_tracker()); 142 DCHECK(backend->change_tracker());
144 backend->change_tracker()->ClearChangesForURL(url); 143 backend->change_tracker()->ClearChangesForURL(url);
145 144
146 // Call the completion callback on UI thread. 145 // Call the completion callback on UI thread.
147 ui_task_runner_->PostTask(FROM_HERE, done_callback); 146 ui_task_runner_->PostTask(FROM_HERE, done_callback);
148 } 147 }
149 148
150 void LocalFileSyncContext::FinalizeSnapshotSync( 149 void LocalFileSyncContext::FinalizeSnapshotSync(
151 storage::FileSystemContext* file_system_context, 150 storage::FileSystemContext* file_system_context,
152 const storage::FileSystemURL& url, 151 const storage::FileSystemURL& url,
153 SyncStatusCode sync_finish_status, 152 SyncStatusCode sync_finish_status,
154 const base::Closure& done_callback) { 153 const base::Closure& done_callback) {
155 DCHECK(file_system_context); 154 DCHECK(file_system_context);
156 DCHECK(url.is_valid()); 155 DCHECK(url.is_valid());
157 if (!file_system_context->default_file_task_runner()-> 156 if (!file_system_context->default_file_task_runner()->
158 RunsTasksOnCurrentThread()) { 157 RunsTasksOnCurrentThread()) {
159 file_system_context->default_file_task_runner()->PostTask( 158 file_system_context->default_file_task_runner()->PostTask(
160 FROM_HERE, base::Bind(&LocalFileSyncContext::FinalizeSnapshotSync, this, 159 FROM_HERE, base::BindOnce(&LocalFileSyncContext::FinalizeSnapshotSync,
161 base::RetainedRef(file_system_context), url, 160 this, base::RetainedRef(file_system_context),
162 sync_finish_status, done_callback)); 161 url, sync_finish_status, done_callback));
163 return; 162 return;
164 } 163 }
165 164
166 SyncFileSystemBackend* backend = 165 SyncFileSystemBackend* backend =
167 SyncFileSystemBackend::GetBackend(file_system_context); 166 SyncFileSystemBackend::GetBackend(file_system_context);
168 DCHECK(backend); 167 DCHECK(backend);
169 DCHECK(backend->change_tracker()); 168 DCHECK(backend->change_tracker());
170 169
171 if (sync_finish_status == SYNC_STATUS_OK || 170 if (sync_finish_status == SYNC_STATUS_OK ||
172 sync_finish_status == SYNC_STATUS_HAS_CONFLICT) { 171 sync_finish_status == SYNC_STATUS_HAS_CONFLICT) {
173 // Commit the in-memory mirror change. 172 // Commit the in-memory mirror change.
174 backend->change_tracker()->ResetToMirrorAndCommitChangesForURL(url); 173 backend->change_tracker()->ResetToMirrorAndCommitChangesForURL(url);
175 } else { 174 } else {
176 // Abort in-memory mirror change. 175 // Abort in-memory mirror change.
177 backend->change_tracker()->RemoveMirrorAndCommitChangesForURL(url); 176 backend->change_tracker()->RemoveMirrorAndCommitChangesForURL(url);
178 } 177 }
179 178
180 // We've been keeping it in writing mode, so clear the writing counter 179 // We've been keeping it in writing mode, so clear the writing counter
181 // to unblock sync activities. 180 // to unblock sync activities.
182 io_task_runner_->PostTask( 181 io_task_runner_->PostTask(
183 FROM_HERE, base::Bind( 182 FROM_HERE,
184 &LocalFileSyncContext::FinalizeSnapshotSyncOnIOThread, this, url)); 183 base::BindOnce(&LocalFileSyncContext::FinalizeSnapshotSyncOnIOThread,
184 this, url));
185 185
186 // Call the completion callback on UI thread. 186 // Call the completion callback on UI thread.
187 ui_task_runner_->PostTask(FROM_HERE, done_callback); 187 ui_task_runner_->PostTask(FROM_HERE, done_callback);
188 } 188 }
189 189
190 void LocalFileSyncContext::FinalizeExclusiveSync( 190 void LocalFileSyncContext::FinalizeExclusiveSync(
191 storage::FileSystemContext* file_system_context, 191 storage::FileSystemContext* file_system_context,
192 const storage::FileSystemURL& url, 192 const storage::FileSystemURL& url,
193 bool clear_local_changes, 193 bool clear_local_changes,
194 const base::Closure& done_callback) { 194 const base::Closure& done_callback) {
195 DCHECK(file_system_context); 195 DCHECK(file_system_context);
196 if (!url.is_valid()) { 196 if (!url.is_valid()) {
197 done_callback.Run(); 197 done_callback.Run();
198 return; 198 return;
199 } 199 }
200 200
201 if (clear_local_changes) { 201 if (clear_local_changes) {
202 ClearChangesForURL(file_system_context, url, 202 ClearChangesForURL(file_system_context, url,
203 base::Bind(&LocalFileSyncContext::FinalizeExclusiveSync, 203 base::Bind(&LocalFileSyncContext::FinalizeExclusiveSync,
204 this, base::RetainedRef(file_system_context), 204 this, base::RetainedRef(file_system_context),
205 url, false, done_callback)); 205 url, false, done_callback));
206 return; 206 return;
207 } 207 }
208 208
209 io_task_runner_->PostTask( 209 io_task_runner_->PostTask(
210 FROM_HERE, 210 FROM_HERE, base::BindOnce(&LocalFileSyncContext::ClearSyncFlagOnIOThread,
211 base::Bind(&LocalFileSyncContext::ClearSyncFlagOnIOThread, 211 this, url, false /* for_snapshot_sync */));
212 this, url, false /* for_snapshot_sync */));
213 212
214 done_callback.Run(); 213 done_callback.Run();
215 } 214 }
216 215
217 void LocalFileSyncContext::PrepareForSync( 216 void LocalFileSyncContext::PrepareForSync(
218 FileSystemContext* file_system_context, 217 FileSystemContext* file_system_context,
219 const FileSystemURL& url, 218 const FileSystemURL& url,
220 SyncMode sync_mode, 219 SyncMode sync_mode,
221 const LocalFileSyncInfoCallback& callback) { 220 const LocalFileSyncInfoCallback& callback) {
222 // This is initially called on UI thread and to be relayed to IO thread. 221 // This is initially called on UI thread and to be relayed to IO thread.
223 if (!io_task_runner_->RunsTasksOnCurrentThread()) { 222 if (!io_task_runner_->RunsTasksOnCurrentThread()) {
224 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread()); 223 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread());
225 io_task_runner_->PostTask( 224 io_task_runner_->PostTask(
226 FROM_HERE, base::Bind(&LocalFileSyncContext::PrepareForSync, this, 225 FROM_HERE, base::BindOnce(&LocalFileSyncContext::PrepareForSync, this,
227 base::RetainedRef(file_system_context), url, 226 base::RetainedRef(file_system_context), url,
228 sync_mode, callback)); 227 sync_mode, callback));
229 return; 228 return;
230 } 229 }
231 DCHECK(io_task_runner_->RunsTasksOnCurrentThread()); 230 DCHECK(io_task_runner_->RunsTasksOnCurrentThread());
232 const bool syncable = sync_status()->IsSyncable(url); 231 const bool syncable = sync_status()->IsSyncable(url);
233 // Disable writing if it's ready to be synced. 232 // Disable writing if it's ready to be synced.
234 if (syncable) 233 if (syncable)
235 sync_status()->StartSyncing(url); 234 sync_status()->StartSyncing(url);
236 ui_task_runner_->PostTask( 235 ui_task_runner_->PostTask(
237 FROM_HERE, base::Bind(&LocalFileSyncContext::DidGetWritingStatusForSync, 236 FROM_HERE,
238 this, base::RetainedRef(file_system_context), 237 base::BindOnce(&LocalFileSyncContext::DidGetWritingStatusForSync, this,
239 syncable ? SYNC_STATUS_OK : SYNC_STATUS_FILE_BUSY, 238 base::RetainedRef(file_system_context),
240 url, sync_mode, callback)); 239 syncable ? SYNC_STATUS_OK : SYNC_STATUS_FILE_BUSY, url,
240 sync_mode, callback));
241 } 241 }
242 242
243 void LocalFileSyncContext::RegisterURLForWaitingSync( 243 void LocalFileSyncContext::RegisterURLForWaitingSync(
244 const FileSystemURL& url, 244 const FileSystemURL& url,
245 const base::Closure& on_syncable_callback) { 245 const base::Closure& on_syncable_callback) {
246 // This is initially called on UI thread and to be relayed to IO thread. 246 // This is initially called on UI thread and to be relayed to IO thread.
247 if (!io_task_runner_->RunsTasksOnCurrentThread()) { 247 if (!io_task_runner_->RunsTasksOnCurrentThread()) {
248 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread()); 248 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread());
249 io_task_runner_->PostTask( 249 io_task_runner_->PostTask(
250 FROM_HERE, 250 FROM_HERE,
251 base::Bind(&LocalFileSyncContext::RegisterURLForWaitingSync, 251 base::BindOnce(&LocalFileSyncContext::RegisterURLForWaitingSync, this,
252 this, url, on_syncable_callback)); 252 url, on_syncable_callback));
253 return; 253 return;
254 } 254 }
255 DCHECK(io_task_runner_->RunsTasksOnCurrentThread()); 255 DCHECK(io_task_runner_->RunsTasksOnCurrentThread());
256 if (shutdown_on_io_) 256 if (shutdown_on_io_)
257 return; 257 return;
258 if (sync_status()->IsSyncable(url)) { 258 if (sync_status()->IsSyncable(url)) {
259 // No need to register; fire the callback now. 259 // No need to register; fire the callback now.
260 ui_task_runner_->PostTask(FROM_HERE, on_syncable_callback); 260 ui_task_runner_->PostTask(FROM_HERE, on_syncable_callback);
261 return; 261 return;
262 } 262 }
263 url_waiting_sync_on_io_ = url; 263 url_waiting_sync_on_io_ = url;
264 url_syncable_callback_ = on_syncable_callback; 264 url_syncable_callback_ = on_syncable_callback;
265 } 265 }
266 266
267 void LocalFileSyncContext::ApplyRemoteChange( 267 void LocalFileSyncContext::ApplyRemoteChange(
268 FileSystemContext* file_system_context, 268 FileSystemContext* file_system_context,
269 const FileChange& change, 269 const FileChange& change,
270 const base::FilePath& local_path, 270 const base::FilePath& local_path,
271 const FileSystemURL& url, 271 const FileSystemURL& url,
272 const SyncStatusCallback& callback) { 272 const SyncStatusCallback& callback) {
273 if (!io_task_runner_->RunsTasksOnCurrentThread()) { 273 if (!io_task_runner_->RunsTasksOnCurrentThread()) {
274 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread()); 274 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread());
275 io_task_runner_->PostTask( 275 io_task_runner_->PostTask(
276 FROM_HERE, base::Bind(&LocalFileSyncContext::ApplyRemoteChange, this, 276 FROM_HERE, base::BindOnce(&LocalFileSyncContext::ApplyRemoteChange,
277 base::RetainedRef(file_system_context), change, 277 this, base::RetainedRef(file_system_context),
278 local_path, url, callback)); 278 change, local_path, url, callback));
279 return; 279 return;
280 } 280 }
281 DCHECK(io_task_runner_->RunsTasksOnCurrentThread()); 281 DCHECK(io_task_runner_->RunsTasksOnCurrentThread());
282 DCHECK(!sync_status()->IsWritable(url)); 282 DCHECK(!sync_status()->IsWritable(url));
283 DCHECK(!sync_status()->IsWriting(url)); 283 DCHECK(!sync_status()->IsWriting(url));
284 284
285 FileSystemOperation::StatusCallback operation_callback; 285 FileSystemOperation::StatusCallback operation_callback;
286 switch (change.change()) { 286 switch (change.change()) {
287 case FileChange::FILE_CHANGE_DELETE: 287 case FileChange::FILE_CHANGE_DELETE:
288 HandleRemoteDelete(file_system_context, url, callback); 288 HandleRemoteDelete(file_system_context, url, callback);
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
403 FileSystemContext* file_system_context, 403 FileSystemContext* file_system_context,
404 const FileSystemURL& url, 404 const FileSystemURL& url,
405 const FileChange& change, 405 const FileChange& change,
406 const SyncStatusCallback& callback) { 406 const SyncStatusCallback& callback) {
407 // This is called on UI thread and to be relayed to FILE thread. 407 // This is called on UI thread and to be relayed to FILE thread.
408 DCHECK(file_system_context); 408 DCHECK(file_system_context);
409 if (!file_system_context->default_file_task_runner()-> 409 if (!file_system_context->default_file_task_runner()->
410 RunsTasksOnCurrentThread()) { 410 RunsTasksOnCurrentThread()) {
411 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread()); 411 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread());
412 file_system_context->default_file_task_runner()->PostTask( 412 file_system_context->default_file_task_runner()->PostTask(
413 FROM_HERE, base::Bind(&LocalFileSyncContext::RecordFakeLocalChange, 413 FROM_HERE, base::BindOnce(&LocalFileSyncContext::RecordFakeLocalChange,
414 this, base::RetainedRef(file_system_context), url, 414 this, base::RetainedRef(file_system_context),
415 change, callback)); 415 url, change, callback));
416 return; 416 return;
417 } 417 }
418 418
419 SyncFileSystemBackend* backend = 419 SyncFileSystemBackend* backend =
420 SyncFileSystemBackend::GetBackend(file_system_context); 420 SyncFileSystemBackend::GetBackend(file_system_context);
421 DCHECK(backend); 421 DCHECK(backend);
422 DCHECK(backend->change_tracker()); 422 DCHECK(backend->change_tracker());
423 backend->change_tracker()->MarkDirtyOnDatabase(url); 423 backend->change_tracker()->MarkDirtyOnDatabase(url);
424 backend->change_tracker()->RecordChange(url, change); 424 backend->change_tracker()->RecordChange(url, change);
425 425
426 // Fire the callback on UI thread. 426 // Fire the callback on UI thread.
427 ui_task_runner_->PostTask(FROM_HERE, 427 ui_task_runner_->PostTask(FROM_HERE,
428 base::Bind(callback, 428 base::BindOnce(callback, SYNC_STATUS_OK));
429 SYNC_STATUS_OK));
430 } 429 }
431 430
432 void LocalFileSyncContext::GetFileMetadata( 431 void LocalFileSyncContext::GetFileMetadata(
433 FileSystemContext* file_system_context, 432 FileSystemContext* file_system_context,
434 const FileSystemURL& url, 433 const FileSystemURL& url,
435 const SyncFileMetadataCallback& callback) { 434 const SyncFileMetadataCallback& callback) {
436 // This is initially called on UI thread and to be relayed to IO thread. 435 // This is initially called on UI thread and to be relayed to IO thread.
437 if (!io_task_runner_->RunsTasksOnCurrentThread()) { 436 if (!io_task_runner_->RunsTasksOnCurrentThread()) {
438 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread()); 437 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread());
439 io_task_runner_->PostTask( 438 io_task_runner_->PostTask(
440 FROM_HERE, 439 FROM_HERE,
441 base::Bind(&LocalFileSyncContext::GetFileMetadata, this, 440 base::BindOnce(&LocalFileSyncContext::GetFileMetadata, this,
442 base::RetainedRef(file_system_context), url, callback)); 441 base::RetainedRef(file_system_context), url, callback));
443 return; 442 return;
444 } 443 }
445 DCHECK(io_task_runner_->RunsTasksOnCurrentThread()); 444 DCHECK(io_task_runner_->RunsTasksOnCurrentThread());
446 445
447 FileSystemURL url_for_sync = CreateSyncableFileSystemURLForSync( 446 FileSystemURL url_for_sync = CreateSyncableFileSystemURLForSync(
448 file_system_context, url); 447 file_system_context, url);
449 file_system_context->operation_runner()->GetMetadata( 448 file_system_context->operation_runner()->GetMetadata(
450 url_for_sync, FileSystemOperation::GET_METADATA_FIELD_IS_DIRECTORY | 449 url_for_sync, FileSystemOperation::GET_METADATA_FIELD_IS_DIRECTORY |
451 FileSystemOperation::GET_METADATA_FIELD_SIZE | 450 FileSystemOperation::GET_METADATA_FIELD_SIZE |
452 FileSystemOperation::GET_METADATA_FIELD_LAST_MODIFIED, 451 FileSystemOperation::GET_METADATA_FIELD_LAST_MODIFIED,
453 base::Bind(&LocalFileSyncContext::DidGetFileMetadata, this, callback)); 452 base::Bind(&LocalFileSyncContext::DidGetFileMetadata, this, callback));
454 } 453 }
455 454
456 void LocalFileSyncContext::HasPendingLocalChanges( 455 void LocalFileSyncContext::HasPendingLocalChanges(
457 FileSystemContext* file_system_context, 456 FileSystemContext* file_system_context,
458 const FileSystemURL& url, 457 const FileSystemURL& url,
459 const HasPendingLocalChangeCallback& callback) { 458 const HasPendingLocalChangeCallback& callback) {
460 // This gets called on UI thread and relays the task on FILE thread. 459 // This gets called on UI thread and relays the task on FILE thread.
461 DCHECK(file_system_context); 460 DCHECK(file_system_context);
462 if (!file_system_context->default_file_task_runner()-> 461 if (!file_system_context->default_file_task_runner()->
463 RunsTasksOnCurrentThread()) { 462 RunsTasksOnCurrentThread()) {
464 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread()); 463 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread());
465 file_system_context->default_file_task_runner()->PostTask( 464 file_system_context->default_file_task_runner()->PostTask(
466 FROM_HERE, 465 FROM_HERE,
467 base::Bind(&LocalFileSyncContext::HasPendingLocalChanges, this, 466 base::BindOnce(&LocalFileSyncContext::HasPendingLocalChanges, this,
468 base::RetainedRef(file_system_context), url, callback)); 467 base::RetainedRef(file_system_context), url, callback));
469 return; 468 return;
470 } 469 }
471 470
472 SyncFileSystemBackend* backend = 471 SyncFileSystemBackend* backend =
473 SyncFileSystemBackend::GetBackend(file_system_context); 472 SyncFileSystemBackend::GetBackend(file_system_context);
474 DCHECK(backend); 473 DCHECK(backend);
475 DCHECK(backend->change_tracker()); 474 DCHECK(backend->change_tracker());
476 FileChangeList changes; 475 FileChangeList changes;
477 backend->change_tracker()->GetChangesForURL(url, &changes); 476 backend->change_tracker()->GetChangesForURL(url, &changes);
478 477
479 // Fire the callback on UI thread. 478 // Fire the callback on UI thread.
480 ui_task_runner_->PostTask(FROM_HERE, 479 ui_task_runner_->PostTask(
481 base::Bind(callback, 480 FROM_HERE, base::BindOnce(callback, SYNC_STATUS_OK, !changes.empty()));
482 SYNC_STATUS_OK,
483 !changes.empty()));
484 } 481 }
485 482
486 void LocalFileSyncContext::PromoteDemotedChanges( 483 void LocalFileSyncContext::PromoteDemotedChanges(
487 const GURL& origin, 484 const GURL& origin,
488 storage::FileSystemContext* file_system_context, 485 storage::FileSystemContext* file_system_context,
489 const base::Closure& callback) { 486 const base::Closure& callback) {
490 // This is initially called on UI thread and to be relayed to FILE thread. 487 // This is initially called on UI thread and to be relayed to FILE thread.
491 DCHECK(file_system_context); 488 DCHECK(file_system_context);
492 if (!file_system_context->default_file_task_runner()-> 489 if (!file_system_context->default_file_task_runner()->
493 RunsTasksOnCurrentThread()) { 490 RunsTasksOnCurrentThread()) {
494 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread()); 491 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread());
495 file_system_context->default_file_task_runner()->PostTask( 492 file_system_context->default_file_task_runner()->PostTask(
496 FROM_HERE, 493 FROM_HERE,
497 base::Bind(&LocalFileSyncContext::PromoteDemotedChanges, this, origin, 494 base::BindOnce(&LocalFileSyncContext::PromoteDemotedChanges, this,
498 base::RetainedRef(file_system_context), callback)); 495 origin, base::RetainedRef(file_system_context),
496 callback));
499 return; 497 return;
500 } 498 }
501 499
502 SyncFileSystemBackend* backend = 500 SyncFileSystemBackend* backend =
503 SyncFileSystemBackend::GetBackend(file_system_context); 501 SyncFileSystemBackend::GetBackend(file_system_context);
504 DCHECK(backend); 502 DCHECK(backend);
505 DCHECK(backend->change_tracker()); 503 DCHECK(backend->change_tracker());
506 if (!backend->change_tracker()->PromoteDemotedChanges()) { 504 if (!backend->change_tracker()->PromoteDemotedChanges()) {
507 ui_task_runner_->PostTask(FROM_HERE, callback); 505 ui_task_runner_->PostTask(FROM_HERE, callback);
508 return; 506 return;
509 } 507 }
510 508
511 io_task_runner_->PostTask( 509 io_task_runner_->PostTask(
512 FROM_HERE, 510 FROM_HERE, base::BindOnce(&LocalFileSyncContext::UpdateChangesForOrigin,
513 base::Bind(&LocalFileSyncContext::UpdateChangesForOrigin, 511 this, origin, callback));
514 this, origin, callback));
515 } 512 }
516 513
517 void LocalFileSyncContext::UpdateChangesForOrigin( 514 void LocalFileSyncContext::UpdateChangesForOrigin(
518 const GURL& origin, 515 const GURL& origin,
519 const base::Closure& callback) { 516 const base::Closure& callback) {
520 DCHECK(io_task_runner_->RunsTasksOnCurrentThread()); 517 DCHECK(io_task_runner_->RunsTasksOnCurrentThread());
521 if (shutdown_on_io_) 518 if (shutdown_on_io_)
522 return; 519 return;
523 origins_with_pending_changes_.insert(origin); 520 origins_with_pending_changes_.insert(origin);
524 ScheduleNotifyChangesUpdatedOnIOThread(callback); 521 ScheduleNotifyChangesUpdatedOnIOThread(callback);
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
588 void LocalFileSyncContext::NotifyAvailableChangesOnIOThread() { 585 void LocalFileSyncContext::NotifyAvailableChangesOnIOThread() {
589 DCHECK(io_task_runner_->RunsTasksOnCurrentThread()); 586 DCHECK(io_task_runner_->RunsTasksOnCurrentThread());
590 if (shutdown_on_io_) 587 if (shutdown_on_io_)
591 return; 588 return;
592 589
593 std::vector<base::Closure> completion_callbacks; 590 std::vector<base::Closure> completion_callbacks;
594 completion_callbacks.swap(pending_completion_callbacks_); 591 completion_callbacks.swap(pending_completion_callbacks_);
595 592
596 ui_task_runner_->PostTask( 593 ui_task_runner_->PostTask(
597 FROM_HERE, 594 FROM_HERE,
598 base::Bind(&LocalFileSyncContext::NotifyAvailableChanges, 595 base::BindOnce(&LocalFileSyncContext::NotifyAvailableChanges, this,
599 this, origins_with_pending_changes_, 596 origins_with_pending_changes_, completion_callbacks));
600 completion_callbacks));
601 last_notified_changes_ = base::Time::Now(); 597 last_notified_changes_ = base::Time::Now();
602 origins_with_pending_changes_.clear(); 598 origins_with_pending_changes_.clear();
603 } 599 }
604 600
605 void LocalFileSyncContext::NotifyAvailableChanges( 601 void LocalFileSyncContext::NotifyAvailableChanges(
606 const std::set<GURL>& origins, 602 const std::set<GURL>& origins,
607 const std::vector<base::Closure>& callbacks) { 603 const std::vector<base::Closure>& callbacks) {
608 for (auto& observer : origin_change_observers_) 604 for (auto& observer : origin_change_observers_)
609 observer.OnChangesAvailableInOrigins(origins); 605 observer.OnChangesAvailableInOrigins(origins);
610 for (const auto& callback : callbacks) 606 for (const auto& callback : callbacks)
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
729 base::File::FILE_OK); 725 base::File::FILE_OK);
730 } 726 }
731 727
732 void LocalFileSyncContext::DidInitialize( 728 void LocalFileSyncContext::DidInitialize(
733 const GURL& source_url, 729 const GURL& source_url,
734 FileSystemContext* file_system_context, 730 FileSystemContext* file_system_context,
735 SyncStatusCode status) { 731 SyncStatusCode status) {
736 if (!ui_task_runner_->RunsTasksOnCurrentThread()) { 732 if (!ui_task_runner_->RunsTasksOnCurrentThread()) {
737 ui_task_runner_->PostTask( 733 ui_task_runner_->PostTask(
738 FROM_HERE, 734 FROM_HERE,
739 base::Bind(&LocalFileSyncContext::DidInitialize, this, source_url, 735 base::BindOnce(&LocalFileSyncContext::DidInitialize, this, source_url,
740 base::RetainedRef(file_system_context), status)); 736 base::RetainedRef(file_system_context), status));
741 return; 737 return;
742 } 738 }
743 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread()); 739 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread());
744 DCHECK(!base::ContainsKey(file_system_contexts_, file_system_context)); 740 DCHECK(!base::ContainsKey(file_system_contexts_, file_system_context));
745 DCHECK(base::ContainsKey(pending_initialize_callbacks_, file_system_context)); 741 DCHECK(base::ContainsKey(pending_initialize_callbacks_, file_system_context));
746 742
747 SyncFileSystemBackend* backend = 743 SyncFileSystemBackend* backend =
748 SyncFileSystemBackend::GetBackend(file_system_context); 744 SyncFileSystemBackend::GetBackend(file_system_context);
749 DCHECK(backend); 745 DCHECK(backend);
750 DCHECK(backend->change_tracker()); 746 DCHECK(backend->change_tracker());
751 747
752 file_system_contexts_.insert(file_system_context); 748 file_system_contexts_.insert(file_system_context);
753 749
754 StatusCallbackQueue& callback_queue = 750 StatusCallbackQueue& callback_queue =
755 pending_initialize_callbacks_[file_system_context]; 751 pending_initialize_callbacks_[file_system_context];
756 for (StatusCallbackQueue::iterator iter = callback_queue.begin(); 752 for (StatusCallbackQueue::iterator iter = callback_queue.begin();
757 iter != callback_queue.end(); ++iter) { 753 iter != callback_queue.end(); ++iter) {
758 ui_task_runner_->PostTask(FROM_HERE, base::Bind(*iter, status)); 754 ui_task_runner_->PostTask(FROM_HERE, base::BindOnce(*iter, status));
759 } 755 }
760 pending_initialize_callbacks_.erase(file_system_context); 756 pending_initialize_callbacks_.erase(file_system_context);
761 } 757 }
762 758
763 std::unique_ptr<LocalFileSyncContext::FileSystemURLQueue> 759 std::unique_ptr<LocalFileSyncContext::FileSystemURLQueue>
764 LocalFileSyncContext::GetNextURLsForSyncOnFileThread( 760 LocalFileSyncContext::GetNextURLsForSyncOnFileThread(
765 FileSystemContext* file_system_context) { 761 FileSystemContext* file_system_context) {
766 DCHECK(file_system_context); 762 DCHECK(file_system_context);
767 DCHECK(file_system_context->default_file_task_runner()-> 763 DCHECK(file_system_context->default_file_task_runner()->
768 RunsTasksOnCurrentThread()); 764 RunsTasksOnCurrentThread());
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
834 FileSystemContext* file_system_context, 830 FileSystemContext* file_system_context,
835 const FileSystemURL& url) { 831 const FileSystemURL& url) {
836 DCHECK(file_system_context); 832 DCHECK(file_system_context);
837 if (!file_system_context->default_file_task_runner()-> 833 if (!file_system_context->default_file_task_runner()->
838 RunsTasksOnCurrentThread()) { 834 RunsTasksOnCurrentThread()) {
839 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread()); 835 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread());
840 if (shutdown_on_ui_) 836 if (shutdown_on_ui_)
841 return; 837 return;
842 file_system_context->default_file_task_runner()->PostTask( 838 file_system_context->default_file_task_runner()->PostTask(
843 FROM_HERE, 839 FROM_HERE,
844 base::Bind(&LocalFileSyncContext::PromoteDemotedChangesForURL, this, 840 base::BindOnce(&LocalFileSyncContext::PromoteDemotedChangesForURL, this,
845 base::RetainedRef(file_system_context), url)); 841 base::RetainedRef(file_system_context), url));
846 return; 842 return;
847 } 843 }
848 844
849 SyncFileSystemBackend* backend = 845 SyncFileSystemBackend* backend =
850 SyncFileSystemBackend::GetBackend(file_system_context); 846 SyncFileSystemBackend::GetBackend(file_system_context);
851 DCHECK(backend); 847 DCHECK(backend);
852 DCHECK(backend->change_tracker()); 848 DCHECK(backend->change_tracker());
853 backend->change_tracker()->PromoteDemotedChangesForURL(url); 849 backend->change_tracker()->PromoteDemotedChangesForURL(url);
854 } 850 }
855 851
856 void LocalFileSyncContext::PromoteDemotedChangesForURLs( 852 void LocalFileSyncContext::PromoteDemotedChangesForURLs(
857 FileSystemContext* file_system_context, 853 FileSystemContext* file_system_context,
858 std::unique_ptr<FileSystemURLQueue> urls) { 854 std::unique_ptr<FileSystemURLQueue> urls) {
859 DCHECK(file_system_context); 855 DCHECK(file_system_context);
860 if (!file_system_context->default_file_task_runner()-> 856 if (!file_system_context->default_file_task_runner()->
861 RunsTasksOnCurrentThread()) { 857 RunsTasksOnCurrentThread()) {
862 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread()); 858 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread());
863 if (shutdown_on_ui_) 859 if (shutdown_on_ui_)
864 return; 860 return;
865 file_system_context->default_file_task_runner()->PostTask( 861 file_system_context->default_file_task_runner()->PostTask(
866 FROM_HERE, 862 FROM_HERE,
867 base::Bind(&LocalFileSyncContext::PromoteDemotedChangesForURLs, this, 863 base::BindOnce(&LocalFileSyncContext::PromoteDemotedChangesForURLs,
868 base::RetainedRef(file_system_context), 864 this, base::RetainedRef(file_system_context),
869 base::Passed(&urls))); 865 base::Passed(&urls)));
870 return; 866 return;
871 } 867 }
872 868
873 for (FileSystemURLQueue::iterator iter = urls->begin(); 869 for (FileSystemURLQueue::iterator iter = urls->begin();
874 iter != urls->end(); ++iter) 870 iter != urls->end(); ++iter)
875 PromoteDemotedChangesForURL(file_system_context, *iter); 871 PromoteDemotedChangesForURL(file_system_context, *iter);
876 } 872 }
877 873
878 void LocalFileSyncContext::DidGetWritingStatusForSync( 874 void LocalFileSyncContext::DidGetWritingStatusForSync(
879 FileSystemContext* file_system_context, 875 FileSystemContext* file_system_context,
880 SyncStatusCode status, 876 SyncStatusCode status,
881 const FileSystemURL& url, 877 const FileSystemURL& url,
882 SyncMode sync_mode, 878 SyncMode sync_mode,
883 const LocalFileSyncInfoCallback& callback) { 879 const LocalFileSyncInfoCallback& callback) {
884 // This gets called on UI thread and relays the task on FILE thread. 880 // This gets called on UI thread and relays the task on FILE thread.
885 DCHECK(file_system_context); 881 DCHECK(file_system_context);
886 if (!file_system_context->default_file_task_runner()-> 882 if (!file_system_context->default_file_task_runner()->
887 RunsTasksOnCurrentThread()) { 883 RunsTasksOnCurrentThread()) {
888 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread()); 884 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread());
889 if (shutdown_on_ui_) { 885 if (shutdown_on_ui_) {
890 callback.Run( 886 callback.Run(
891 SYNC_STATUS_ABORT, LocalFileSyncInfo(), storage::ScopedFile()); 887 SYNC_STATUS_ABORT, LocalFileSyncInfo(), storage::ScopedFile());
892 return; 888 return;
893 } 889 }
894 file_system_context->default_file_task_runner()->PostTask( 890 file_system_context->default_file_task_runner()->PostTask(
895 FROM_HERE, base::Bind(&LocalFileSyncContext::DidGetWritingStatusForSync, 891 FROM_HERE,
896 this, base::RetainedRef(file_system_context), 892 base::BindOnce(&LocalFileSyncContext::DidGetWritingStatusForSync, this,
897 status, url, sync_mode, callback)); 893 base::RetainedRef(file_system_context), status, url,
894 sync_mode, callback));
898 return; 895 return;
899 } 896 }
900 897
901 SyncFileSystemBackend* backend = 898 SyncFileSystemBackend* backend =
902 SyncFileSystemBackend::GetBackend(file_system_context); 899 SyncFileSystemBackend::GetBackend(file_system_context);
903 DCHECK(backend); 900 DCHECK(backend);
904 DCHECK(backend->change_tracker()); 901 DCHECK(backend->change_tracker());
905 FileChangeList changes; 902 FileChangeList changes;
906 backend->change_tracker()->GetChangesForURL(url, &changes); 903 backend->change_tracker()->GetChangesForURL(url, &changes);
907 904
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
957 // changes to both mirror and original records during sync), so that 954 // changes to both mirror and original records during sync), so that
958 // we can reset to the mirror when the sync succeeds. 955 // we can reset to the mirror when the sync succeeds.
959 backend->change_tracker()->CreateFreshMirrorForURL(url); 956 backend->change_tracker()->CreateFreshMirrorForURL(url);
960 } 957 }
961 958
962 // 'Unlock' the file for snapshot sync. 959 // 'Unlock' the file for snapshot sync.
963 // (But keep it in writing status so that no other sync starts on 960 // (But keep it in writing status so that no other sync starts on
964 // the same URL) 961 // the same URL)
965 io_task_runner_->PostTask( 962 io_task_runner_->PostTask(
966 FROM_HERE, 963 FROM_HERE,
967 base::Bind(&LocalFileSyncContext::ClearSyncFlagOnIOThread, 964 base::BindOnce(&LocalFileSyncContext::ClearSyncFlagOnIOThread, this,
968 this, url, true /* for_snapshot_sync */)); 965 url, true /* for_snapshot_sync */));
969 } 966 }
970 967
971 ui_task_runner_->PostTask(FROM_HERE, 968 ui_task_runner_->PostTask(FROM_HERE,
972 base::Bind(callback, status, sync_file_info, 969 base::BindOnce(callback, status, sync_file_info,
973 base::Passed(&snapshot))); 970 base::Passed(&snapshot)));
974 } 971 }
975 972
976 void LocalFileSyncContext::ClearSyncFlagOnIOThread( 973 void LocalFileSyncContext::ClearSyncFlagOnIOThread(
977 const FileSystemURL& url, 974 const FileSystemURL& url,
978 bool for_snapshot_sync) { 975 bool for_snapshot_sync) {
979 DCHECK(io_task_runner_->RunsTasksOnCurrentThread()); 976 DCHECK(io_task_runner_->RunsTasksOnCurrentThread());
980 if (shutdown_on_io_) 977 if (shutdown_on_io_)
981 return; 978 return;
982 sync_status()->EndSyncing(url); 979 sync_status()->EndSyncing(url);
983 980
(...skipping 19 matching lines...) Expand all
1003 } 1000 }
1004 1001
1005 void LocalFileSyncContext::DidApplyRemoteChange( 1002 void LocalFileSyncContext::DidApplyRemoteChange(
1006 const FileSystemURL& url, 1003 const FileSystemURL& url,
1007 const SyncStatusCallback& callback_on_ui, 1004 const SyncStatusCallback& callback_on_ui,
1008 base::File::Error file_error) { 1005 base::File::Error file_error) {
1009 DCHECK(io_task_runner_->RunsTasksOnCurrentThread()); 1006 DCHECK(io_task_runner_->RunsTasksOnCurrentThread());
1010 root_delete_helper_.reset(); 1007 root_delete_helper_.reset();
1011 ui_task_runner_->PostTask( 1008 ui_task_runner_->PostTask(
1012 FROM_HERE, 1009 FROM_HERE,
1013 base::Bind(callback_on_ui, FileErrorToSyncStatusCode(file_error))); 1010 base::BindOnce(callback_on_ui, FileErrorToSyncStatusCode(file_error)));
1014 } 1011 }
1015 1012
1016 void LocalFileSyncContext::DidGetFileMetadata( 1013 void LocalFileSyncContext::DidGetFileMetadata(
1017 const SyncFileMetadataCallback& callback, 1014 const SyncFileMetadataCallback& callback,
1018 base::File::Error file_error, 1015 base::File::Error file_error,
1019 const base::File::Info& file_info) { 1016 const base::File::Info& file_info) {
1020 DCHECK(io_task_runner_->RunsTasksOnCurrentThread()); 1017 DCHECK(io_task_runner_->RunsTasksOnCurrentThread());
1021 SyncFileMetadata metadata; 1018 SyncFileMetadata metadata;
1022 if (file_error == base::File::FILE_OK) { 1019 if (file_error == base::File::FILE_OK) {
1023 metadata.file_type = file_info.is_directory ? 1020 metadata.file_type = file_info.is_directory ?
1024 SYNC_FILE_TYPE_DIRECTORY : SYNC_FILE_TYPE_FILE; 1021 SYNC_FILE_TYPE_DIRECTORY : SYNC_FILE_TYPE_FILE;
1025 metadata.size = file_info.size; 1022 metadata.size = file_info.size;
1026 metadata.last_modified = file_info.last_modified; 1023 metadata.last_modified = file_info.last_modified;
1027 } 1024 }
1028 ui_task_runner_->PostTask( 1025 ui_task_runner_->PostTask(
1029 FROM_HERE, 1026 FROM_HERE, base::BindOnce(callback, FileErrorToSyncStatusCode(file_error),
1030 base::Bind(callback, FileErrorToSyncStatusCode(file_error), metadata)); 1027 metadata));
1031 } 1028 }
1032 1029
1033 base::TimeDelta LocalFileSyncContext::NotifyChangesDuration() { 1030 base::TimeDelta LocalFileSyncContext::NotifyChangesDuration() {
1034 if (mock_notify_changes_duration_in_sec_ >= 0) 1031 if (mock_notify_changes_duration_in_sec_ >= 0)
1035 return base::TimeDelta::FromSeconds(mock_notify_changes_duration_in_sec_); 1032 return base::TimeDelta::FromSeconds(mock_notify_changes_duration_in_sec_);
1036 return base::TimeDelta::FromSeconds(kNotifyChangesDurationInSec); 1033 return base::TimeDelta::FromSeconds(kNotifyChangesDurationInSec);
1037 } 1034 }
1038 1035
1039 void LocalFileSyncContext::DidCreateDirectoryForCopyIn( 1036 void LocalFileSyncContext::DidCreateDirectoryForCopyIn(
1040 FileSystemContext* file_system_context, 1037 FileSystemContext* file_system_context,
1041 const base::FilePath& local_path, 1038 const base::FilePath& local_path,
1042 const FileSystemURL& dest_url, 1039 const FileSystemURL& dest_url,
1043 const StatusCallback& callback, 1040 const StatusCallback& callback,
1044 base::File::Error error) { 1041 base::File::Error error) {
1045 if (error != base::File::FILE_OK) { 1042 if (error != base::File::FILE_OK) {
1046 callback.Run(error); 1043 callback.Run(error);
1047 return; 1044 return;
1048 } 1045 }
1049 1046
1050 FileSystemURL url_for_sync = CreateSyncableFileSystemURLForSync( 1047 FileSystemURL url_for_sync = CreateSyncableFileSystemURLForSync(
1051 file_system_context, dest_url); 1048 file_system_context, dest_url);
1052 file_system_context->operation_runner()->CopyInForeignFile( 1049 file_system_context->operation_runner()->CopyInForeignFile(
1053 local_path, url_for_sync, callback); 1050 local_path, url_for_sync, callback);
1054 } 1051 }
1055 1052
1056 } // namespace sync_file_system 1053 } // namespace sync_file_system
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698