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

Side by Side Diff: chrome/browser/sync_file_system/drive_backend/sync_engine.cc

Issue 318353002: [SyncFS] Create SyncWorkerInterface (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 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 | Annotate | Revision Log
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/drive_backend/sync_engine.h" 5 #include "chrome/browser/sync_file_system/drive_backend/sync_engine.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 SyncEngine::~SyncEngine() { 207 SyncEngine::~SyncEngine() {
208 net::NetworkChangeNotifier::RemoveNetworkChangeObserver(this); 208 net::NetworkChangeNotifier::RemoveNetworkChangeObserver(this);
209 GetDriveService()->RemoveObserver(this); 209 GetDriveService()->RemoveObserver(this);
210 if (notification_manager_) 210 if (notification_manager_)
211 notification_manager_->RemoveObserver(this); 211 notification_manager_->RemoveObserver(this);
212 212
213 WorkerObserver* worker_observer = worker_observer_.release(); 213 WorkerObserver* worker_observer = worker_observer_.release();
214 if (!worker_task_runner_->DeleteSoon(FROM_HERE, worker_observer)) 214 if (!worker_task_runner_->DeleteSoon(FROM_HERE, worker_observer))
215 delete worker_observer; 215 delete worker_observer;
216 216
217 SyncWorker* sync_worker = sync_worker_.release(); 217 SyncWorkerInterface* sync_worker = sync_worker_.release();
218 if (!worker_task_runner_->DeleteSoon(FROM_HERE, sync_worker)) { 218 if (!worker_task_runner_->DeleteSoon(FROM_HERE, sync_worker)) {
219 sync_worker->DetachFromSequence(); 219 sync_worker->DetachFromSequence();
220 delete sync_worker; 220 delete sync_worker;
221 } 221 }
222 } 222 }
223 223
224 void SyncEngine::Initialize(const base::FilePath& base_dir, 224 void SyncEngine::Initialize(const base::FilePath& base_dir,
225 TaskLogger* task_logger, 225 TaskLogger* task_logger,
226 base::SequencedTaskRunner* file_task_runner, 226 base::SequencedTaskRunner* file_task_runner,
227 leveldb::Env* env_override) { 227 leveldb::Env* env_override) {
(...skipping 16 matching lines...) Expand all
244 file_task_runner)); 244 file_task_runner));
245 245
246 worker_observer_.reset( 246 worker_observer_.reset(
247 new WorkerObserver(base::MessageLoopProxy::current(), 247 new WorkerObserver(base::MessageLoopProxy::current(),
248 weak_ptr_factory_.GetWeakPtr())); 248 weak_ptr_factory_.GetWeakPtr()));
249 249
250 base::WeakPtr<ExtensionServiceInterface> extension_service_weak_ptr; 250 base::WeakPtr<ExtensionServiceInterface> extension_service_weak_ptr;
251 if (extension_service_) 251 if (extension_service_)
252 extension_service_weak_ptr = extension_service_->AsWeakPtr(); 252 extension_service_weak_ptr = extension_service_->AsWeakPtr();
253 253
254 sync_worker_.reset(new SyncWorker( 254 scoped_ptr<SyncWorker> worker(new SyncWorker(
255 base_dir, 255 base_dir,
256 extension_service_weak_ptr, 256 extension_service_weak_ptr,
257 sync_engine_context.Pass(), 257 sync_engine_context.Pass(),
258 env_override)); 258 env_override));
259 sync_worker_->AddObserver(worker_observer_.get()); 259 worker->AddObserver(worker_observer_.get());
260
261 sync_worker_ = worker.PassAs<SyncWorkerInterface>();
260 worker_task_runner_->PostTask( 262 worker_task_runner_->PostTask(
261 FROM_HERE, 263 FROM_HERE,
262 base::Bind(&SyncWorker::Initialize, 264 base::Bind(&SyncWorkerInterface::Initialize,
263 base::Unretained(sync_worker_.get()))); 265 base::Unretained(sync_worker_.get())));
264 266
265 if (notification_manager_) 267 if (notification_manager_)
266 notification_manager_->AddObserver(this); 268 notification_manager_->AddObserver(this);
267 GetDriveService()->AddObserver(this); 269 GetDriveService()->AddObserver(this);
268 net::NetworkChangeNotifier::AddNetworkChangeObserver(this); 270 net::NetworkChangeNotifier::AddNetworkChangeObserver(this);
269 } 271 }
270 272
271 void SyncEngine::AddServiceObserver(SyncServiceObserver* observer) { 273 void SyncEngine::AddServiceObserver(SyncServiceObserver* observer) {
272 service_observers_.AddObserver(observer); 274 service_observers_.AddObserver(observer);
273 } 275 }
274 276
275 void SyncEngine::AddFileStatusObserver(FileStatusObserver* observer) { 277 void SyncEngine::AddFileStatusObserver(FileStatusObserver* observer) {
276 file_status_observers_.AddObserver(observer); 278 file_status_observers_.AddObserver(observer);
277 } 279 }
278 280
279 void SyncEngine::RegisterOrigin(const GURL& origin, 281 void SyncEngine::RegisterOrigin(const GURL& origin,
280 const SyncStatusCallback& callback) { 282 const SyncStatusCallback& callback) {
281 SyncStatusCallback relayed_callback = RelayCallbackToCurrentThread( 283 SyncStatusCallback relayed_callback = RelayCallbackToCurrentThread(
282 FROM_HERE, base::Bind(&DidRegisterOrigin, base::TimeTicks::Now(), 284 FROM_HERE, base::Bind(&DidRegisterOrigin, base::TimeTicks::Now(),
283 TrackCallback(callback))); 285 TrackCallback(callback)));
284 286
285 worker_task_runner_->PostTask( 287 worker_task_runner_->PostTask(
286 FROM_HERE, 288 FROM_HERE,
287 base::Bind(&SyncWorker::RegisterOrigin, 289 base::Bind(&SyncWorkerInterface::RegisterOrigin,
288 base::Unretained(sync_worker_.get()), 290 base::Unretained(sync_worker_.get()),
289 origin, relayed_callback)); 291 origin, relayed_callback));
290 } 292 }
291 293
292 void SyncEngine::EnableOrigin( 294 void SyncEngine::EnableOrigin(
293 const GURL& origin, const SyncStatusCallback& callback) { 295 const GURL& origin, const SyncStatusCallback& callback) {
294 SyncStatusCallback relayed_callback = RelayCallbackToCurrentThread( 296 SyncStatusCallback relayed_callback = RelayCallbackToCurrentThread(
295 FROM_HERE, TrackCallback(callback)); 297 FROM_HERE, TrackCallback(callback));
296 298
297 worker_task_runner_->PostTask( 299 worker_task_runner_->PostTask(
298 FROM_HERE, 300 FROM_HERE,
299 base::Bind(&SyncWorker::EnableOrigin, 301 base::Bind(&SyncWorkerInterface::EnableOrigin,
300 base::Unretained(sync_worker_.get()), 302 base::Unretained(sync_worker_.get()),
301 origin, relayed_callback)); 303 origin, relayed_callback));
302 } 304 }
303 305
304 void SyncEngine::DisableOrigin( 306 void SyncEngine::DisableOrigin(
305 const GURL& origin, const SyncStatusCallback& callback) { 307 const GURL& origin, const SyncStatusCallback& callback) {
306 SyncStatusCallback relayed_callback = RelayCallbackToCurrentThread( 308 SyncStatusCallback relayed_callback = RelayCallbackToCurrentThread(
307 FROM_HERE, TrackCallback(callback)); 309 FROM_HERE, TrackCallback(callback));
308 310
309 worker_task_runner_->PostTask( 311 worker_task_runner_->PostTask(
310 FROM_HERE, 312 FROM_HERE,
311 base::Bind(&SyncWorker::DisableOrigin, 313 base::Bind(&SyncWorkerInterface::DisableOrigin,
312 base::Unretained(sync_worker_.get()), 314 base::Unretained(sync_worker_.get()),
313 origin, 315 origin,
314 relayed_callback)); 316 relayed_callback));
315 } 317 }
316 318
317 void SyncEngine::UninstallOrigin( 319 void SyncEngine::UninstallOrigin(
318 const GURL& origin, 320 const GURL& origin,
319 UninstallFlag flag, 321 UninstallFlag flag,
320 const SyncStatusCallback& callback) { 322 const SyncStatusCallback& callback) {
321 SyncStatusCallback relayed_callback = RelayCallbackToCurrentThread( 323 SyncStatusCallback relayed_callback = RelayCallbackToCurrentThread(
322 FROM_HERE, TrackCallback(callback)); 324 FROM_HERE, TrackCallback(callback));
323 worker_task_runner_->PostTask( 325 worker_task_runner_->PostTask(
324 FROM_HERE, 326 FROM_HERE,
325 base::Bind(&SyncWorker::UninstallOrigin, 327 base::Bind(&SyncWorkerInterface::UninstallOrigin,
326 base::Unretained(sync_worker_.get()), 328 base::Unretained(sync_worker_.get()),
327 origin, flag, relayed_callback)); 329 origin, flag, relayed_callback));
328 } 330 }
329 331
330 void SyncEngine::ProcessRemoteChange(const SyncFileCallback& callback) { 332 void SyncEngine::ProcessRemoteChange(const SyncFileCallback& callback) {
331 SyncFileCallback tracked_callback = callback_tracker_.Register( 333 SyncFileCallback tracked_callback = callback_tracker_.Register(
332 base::Bind(callback, SYNC_STATUS_ABORT, fileapi::FileSystemURL()), 334 base::Bind(callback, SYNC_STATUS_ABORT, fileapi::FileSystemURL()),
333 callback); 335 callback);
334 SyncFileCallback relayed_callback = RelayCallbackToCurrentThread( 336 SyncFileCallback relayed_callback = RelayCallbackToCurrentThread(
335 FROM_HERE, tracked_callback); 337 FROM_HERE, tracked_callback);
336 worker_task_runner_->PostTask( 338 worker_task_runner_->PostTask(
337 FROM_HERE, 339 FROM_HERE,
338 base::Bind(&SyncWorker::ProcessRemoteChange, 340 base::Bind(&SyncWorkerInterface::ProcessRemoteChange,
339 base::Unretained(sync_worker_.get()), 341 base::Unretained(sync_worker_.get()),
340 relayed_callback)); 342 relayed_callback));
341 } 343 }
342 344
343 void SyncEngine::SetRemoteChangeProcessor(RemoteChangeProcessor* processor) { 345 void SyncEngine::SetRemoteChangeProcessor(RemoteChangeProcessor* processor) {
344 remote_change_processor_ = processor; 346 remote_change_processor_ = processor;
345 remote_change_processor_wrapper_.reset( 347 remote_change_processor_wrapper_.reset(
346 new RemoteChangeProcessorWrapper(processor)); 348 new RemoteChangeProcessorWrapper(processor));
347 349
348 remote_change_processor_on_worker_.reset(new RemoteChangeProcessorOnWorker( 350 remote_change_processor_on_worker_.reset(new RemoteChangeProcessorOnWorker(
349 remote_change_processor_wrapper_->AsWeakPtr(), 351 remote_change_processor_wrapper_->AsWeakPtr(),
350 base::MessageLoopProxy::current(), /* ui_task_runner */ 352 base::MessageLoopProxy::current(), /* ui_task_runner */
351 worker_task_runner_)); 353 worker_task_runner_));
352 354
353 worker_task_runner_->PostTask( 355 worker_task_runner_->PostTask(
354 FROM_HERE, 356 FROM_HERE,
355 base::Bind(&SyncWorker::SetRemoteChangeProcessor, 357 base::Bind(&SyncWorkerInterface::SetRemoteChangeProcessor,
356 base::Unretained(sync_worker_.get()), 358 base::Unretained(sync_worker_.get()),
357 remote_change_processor_on_worker_.get())); 359 remote_change_processor_on_worker_.get()));
358 } 360 }
359 361
360 LocalChangeProcessor* SyncEngine::GetLocalChangeProcessor() { 362 LocalChangeProcessor* SyncEngine::GetLocalChangeProcessor() {
361 return this; 363 return this;
362 } 364 }
363 365
364 RemoteServiceState SyncEngine::GetCurrentState() const { 366 RemoteServiceState SyncEngine::GetCurrentState() const {
365 return service_state_; 367 return service_state_;
366 } 368 }
367 369
368 void SyncEngine::GetOriginStatusMap(const StatusMapCallback& callback) { 370 void SyncEngine::GetOriginStatusMap(const StatusMapCallback& callback) {
369 StatusMapCallback tracked_callback = 371 StatusMapCallback tracked_callback =
370 callback_tracker_.Register( 372 callback_tracker_.Register(
371 base::Bind(callback, base::Passed(scoped_ptr<OriginStatusMap>())), 373 base::Bind(callback, base::Passed(scoped_ptr<OriginStatusMap>())),
372 callback); 374 callback);
373 375
374 StatusMapCallback relayed_callback = 376 StatusMapCallback relayed_callback =
375 RelayCallbackToCurrentThread(FROM_HERE, tracked_callback); 377 RelayCallbackToCurrentThread(FROM_HERE, tracked_callback);
376 378
377 worker_task_runner_->PostTask( 379 worker_task_runner_->PostTask(
378 FROM_HERE, 380 FROM_HERE,
379 base::Bind(&SyncWorker::GetOriginStatusMap, 381 base::Bind(&SyncWorkerInterface::GetOriginStatusMap,
380 base::Unretained(sync_worker_.get()), 382 base::Unretained(sync_worker_.get()),
381 relayed_callback)); 383 relayed_callback));
382 } 384 }
383 385
384 void SyncEngine::DumpFiles(const GURL& origin, 386 void SyncEngine::DumpFiles(const GURL& origin,
385 const ListCallback& callback) { 387 const ListCallback& callback) {
386 ListCallback tracked_callback = 388 ListCallback tracked_callback =
387 callback_tracker_.Register( 389 callback_tracker_.Register(
388 base::Bind(callback, base::Passed(scoped_ptr<base::ListValue>())), 390 base::Bind(callback, base::Passed(scoped_ptr<base::ListValue>())),
389 callback); 391 callback);
390 392
391 PostTaskAndReplyWithResult( 393 PostTaskAndReplyWithResult(
392 worker_task_runner_, 394 worker_task_runner_,
393 FROM_HERE, 395 FROM_HERE,
394 base::Bind(&SyncWorker::DumpFiles, 396 base::Bind(&SyncWorkerInterface::DumpFiles,
395 base::Unretained(sync_worker_.get()), 397 base::Unretained(sync_worker_.get()),
396 origin), 398 origin),
397 tracked_callback); 399 tracked_callback);
398 } 400 }
399 401
400 void SyncEngine::DumpDatabase(const ListCallback& callback) { 402 void SyncEngine::DumpDatabase(const ListCallback& callback) {
401 ListCallback tracked_callback = 403 ListCallback tracked_callback =
402 callback_tracker_.Register( 404 callback_tracker_.Register(
403 base::Bind(callback, base::Passed(scoped_ptr<base::ListValue>())), 405 base::Bind(callback, base::Passed(scoped_ptr<base::ListValue>())),
404 callback); 406 callback);
405 407
406 PostTaskAndReplyWithResult( 408 PostTaskAndReplyWithResult(
407 worker_task_runner_, 409 worker_task_runner_,
408 FROM_HERE, 410 FROM_HERE,
409 base::Bind(&SyncWorker::DumpDatabase, 411 base::Bind(&SyncWorkerInterface::DumpDatabase,
410 base::Unretained(sync_worker_.get())), 412 base::Unretained(sync_worker_.get())),
411 tracked_callback); 413 tracked_callback);
412 } 414 }
413 415
414 void SyncEngine::SetSyncEnabled(bool enabled) { 416 void SyncEngine::SetSyncEnabled(bool enabled) {
415 worker_task_runner_->PostTask( 417 worker_task_runner_->PostTask(
416 FROM_HERE, 418 FROM_HERE,
417 base::Bind(&SyncWorker::SetSyncEnabled, 419 base::Bind(&SyncWorkerInterface::SetSyncEnabled,
418 base::Unretained(sync_worker_.get()), 420 base::Unretained(sync_worker_.get()),
419 enabled)); 421 enabled));
420 } 422 }
421 423
422 void SyncEngine::PromoteDemotedChanges() { 424 void SyncEngine::PromoteDemotedChanges() {
423 worker_task_runner_->PostTask( 425 worker_task_runner_->PostTask(
424 FROM_HERE, 426 FROM_HERE,
425 base::Bind(&SyncWorker::PromoteDemotedChanges, 427 base::Bind(&SyncWorkerInterface::PromoteDemotedChanges,
426 base::Unretained(sync_worker_.get()))); 428 base::Unretained(sync_worker_.get())));
427 } 429 }
428 430
429 void SyncEngine::ApplyLocalChange( 431 void SyncEngine::ApplyLocalChange(
430 const FileChange& local_change, 432 const FileChange& local_change,
431 const base::FilePath& local_path, 433 const base::FilePath& local_path,
432 const SyncFileMetadata& local_metadata, 434 const SyncFileMetadata& local_metadata,
433 const fileapi::FileSystemURL& url, 435 const fileapi::FileSystemURL& url,
434 const SyncStatusCallback& callback) { 436 const SyncStatusCallback& callback) {
435 SyncStatusCallback relayed_callback = RelayCallbackToCurrentThread( 437 SyncStatusCallback relayed_callback = RelayCallbackToCurrentThread(
436 FROM_HERE, TrackCallback(callback)); 438 FROM_HERE, TrackCallback(callback));
437 worker_task_runner_->PostTask( 439 worker_task_runner_->PostTask(
438 FROM_HERE, 440 FROM_HERE,
439 base::Bind(&SyncWorker::ApplyLocalChange, 441 base::Bind(&SyncWorkerInterface::ApplyLocalChange,
440 base::Unretained(sync_worker_.get()), 442 base::Unretained(sync_worker_.get()),
441 local_change, 443 local_change,
442 local_path, 444 local_path,
443 local_metadata, 445 local_metadata,
444 url, 446 url,
445 relayed_callback)); 447 relayed_callback));
446 } 448 }
447 449
448 void SyncEngine::OnNotificationReceived() { 450 void SyncEngine::OnNotificationReceived() {
449 worker_task_runner_->PostTask( 451 worker_task_runner_->PostTask(
450 FROM_HERE, 452 FROM_HERE,
451 base::Bind(&SyncWorker::OnNotificationReceived, 453 base::Bind(&SyncWorkerInterface::OnNotificationReceived,
452 base::Unretained(sync_worker_.get()))); 454 base::Unretained(sync_worker_.get())));
453 } 455 }
454 456
455 void SyncEngine::OnPushNotificationEnabled(bool) {} 457 void SyncEngine::OnPushNotificationEnabled(bool) {}
456 458
457 void SyncEngine::OnReadyToSendRequests() { 459 void SyncEngine::OnReadyToSendRequests() {
458 // TODO(tzik): Drop current Syncworker and replace with new one. 460 // TODO(tzik): Drop current Syncworker and replace with new one.
459 461
460 const std::string account_id = 462 const std::string account_id =
461 signin_manager_ ? signin_manager_->GetAuthenticatedAccountId() : ""; 463 signin_manager_ ? signin_manager_->GetAuthenticatedAccountId() : "";
462 464
463 worker_task_runner_->PostTask( 465 worker_task_runner_->PostTask(
464 FROM_HERE, 466 FROM_HERE,
465 base::Bind(&SyncWorker::OnReadyToSendRequests, 467 base::Bind(&SyncWorkerInterface::OnReadyToSendRequests,
466 base::Unretained(sync_worker_.get()), 468 base::Unretained(sync_worker_.get()),
467 account_id)); 469 account_id));
468 } 470 }
469 471
470 void SyncEngine::OnRefreshTokenInvalid() { 472 void SyncEngine::OnRefreshTokenInvalid() {
471 worker_task_runner_->PostTask( 473 worker_task_runner_->PostTask(
472 FROM_HERE, 474 FROM_HERE,
473 base::Bind(&SyncWorker::OnRefreshTokenInvalid, 475 base::Bind(&SyncWorkerInterface::OnRefreshTokenInvalid,
474 base::Unretained(sync_worker_.get()))); 476 base::Unretained(sync_worker_.get())));
475 } 477 }
476 478
477 void SyncEngine::OnNetworkChanged( 479 void SyncEngine::OnNetworkChanged(
478 net::NetworkChangeNotifier::ConnectionType type) { 480 net::NetworkChangeNotifier::ConnectionType type) {
479 worker_task_runner_->PostTask( 481 worker_task_runner_->PostTask(
480 FROM_HERE, 482 FROM_HERE,
481 base::Bind(&SyncWorker::OnNetworkChanged, 483 base::Bind(&SyncWorkerInterface::OnNetworkChanged,
482 base::Unretained(sync_worker_.get()), 484 base::Unretained(sync_worker_.get()),
483 type)); 485 type));
484 } 486 }
485 487
486 drive::DriveServiceInterface* SyncEngine::GetDriveService() { 488 drive::DriveServiceInterface* SyncEngine::GetDriveService() {
487 return drive_service_.get(); 489 return drive_service_.get();
488 } 490 }
489 491
490 drive::DriveUploaderInterface* SyncEngine::GetDriveUploader() { 492 drive::DriveUploaderInterface* SyncEngine::GetDriveUploader() {
491 return drive_uploader_.get(); 493 return drive_uploader_.get();
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
576 578
577 SyncStatusCallback SyncEngine::TrackCallback( 579 SyncStatusCallback SyncEngine::TrackCallback(
578 const SyncStatusCallback& callback) { 580 const SyncStatusCallback& callback) {
579 return callback_tracker_.Register( 581 return callback_tracker_.Register(
580 base::Bind(callback, SYNC_STATUS_ABORT), 582 base::Bind(callback, SYNC_STATUS_ABORT),
581 callback); 583 callback);
582 } 584 }
583 585
584 } // namespace drive_backend 586 } // namespace drive_backend
585 } // namespace sync_file_system 587 } // namespace sync_file_system
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698