| OLD | NEW |
| 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/glue/sync_backend_host_core.h" | 5 #include "chrome/browser/sync/glue/sync_backend_host_core.h" |
| 6 | 6 |
| 7 #include "base/files/file_util.h" | 7 #include "base/files/file_util.h" |
| 8 #include "base/metrics/histogram.h" | 8 #include "base/metrics/histogram.h" |
| 9 #include "chrome/browser/sync/glue/device_info.h" | 9 #include "chrome/browser/sync/glue/device_info.h" |
| 10 #include "chrome/browser/sync/glue/invalidation_adapter.h" | 10 #include "chrome/browser/sync/glue/invalidation_adapter.h" |
| 11 #include "chrome/browser/sync/glue/sync_backend_registrar.h" | 11 #include "chrome/browser/sync/glue/sync_backend_registrar.h" |
| 12 #include "chrome/browser/sync/glue/synced_device_tracker.h" | |
| 13 #include "chrome/common/chrome_version_info.h" | 12 #include "chrome/common/chrome_version_info.h" |
| 14 #include "components/invalidation/invalidation_util.h" | 13 #include "components/invalidation/invalidation_util.h" |
| 15 #include "components/invalidation/object_id_invalidation_map.h" | 14 #include "components/invalidation/object_id_invalidation_map.h" |
| 16 #include "sync/internal_api/public/events/protocol_event.h" | 15 #include "sync/internal_api/public/events/protocol_event.h" |
| 17 #include "sync/internal_api/public/http_post_provider_factory.h" | 16 #include "sync/internal_api/public/http_post_provider_factory.h" |
| 18 #include "sync/internal_api/public/internal_components_factory.h" | 17 #include "sync/internal_api/public/internal_components_factory.h" |
| 19 #include "sync/internal_api/public/sessions/commit_counters.h" | 18 #include "sync/internal_api/public/sessions/commit_counters.h" |
| 20 #include "sync/internal_api/public/sessions/status_counters.h" | 19 #include "sync/internal_api/public/sessions/status_counters.h" |
| 21 #include "sync/internal_api/public/sessions/sync_session_snapshot.h" | 20 #include "sync/internal_api/public/sessions/sync_session_snapshot.h" |
| 22 #include "sync/internal_api/public/sessions/update_counters.h" | 21 #include "sync/internal_api/public/sessions/update_counters.h" |
| (...skipping 479 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 502 } | 501 } |
| 503 | 502 |
| 504 if (!sync_manager_->InitialSyncEndedTypes().HasAll(syncer::ControlTypes())) { | 503 if (!sync_manager_->InitialSyncEndedTypes().HasAll(syncer::ControlTypes())) { |
| 505 LOG(ERROR) << "Failed to download control types"; | 504 LOG(ERROR) << "Failed to download control types"; |
| 506 host_.Call( | 505 host_.Call( |
| 507 FROM_HERE, | 506 FROM_HERE, |
| 508 &SyncBackendHostImpl::HandleInitializationFailureOnFrontendLoop); | 507 &SyncBackendHostImpl::HandleInitializationFailureOnFrontendLoop); |
| 509 return; | 508 return; |
| 510 } | 509 } |
| 511 | 510 |
| 512 // Initialize device info. This is asynchronous on some platforms, so we | |
| 513 // provide a callback for when it finishes. | |
| 514 synced_device_tracker_.reset( | |
| 515 new SyncedDeviceTracker(sync_manager_->GetUserShare(), | |
| 516 sync_manager_->cache_guid())); | |
| 517 synced_device_tracker_->InitLocalDeviceInfo( | |
| 518 signin_scoped_device_id_, | |
| 519 base::Bind(&SyncBackendHostCore::DoFinishInitialProcessControlTypes, | |
| 520 weak_ptr_factory_.GetWeakPtr())); | |
| 521 } | |
| 522 | |
| 523 void SyncBackendHostCore::DoFinishInitialProcessControlTypes() { | |
| 524 DCHECK_EQ(base::MessageLoop::current(), sync_loop_); | |
| 525 | |
| 526 registrar_->ActivateDataType(syncer::DEVICE_INFO, | |
| 527 syncer::GROUP_PASSIVE, | |
| 528 synced_device_tracker_.get(), | |
| 529 sync_manager_->GetUserShare()); | |
| 530 | |
| 531 host_.Call(FROM_HERE, | 511 host_.Call(FROM_HERE, |
| 532 &SyncBackendHostImpl::HandleInitializationSuccessOnFrontendLoop, | 512 &SyncBackendHostImpl::HandleInitializationSuccessOnFrontendLoop, |
| 533 js_backend_, | 513 js_backend_, |
| 534 debug_info_listener_, | 514 debug_info_listener_, |
| 535 sync_manager_->GetSyncContextProxy(), | 515 sync_manager_->GetSyncContextProxy(), |
| 536 sync_manager_->cache_guid()); | 516 sync_manager_->cache_guid()); |
| 537 | 517 |
| 538 js_backend_.Reset(); | 518 js_backend_.Reset(); |
| 539 debug_info_listener_.Reset(); | 519 debug_info_listener_.Reset(); |
| 540 } | 520 } |
| (...skipping 27 matching lines...) Expand all Loading... |
| 568 // no longer be used to create new HttpBridge instances. We can get away with | 548 // no longer be used to create new HttpBridge instances. We can get away with |
| 569 // this because the stop_syncing_signal_ has already been signalled, which | 549 // this because the stop_syncing_signal_ has already been signalled, which |
| 570 // guarantees that the ServerConnectionManager will no longer attempt to | 550 // guarantees that the ServerConnectionManager will no longer attempt to |
| 571 // create new connections. | 551 // create new connections. |
| 572 release_request_context_signal_.Signal(); | 552 release_request_context_signal_.Signal(); |
| 573 } | 553 } |
| 574 | 554 |
| 575 void SyncBackendHostCore::DoShutdown(syncer::ShutdownReason reason) { | 555 void SyncBackendHostCore::DoShutdown(syncer::ShutdownReason reason) { |
| 576 DCHECK_EQ(base::MessageLoop::current(), sync_loop_); | 556 DCHECK_EQ(base::MessageLoop::current(), sync_loop_); |
| 577 | 557 |
| 578 // It's safe to do this even if the type was never activated. | |
| 579 registrar_->DeactivateDataType(syncer::DEVICE_INFO); | |
| 580 synced_device_tracker_.reset(); | |
| 581 | |
| 582 DoDestroySyncManager(reason); | 558 DoDestroySyncManager(reason); |
| 583 | 559 |
| 584 registrar_ = NULL; | 560 registrar_ = NULL; |
| 585 | 561 |
| 586 if (reason == syncer::DISABLE_SYNC) | 562 if (reason == syncer::DISABLE_SYNC) |
| 587 DeleteSyncDataFolder(); | 563 DeleteSyncDataFolder(); |
| 588 | 564 |
| 589 host_.Reset(); | 565 host_.Reset(); |
| 590 weak_ptr_factory_.InvalidateWeakPtrs(); | 566 weak_ptr_factory_.InvalidateWeakPtrs(); |
| 591 } | 567 } |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 756 base::TimeDelta::FromSeconds(kSaveChangesIntervalSeconds), | 732 base::TimeDelta::FromSeconds(kSaveChangesIntervalSeconds), |
| 757 this, &SyncBackendHostCore::SaveChanges); | 733 this, &SyncBackendHostCore::SaveChanges); |
| 758 } | 734 } |
| 759 | 735 |
| 760 void SyncBackendHostCore::SaveChanges() { | 736 void SyncBackendHostCore::SaveChanges() { |
| 761 DCHECK_EQ(base::MessageLoop::current(), sync_loop_); | 737 DCHECK_EQ(base::MessageLoop::current(), sync_loop_); |
| 762 sync_manager_->SaveChanges(); | 738 sync_manager_->SaveChanges(); |
| 763 } | 739 } |
| 764 | 740 |
| 765 } // namespace browser_sync | 741 } // namespace browser_sync |
| OLD | NEW |