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

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: Fix build errors 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 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
310 worker_task_runner_, 310 worker_task_runner_,
311 file_task_runner_)); 311 file_task_runner_));
312 312
313 worker_observer_.reset( 313 worker_observer_.reset(
314 new WorkerObserver(ui_task_runner_, weak_ptr_factory_.GetWeakPtr())); 314 new WorkerObserver(ui_task_runner_, weak_ptr_factory_.GetWeakPtr()));
315 315
316 base::WeakPtr<ExtensionServiceInterface> extension_service_weak_ptr; 316 base::WeakPtr<ExtensionServiceInterface> extension_service_weak_ptr;
317 if (extension_service_) 317 if (extension_service_)
318 extension_service_weak_ptr = extension_service_->AsWeakPtr(); 318 extension_service_weak_ptr = extension_service_->AsWeakPtr();
319 319
320 sync_worker_.reset(new SyncWorker( 320 scoped_ptr<SyncWorker> worker(new SyncWorker(
321 sync_file_system_dir_, 321 sync_file_system_dir_,
322 extension_service_weak_ptr, 322 extension_service_weak_ptr,
323 sync_engine_context.Pass(), 323 sync_engine_context.Pass(),
324 env_override_)); 324 env_override_));
325 325
326 sync_worker_->AddObserver(worker_observer_.get()); 326 worker->AddObserver(worker_observer_.get());
327 sync_worker_ = worker.PassAs<SyncWorkerInterface>();
328
327 if (remote_change_processor_) 329 if (remote_change_processor_)
328 SetRemoteChangeProcessor(remote_change_processor_); 330 SetRemoteChangeProcessor(remote_change_processor_);
329 331
330 worker_task_runner_->PostTask( 332 worker_task_runner_->PostTask(
331 FROM_HERE, 333 FROM_HERE,
332 base::Bind(&SyncWorker::Initialize, 334 base::Bind(&SyncWorkerInterface::Initialize,
333 base::Unretained(sync_worker_.get()))); 335 base::Unretained(sync_worker_.get())));
334 336
335 if (notification_manager_) 337 if (notification_manager_)
336 notification_manager_->AddObserver(this); 338 notification_manager_->AddObserver(this);
337 drive_service_->AddObserver(this); 339 drive_service_->AddObserver(this);
338 net::NetworkChangeNotifier::AddNetworkChangeObserver(this); 340 net::NetworkChangeNotifier::AddNetworkChangeObserver(this);
339 341
340 service_state_ = REMOTE_SERVICE_TEMPORARY_UNAVAILABLE; 342 service_state_ = REMOTE_SERVICE_TEMPORARY_UNAVAILABLE;
341 SetSyncEnabled(sync_enabled_); 343 SetSyncEnabled(sync_enabled_);
342 OnNetworkChanged(net::NetworkChangeNotifier::GetConnectionType()); 344 OnNetworkChanged(net::NetworkChangeNotifier::GetConnectionType());
343 } 345 }
344 346
345 void SyncEngine::AddServiceObserver(SyncServiceObserver* observer) { 347 void SyncEngine::AddServiceObserver(SyncServiceObserver* observer) {
346 service_observers_.AddObserver(observer); 348 service_observers_.AddObserver(observer);
347 } 349 }
348 350
349 void SyncEngine::AddFileStatusObserver(FileStatusObserver* observer) { 351 void SyncEngine::AddFileStatusObserver(FileStatusObserver* observer) {
350 file_status_observers_.AddObserver(observer); 352 file_status_observers_.AddObserver(observer);
351 } 353 }
352 354
353 void SyncEngine::RegisterOrigin(const GURL& origin, 355 void SyncEngine::RegisterOrigin(const GURL& origin,
354 const SyncStatusCallback& callback) { 356 const SyncStatusCallback& callback) {
355 SyncStatusCallback relayed_callback = RelayCallbackToCurrentThread( 357 SyncStatusCallback relayed_callback = RelayCallbackToCurrentThread(
356 FROM_HERE, base::Bind(&DidRegisterOrigin, base::TimeTicks::Now(), 358 FROM_HERE, base::Bind(&DidRegisterOrigin, base::TimeTicks::Now(),
357 TrackCallback(callback))); 359 TrackCallback(callback)));
358 360
359 worker_task_runner_->PostTask( 361 worker_task_runner_->PostTask(
360 FROM_HERE, 362 FROM_HERE,
361 base::Bind(&SyncWorker::RegisterOrigin, 363 base::Bind(&SyncWorkerInterface::RegisterOrigin,
362 base::Unretained(sync_worker_.get()), 364 base::Unretained(sync_worker_.get()),
363 origin, relayed_callback)); 365 origin, relayed_callback));
364 } 366 }
365 367
366 void SyncEngine::EnableOrigin( 368 void SyncEngine::EnableOrigin(
367 const GURL& origin, const SyncStatusCallback& callback) { 369 const GURL& origin, const SyncStatusCallback& callback) {
368 SyncStatusCallback relayed_callback = RelayCallbackToCurrentThread( 370 SyncStatusCallback relayed_callback = RelayCallbackToCurrentThread(
369 FROM_HERE, TrackCallback(callback)); 371 FROM_HERE, TrackCallback(callback));
370 372
371 worker_task_runner_->PostTask( 373 worker_task_runner_->PostTask(
372 FROM_HERE, 374 FROM_HERE,
373 base::Bind(&SyncWorker::EnableOrigin, 375 base::Bind(&SyncWorkerInterface::EnableOrigin,
374 base::Unretained(sync_worker_.get()), 376 base::Unretained(sync_worker_.get()),
375 origin, relayed_callback)); 377 origin, relayed_callback));
376 } 378 }
377 379
378 void SyncEngine::DisableOrigin( 380 void SyncEngine::DisableOrigin(
379 const GURL& origin, const SyncStatusCallback& callback) { 381 const GURL& origin, const SyncStatusCallback& callback) {
380 SyncStatusCallback relayed_callback = RelayCallbackToCurrentThread( 382 SyncStatusCallback relayed_callback = RelayCallbackToCurrentThread(
381 FROM_HERE, TrackCallback(callback)); 383 FROM_HERE, TrackCallback(callback));
382 384
383 worker_task_runner_->PostTask( 385 worker_task_runner_->PostTask(
384 FROM_HERE, 386 FROM_HERE,
385 base::Bind(&SyncWorker::DisableOrigin, 387 base::Bind(&SyncWorkerInterface::DisableOrigin,
386 base::Unretained(sync_worker_.get()), 388 base::Unretained(sync_worker_.get()),
387 origin, 389 origin,
388 relayed_callback)); 390 relayed_callback));
389 } 391 }
390 392
391 void SyncEngine::UninstallOrigin( 393 void SyncEngine::UninstallOrigin(
392 const GURL& origin, 394 const GURL& origin,
393 UninstallFlag flag, 395 UninstallFlag flag,
394 const SyncStatusCallback& callback) { 396 const SyncStatusCallback& callback) {
395 SyncStatusCallback relayed_callback = RelayCallbackToCurrentThread( 397 SyncStatusCallback relayed_callback = RelayCallbackToCurrentThread(
396 FROM_HERE, TrackCallback(callback)); 398 FROM_HERE, TrackCallback(callback));
397 worker_task_runner_->PostTask( 399 worker_task_runner_->PostTask(
398 FROM_HERE, 400 FROM_HERE,
399 base::Bind(&SyncWorker::UninstallOrigin, 401 base::Bind(&SyncWorkerInterface::UninstallOrigin,
400 base::Unretained(sync_worker_.get()), 402 base::Unretained(sync_worker_.get()),
401 origin, flag, relayed_callback)); 403 origin, flag, relayed_callback));
402 } 404 }
403 405
404 void SyncEngine::ProcessRemoteChange(const SyncFileCallback& callback) { 406 void SyncEngine::ProcessRemoteChange(const SyncFileCallback& callback) {
405 SyncFileCallback tracked_callback = callback_tracker_.Register( 407 SyncFileCallback tracked_callback = callback_tracker_.Register(
406 base::Bind(callback, SYNC_STATUS_ABORT, fileapi::FileSystemURL()), 408 base::Bind(callback, SYNC_STATUS_ABORT, fileapi::FileSystemURL()),
407 callback); 409 callback);
408 SyncFileCallback relayed_callback = RelayCallbackToCurrentThread( 410 SyncFileCallback relayed_callback = RelayCallbackToCurrentThread(
409 FROM_HERE, tracked_callback); 411 FROM_HERE, tracked_callback);
410 worker_task_runner_->PostTask( 412 worker_task_runner_->PostTask(
411 FROM_HERE, 413 FROM_HERE,
412 base::Bind(&SyncWorker::ProcessRemoteChange, 414 base::Bind(&SyncWorkerInterface::ProcessRemoteChange,
413 base::Unretained(sync_worker_.get()), 415 base::Unretained(sync_worker_.get()),
414 relayed_callback)); 416 relayed_callback));
415 } 417 }
416 418
417 void SyncEngine::SetRemoteChangeProcessor(RemoteChangeProcessor* processor) { 419 void SyncEngine::SetRemoteChangeProcessor(RemoteChangeProcessor* processor) {
418 remote_change_processor_ = processor; 420 remote_change_processor_ = processor;
419 remote_change_processor_wrapper_.reset( 421 remote_change_processor_wrapper_.reset(
420 new RemoteChangeProcessorWrapper(processor)); 422 new RemoteChangeProcessorWrapper(processor));
421 423
422 remote_change_processor_on_worker_.reset(new RemoteChangeProcessorOnWorker( 424 remote_change_processor_on_worker_.reset(new RemoteChangeProcessorOnWorker(
423 remote_change_processor_wrapper_->AsWeakPtr(), 425 remote_change_processor_wrapper_->AsWeakPtr(),
424 ui_task_runner_, worker_task_runner_)); 426 ui_task_runner_, worker_task_runner_));
425 427
426 worker_task_runner_->PostTask( 428 worker_task_runner_->PostTask(
427 FROM_HERE, 429 FROM_HERE,
428 base::Bind(&SyncWorker::SetRemoteChangeProcessor, 430 base::Bind(&SyncWorkerInterface::SetRemoteChangeProcessor,
429 base::Unretained(sync_worker_.get()), 431 base::Unretained(sync_worker_.get()),
430 remote_change_processor_on_worker_.get())); 432 remote_change_processor_on_worker_.get()));
431 } 433 }
432 434
433 LocalChangeProcessor* SyncEngine::GetLocalChangeProcessor() { 435 LocalChangeProcessor* SyncEngine::GetLocalChangeProcessor() {
434 return this; 436 return this;
435 } 437 }
436 438
437 RemoteServiceState SyncEngine::GetCurrentState() const { 439 RemoteServiceState SyncEngine::GetCurrentState() const {
438 return service_state_; 440 return service_state_;
439 } 441 }
440 442
441 void SyncEngine::GetOriginStatusMap(const StatusMapCallback& callback) { 443 void SyncEngine::GetOriginStatusMap(const StatusMapCallback& callback) {
442 StatusMapCallback tracked_callback = 444 StatusMapCallback tracked_callback =
443 callback_tracker_.Register( 445 callback_tracker_.Register(
444 base::Bind(callback, base::Passed(scoped_ptr<OriginStatusMap>())), 446 base::Bind(callback, base::Passed(scoped_ptr<OriginStatusMap>())),
445 callback); 447 callback);
446 448
447 StatusMapCallback relayed_callback = 449 StatusMapCallback relayed_callback =
448 RelayCallbackToCurrentThread(FROM_HERE, tracked_callback); 450 RelayCallbackToCurrentThread(FROM_HERE, tracked_callback);
449 451
450 worker_task_runner_->PostTask( 452 worker_task_runner_->PostTask(
451 FROM_HERE, 453 FROM_HERE,
452 base::Bind(&SyncWorker::GetOriginStatusMap, 454 base::Bind(&SyncWorkerInterface::GetOriginStatusMap,
453 base::Unretained(sync_worker_.get()), 455 base::Unretained(sync_worker_.get()),
454 relayed_callback)); 456 relayed_callback));
455 } 457 }
456 458
457 void SyncEngine::DumpFiles(const GURL& origin, 459 void SyncEngine::DumpFiles(const GURL& origin,
458 const ListCallback& callback) { 460 const ListCallback& callback) {
459 ListCallback tracked_callback = 461 ListCallback tracked_callback =
460 callback_tracker_.Register( 462 callback_tracker_.Register(
461 base::Bind(callback, base::Passed(scoped_ptr<base::ListValue>())), 463 base::Bind(callback, base::Passed(scoped_ptr<base::ListValue>())),
462 callback); 464 callback);
463 465
464 PostTaskAndReplyWithResult( 466 PostTaskAndReplyWithResult(
465 worker_task_runner_, 467 worker_task_runner_,
466 FROM_HERE, 468 FROM_HERE,
467 base::Bind(&SyncWorker::DumpFiles, 469 base::Bind(&SyncWorkerInterface::DumpFiles,
468 base::Unretained(sync_worker_.get()), 470 base::Unretained(sync_worker_.get()),
469 origin), 471 origin),
470 tracked_callback); 472 tracked_callback);
471 } 473 }
472 474
473 void SyncEngine::DumpDatabase(const ListCallback& callback) { 475 void SyncEngine::DumpDatabase(const ListCallback& callback) {
474 ListCallback tracked_callback = 476 ListCallback tracked_callback =
475 callback_tracker_.Register( 477 callback_tracker_.Register(
476 base::Bind(callback, base::Passed(scoped_ptr<base::ListValue>())), 478 base::Bind(callback, base::Passed(scoped_ptr<base::ListValue>())),
477 callback); 479 callback);
478 480
479 PostTaskAndReplyWithResult( 481 PostTaskAndReplyWithResult(
480 worker_task_runner_, 482 worker_task_runner_,
481 FROM_HERE, 483 FROM_HERE,
482 base::Bind(&SyncWorker::DumpDatabase, 484 base::Bind(&SyncWorkerInterface::DumpDatabase,
483 base::Unretained(sync_worker_.get())), 485 base::Unretained(sync_worker_.get())),
484 tracked_callback); 486 tracked_callback);
485 } 487 }
486 488
487 void SyncEngine::SetSyncEnabled(bool sync_enabled) { 489 void SyncEngine::SetSyncEnabled(bool sync_enabled) {
488 sync_enabled_ = sync_enabled; 490 sync_enabled_ = sync_enabled;
489 worker_task_runner_->PostTask( 491 worker_task_runner_->PostTask(
490 FROM_HERE, 492 FROM_HERE,
491 base::Bind(&SyncWorker::SetSyncEnabled, 493 base::Bind(&SyncWorkerInterface::SetSyncEnabled,
492 base::Unretained(sync_worker_.get()), 494 base::Unretained(sync_worker_.get()),
493 sync_enabled)); 495 sync_enabled));
494 } 496 }
495 497
496 void SyncEngine::PromoteDemotedChanges() { 498 void SyncEngine::PromoteDemotedChanges() {
497 worker_task_runner_->PostTask( 499 worker_task_runner_->PostTask(
498 FROM_HERE, 500 FROM_HERE,
499 base::Bind(&SyncWorker::PromoteDemotedChanges, 501 base::Bind(&SyncWorkerInterface::PromoteDemotedChanges,
500 base::Unretained(sync_worker_.get()))); 502 base::Unretained(sync_worker_.get())));
501 } 503 }
502 504
503 void SyncEngine::ApplyLocalChange( 505 void SyncEngine::ApplyLocalChange(
504 const FileChange& local_change, 506 const FileChange& local_change,
505 const base::FilePath& local_path, 507 const base::FilePath& local_path,
506 const SyncFileMetadata& local_metadata, 508 const SyncFileMetadata& local_metadata,
507 const fileapi::FileSystemURL& url, 509 const fileapi::FileSystemURL& url,
508 const SyncStatusCallback& callback) { 510 const SyncStatusCallback& callback) {
509 SyncStatusCallback relayed_callback = RelayCallbackToCurrentThread( 511 SyncStatusCallback relayed_callback = RelayCallbackToCurrentThread(
510 FROM_HERE, TrackCallback(callback)); 512 FROM_HERE, TrackCallback(callback));
511 worker_task_runner_->PostTask( 513 worker_task_runner_->PostTask(
512 FROM_HERE, 514 FROM_HERE,
513 base::Bind(&SyncWorker::ApplyLocalChange, 515 base::Bind(&SyncWorkerInterface::ApplyLocalChange,
514 base::Unretained(sync_worker_.get()), 516 base::Unretained(sync_worker_.get()),
515 local_change, 517 local_change,
516 local_path, 518 local_path,
517 local_metadata, 519 local_metadata,
518 url, 520 url,
519 relayed_callback)); 521 relayed_callback));
520 } 522 }
521 523
522 void SyncEngine::OnNotificationReceived() { 524 void SyncEngine::OnNotificationReceived() {
523 worker_task_runner_->PostTask( 525 worker_task_runner_->PostTask(
524 FROM_HERE, 526 FROM_HERE,
525 base::Bind(&SyncWorker::OnNotificationReceived, 527 base::Bind(&SyncWorkerInterface::OnNotificationReceived,
526 base::Unretained(sync_worker_.get()))); 528 base::Unretained(sync_worker_.get())));
527 } 529 }
528 530
529 void SyncEngine::OnPushNotificationEnabled(bool) {} 531 void SyncEngine::OnPushNotificationEnabled(bool) {}
530 532
531 void SyncEngine::OnReadyToSendRequests() { 533 void SyncEngine::OnReadyToSendRequests() {
532 // TODO(tzik): Drop current Syncworker and replace with new one. 534 // TODO(tzik): Drop current Syncworker and replace with new one.
533 535
534 const std::string account_id = 536 const std::string account_id =
535 signin_manager_ ? signin_manager_->GetAuthenticatedAccountId() : ""; 537 signin_manager_ ? signin_manager_->GetAuthenticatedAccountId() : "";
536 538
537 worker_task_runner_->PostTask( 539 worker_task_runner_->PostTask(
538 FROM_HERE, 540 FROM_HERE,
539 base::Bind(&SyncWorker::OnReadyToSendRequests, 541 base::Bind(&SyncWorkerInterface::OnReadyToSendRequests,
540 base::Unretained(sync_worker_.get()), 542 base::Unretained(sync_worker_.get()),
541 account_id)); 543 account_id));
542 } 544 }
543 545
544 void SyncEngine::OnRefreshTokenInvalid() { 546 void SyncEngine::OnRefreshTokenInvalid() {
545 worker_task_runner_->PostTask( 547 worker_task_runner_->PostTask(
546 FROM_HERE, 548 FROM_HERE,
547 base::Bind(&SyncWorker::OnRefreshTokenInvalid, 549 base::Bind(&SyncWorkerInterface::OnRefreshTokenInvalid,
548 base::Unretained(sync_worker_.get()))); 550 base::Unretained(sync_worker_.get())));
549 } 551 }
550 552
551 void SyncEngine::OnNetworkChanged( 553 void SyncEngine::OnNetworkChanged(
552 net::NetworkChangeNotifier::ConnectionType type) { 554 net::NetworkChangeNotifier::ConnectionType type) {
553 worker_task_runner_->PostTask( 555 worker_task_runner_->PostTask(
554 FROM_HERE, 556 FROM_HERE,
555 base::Bind(&SyncWorker::OnNetworkChanged, 557 base::Bind(&SyncWorkerInterface::OnNetworkChanged,
556 base::Unretained(sync_worker_.get()), 558 base::Unretained(sync_worker_.get()),
557 type)); 559 type));
558 } 560 }
559 561
560 SyncEngine::SyncEngine( 562 SyncEngine::SyncEngine(
561 base::SingleThreadTaskRunner* ui_task_runner, 563 base::SingleThreadTaskRunner* ui_task_runner,
562 base::SequencedTaskRunner* worker_task_runner, 564 base::SequencedTaskRunner* worker_task_runner,
563 base::SequencedTaskRunner* file_task_runner, 565 base::SequencedTaskRunner* file_task_runner,
564 base::SequencedTaskRunner* drive_task_runner, 566 base::SequencedTaskRunner* drive_task_runner,
565 const base::FilePath& sync_file_system_dir, 567 const base::FilePath& sync_file_system_dir,
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
614 616
615 SyncStatusCallback SyncEngine::TrackCallback( 617 SyncStatusCallback SyncEngine::TrackCallback(
616 const SyncStatusCallback& callback) { 618 const SyncStatusCallback& callback) {
617 return callback_tracker_.Register( 619 return callback_tracker_.Register(
618 base::Bind(callback, SYNC_STATUS_ABORT), 620 base::Bind(callback, SYNC_STATUS_ABORT),
619 callback); 621 callback);
620 } 622 }
621 623
622 } // namespace drive_backend 624 } // namespace drive_backend
623 } // namespace sync_file_system 625 } // namespace sync_file_system
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698