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/profile_sync_service.h" | 5 #include "chrome/browser/sync/profile_sync_service.h" |
6 | 6 |
7 #include <cstddef> | 7 #include <cstddef> |
8 #include <map> | 8 #include <map> |
9 #include <set> | 9 #include <set> |
10 #include <utility> | 10 #include <utility> |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
95 #include "sync/internal_api/public/util/sync_string_conversions.h" | 95 #include "sync/internal_api/public/util/sync_string_conversions.h" |
96 #include "sync/js/js_event_details.h" | 96 #include "sync/js/js_event_details.h" |
97 #include "sync/util/cryptographer.h" | 97 #include "sync/util/cryptographer.h" |
98 #include "ui/base/l10n/l10n_util.h" | 98 #include "ui/base/l10n/l10n_util.h" |
99 #include "ui/base/l10n/time_format.h" | 99 #include "ui/base/l10n/time_format.h" |
100 | 100 |
101 #if defined(OS_ANDROID) | 101 #if defined(OS_ANDROID) |
102 #include "sync/internal_api/public/read_transaction.h" | 102 #include "sync/internal_api/public/read_transaction.h" |
103 #endif | 103 #endif |
104 | 104 |
105 using browser_sync::ChangeProcessor; | |
106 using browser_sync::DataTypeController; | |
107 using browser_sync::DataTypeManager; | |
108 using browser_sync::FailedDataTypesHandler; | |
109 using browser_sync::NotificationServiceSessionsRouter; | 105 using browser_sync::NotificationServiceSessionsRouter; |
110 using browser_sync::ProfileSyncServiceStartBehavior; | 106 using browser_sync::ProfileSyncServiceStartBehavior; |
111 using browser_sync::SyncBackendHost; | 107 using browser_sync::SyncBackendHost; |
108 using sync_driver::ChangeProcessor; | |
109 using sync_driver::DataTypeController; | |
110 using sync_driver::DataTypeManager; | |
111 using sync_driver::FailedDataTypesHandler; | |
112 using syncer::ModelType; | 112 using syncer::ModelType; |
113 using syncer::ModelTypeSet; | 113 using syncer::ModelTypeSet; |
114 using syncer::JsBackend; | 114 using syncer::JsBackend; |
115 using syncer::JsController; | 115 using syncer::JsController; |
116 using syncer::JsEventDetails; | 116 using syncer::JsEventDetails; |
117 using syncer::JsEventHandler; | 117 using syncer::JsEventHandler; |
118 using syncer::ModelSafeRoutingInfo; | 118 using syncer::ModelSafeRoutingInfo; |
119 using syncer::SyncCredentials; | 119 using syncer::SyncCredentials; |
120 using syncer::SyncProtocolError; | 120 using syncer::SyncProtocolError; |
121 using syncer::WeakHandle; | 121 using syncer::WeakHandle; |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
203 is_first_time_sync_configure_(false), | 203 is_first_time_sync_configure_(false), |
204 backend_initialized_(false), | 204 backend_initialized_(false), |
205 sync_disabled_by_admin_(false), | 205 sync_disabled_by_admin_(false), |
206 is_auth_in_progress_(false), | 206 is_auth_in_progress_(false), |
207 signin_(signin_wrapper.Pass()), | 207 signin_(signin_wrapper.Pass()), |
208 unrecoverable_error_reason_(ERROR_REASON_UNSET), | 208 unrecoverable_error_reason_(ERROR_REASON_UNSET), |
209 expect_sync_configuration_aborted_(false), | 209 expect_sync_configuration_aborted_(false), |
210 encrypted_types_(syncer::SyncEncryptionHandler::SensitiveTypes()), | 210 encrypted_types_(syncer::SyncEncryptionHandler::SensitiveTypes()), |
211 encrypt_everything_(false), | 211 encrypt_everything_(false), |
212 encryption_pending_(false), | 212 encryption_pending_(false), |
213 configure_status_(DataTypeManager::UNKNOWN), | 213 configure_status_(sync_driver::DataTypeManager::UNKNOWN), |
214 oauth2_token_service_(oauth2_token_service), | 214 oauth2_token_service_(oauth2_token_service), |
215 request_access_token_backoff_(&kRequestAccessTokenBackoffPolicy), | 215 request_access_token_backoff_(&kRequestAccessTokenBackoffPolicy), |
216 weak_factory_(this), | 216 weak_factory_(this), |
217 startup_controller_weak_factory_(this), | 217 startup_controller_weak_factory_(this), |
218 connection_status_(syncer::CONNECTION_NOT_ATTEMPTED), | 218 connection_status_(syncer::CONNECTION_NOT_ATTEMPTED), |
219 last_get_token_error_(GoogleServiceAuthError::AuthErrorNone()), | 219 last_get_token_error_(GoogleServiceAuthError::AuthErrorNone()), |
220 network_resources_(new syncer::HttpBridgeNetworkResources), | 220 network_resources_(new syncer::HttpBridgeNetworkResources), |
221 startup_controller_( | 221 startup_controller_( |
222 start_behavior, | 222 start_behavior, |
223 oauth2_token_service, | 223 oauth2_token_service, |
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
489 if (HasSyncingBackend()) { | 489 if (HasSyncingBackend()) { |
490 browser_sync::SyncedDeviceTracker* device_tracker = | 490 browser_sync::SyncedDeviceTracker* device_tracker = |
491 backend_->GetSyncedDeviceTracker(); | 491 backend_->GetSyncedDeviceTracker(); |
492 if (device_tracker) { | 492 if (device_tracker) { |
493 device_tracker->RemoveObserver(observer); | 493 device_tracker->RemoveObserver(observer); |
494 } | 494 } |
495 } | 495 } |
496 } | 496 } |
497 | 497 |
498 void ProfileSyncService::GetDataTypeControllerStates( | 498 void ProfileSyncService::GetDataTypeControllerStates( |
499 browser_sync::DataTypeController::StateMap* state_map) const { | 499 sync_driver::DataTypeController::StateMap* state_map) const { |
maxbogue
2014/07/21 22:14:21
Is the prefix necessary? There's a using line at t
Nicolas Zea
2014/07/21 22:23:31
Done, here and below.
| |
500 for (browser_sync::DataTypeController::TypeMap::const_iterator iter = | 500 for (sync_driver::DataTypeController::TypeMap::const_iterator iter = |
501 directory_data_type_controllers_.begin(); | 501 directory_data_type_controllers_.begin(); |
502 iter != directory_data_type_controllers_.end(); | 502 iter != directory_data_type_controllers_.end(); |
503 ++iter) | 503 ++iter) |
504 (*state_map)[iter->first] = iter->second.get()->state(); | 504 (*state_map)[iter->first] = iter->second.get()->state(); |
505 } | 505 } |
506 | 506 |
507 SyncCredentials ProfileSyncService::GetCredentials() { | 507 SyncCredentials ProfileSyncService::GetCredentials() { |
508 SyncCredentials credentials; | 508 SyncCredentials credentials; |
509 if (backend_mode_ == SYNC) { | 509 if (backend_mode_ == SYNC) { |
510 credentials.email = signin_->GetEffectiveUsername(); | 510 credentials.email = signin_->GetEffectiveUsername(); |
(...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
813 // possible. | 813 // possible. |
814 base::Time shutdown_start_time = base::Time::Now(); | 814 base::Time shutdown_start_time = base::Time::Now(); |
815 backend_->StopSyncingForShutdown(); | 815 backend_->StopSyncingForShutdown(); |
816 | 816 |
817 // Stop all data type controllers, if needed. Note that until Stop | 817 // Stop all data type controllers, if needed. Note that until Stop |
818 // completes, it is possible in theory to have a ChangeProcessor apply a | 818 // completes, it is possible in theory to have a ChangeProcessor apply a |
819 // change from a native model. In that case, it will get applied to the sync | 819 // change from a native model. In that case, it will get applied to the sync |
820 // database (which doesn't get destroyed until we destroy the backend below) | 820 // database (which doesn't get destroyed until we destroy the backend below) |
821 // as an unsynced change. That will be persisted, and committed on restart. | 821 // as an unsynced change. That will be persisted, and committed on restart. |
822 if (directory_data_type_manager_) { | 822 if (directory_data_type_manager_) { |
823 if (directory_data_type_manager_->state() != DataTypeManager::STOPPED) { | 823 if (directory_data_type_manager_->state() != |
824 sync_driver::DataTypeManager::STOPPED) { | |
824 // When aborting as part of shutdown, we should expect an aborted sync | 825 // When aborting as part of shutdown, we should expect an aborted sync |
825 // configure result, else we'll dcheck when we try to read the sync error. | 826 // configure result, else we'll dcheck when we try to read the sync error. |
826 expect_sync_configuration_aborted_ = true; | 827 expect_sync_configuration_aborted_ = true; |
827 directory_data_type_manager_->Stop(); | 828 directory_data_type_manager_->Stop(); |
828 } | 829 } |
829 directory_data_type_manager_.reset(); | 830 directory_data_type_manager_.reset(); |
830 } | 831 } |
831 | 832 |
832 // Shutdown the migrator before the backend to ensure it doesn't pull a null | 833 // Shutdown the migrator before the backend to ensure it doesn't pull a null |
833 // snapshot. | 834 // snapshot. |
(...skipping 616 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1450 break; | 1451 break; |
1451 default: | 1452 default: |
1452 NOTREACHED(); | 1453 NOTREACHED(); |
1453 } | 1454 } |
1454 NotifyObservers(); | 1455 NotifyObservers(); |
1455 | 1456 |
1456 backup_rollback_controller_.Start(base::TimeDelta()); | 1457 backup_rollback_controller_.Start(base::TimeDelta()); |
1457 } | 1458 } |
1458 | 1459 |
1459 void ProfileSyncService::OnConfigureDone( | 1460 void ProfileSyncService::OnConfigureDone( |
1460 const browser_sync::DataTypeManager::ConfigureResult& result) { | 1461 const sync_driver::DataTypeManager::ConfigureResult& result) { |
1461 // We should have cleared our cached passphrase before we get here (in | 1462 // We should have cleared our cached passphrase before we get here (in |
1462 // OnBackendInitialized()). | 1463 // OnBackendInitialized()). |
1463 DCHECK(cached_passphrase_.empty()); | 1464 DCHECK(cached_passphrase_.empty()); |
1464 | 1465 |
1465 configure_status_ = result.status; | 1466 configure_status_ = result.status; |
1466 | 1467 |
1467 if (backend_mode_ != SYNC) { | 1468 if (backend_mode_ != SYNC) { |
1468 if (configure_status_ == DataTypeManager::OK || | 1469 if (configure_status_ == DataTypeManager::OK || |
1469 configure_status_ == DataTypeManager::PARTIAL_SUCCESS) { | 1470 configure_status_ == DataTypeManager::PARTIAL_SUCCESS) { |
1470 StartSyncingWithServer(); | 1471 StartSyncingWithServer(); |
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1709 void ProfileSyncService::UpdateSelectedTypesHistogram( | 1710 void ProfileSyncService::UpdateSelectedTypesHistogram( |
1710 bool sync_everything, const syncer::ModelTypeSet chosen_types) const { | 1711 bool sync_everything, const syncer::ModelTypeSet chosen_types) const { |
1711 if (!HasSyncSetupCompleted() || | 1712 if (!HasSyncSetupCompleted() || |
1712 sync_everything != sync_prefs_.HasKeepEverythingSynced()) { | 1713 sync_everything != sync_prefs_.HasKeepEverythingSynced()) { |
1713 UMA_HISTOGRAM_BOOLEAN("Sync.SyncEverything", sync_everything); | 1714 UMA_HISTOGRAM_BOOLEAN("Sync.SyncEverything", sync_everything); |
1714 } | 1715 } |
1715 | 1716 |
1716 // Only log the data types that are shown in the sync settings ui. | 1717 // Only log the data types that are shown in the sync settings ui. |
1717 // Note: the order of these types must match the ordering of | 1718 // Note: the order of these types must match the ordering of |
1718 // the respective types in ModelType | 1719 // the respective types in ModelType |
1719 const browser_sync::user_selectable_type::UserSelectableSyncType | 1720 const sync_driver::user_selectable_type::UserSelectableSyncType |
1720 user_selectable_types[] = { | 1721 user_selectable_types[] = { |
1721 browser_sync::user_selectable_type::BOOKMARKS, | 1722 sync_driver::user_selectable_type::BOOKMARKS, |
1722 browser_sync::user_selectable_type::PREFERENCES, | 1723 sync_driver::user_selectable_type::PREFERENCES, |
1723 browser_sync::user_selectable_type::PASSWORDS, | 1724 sync_driver::user_selectable_type::PASSWORDS, |
1724 browser_sync::user_selectable_type::AUTOFILL, | 1725 sync_driver::user_selectable_type::AUTOFILL, |
1725 browser_sync::user_selectable_type::THEMES, | 1726 sync_driver::user_selectable_type::THEMES, |
1726 browser_sync::user_selectable_type::TYPED_URLS, | 1727 sync_driver::user_selectable_type::TYPED_URLS, |
1727 browser_sync::user_selectable_type::EXTENSIONS, | 1728 sync_driver::user_selectable_type::EXTENSIONS, |
1728 browser_sync::user_selectable_type::APPS, | 1729 sync_driver::user_selectable_type::APPS, |
1729 browser_sync::user_selectable_type::PROXY_TABS | 1730 sync_driver::user_selectable_type::PROXY_TABS |
1730 }; | 1731 }; |
1731 | 1732 |
1732 COMPILE_ASSERT(32 == syncer::MODEL_TYPE_COUNT, UpdateCustomConfigHistogram); | 1733 COMPILE_ASSERT(32 == syncer::MODEL_TYPE_COUNT, UpdateCustomConfigHistogram); |
1733 | 1734 |
1734 if (!sync_everything) { | 1735 if (!sync_everything) { |
1735 const syncer::ModelTypeSet current_types = GetPreferredDataTypes(); | 1736 const syncer::ModelTypeSet current_types = GetPreferredDataTypes(); |
1736 | 1737 |
1737 syncer::ModelTypeSet type_set = syncer::UserSelectableTypes(); | 1738 syncer::ModelTypeSet type_set = syncer::UserSelectableTypes(); |
1738 syncer::ModelTypeSet::Iterator it = type_set.First(); | 1739 syncer::ModelTypeSet::Iterator it = type_set.First(); |
1739 | 1740 |
1740 DCHECK_EQ(arraysize(user_selectable_types), type_set.Size()); | 1741 DCHECK_EQ(arraysize(user_selectable_types), type_set.Size()); |
1741 | 1742 |
1742 for (size_t i = 0; i < arraysize(user_selectable_types) && it.Good(); | 1743 for (size_t i = 0; i < arraysize(user_selectable_types) && it.Good(); |
1743 ++i, it.Inc()) { | 1744 ++i, it.Inc()) { |
1744 const syncer::ModelType type = it.Get(); | 1745 const syncer::ModelType type = it.Get(); |
1745 if (chosen_types.Has(type) && | 1746 if (chosen_types.Has(type) && |
1746 (!HasSyncSetupCompleted() || !current_types.Has(type))) { | 1747 (!HasSyncSetupCompleted() || !current_types.Has(type))) { |
1747 // Selected type has changed - log it. | 1748 // Selected type has changed - log it. |
1748 UMA_HISTOGRAM_ENUMERATION( | 1749 UMA_HISTOGRAM_ENUMERATION( |
1749 "Sync.CustomSync", | 1750 "Sync.CustomSync", |
1750 user_selectable_types[i], | 1751 user_selectable_types[i], |
1751 browser_sync::user_selectable_type::SELECTABLE_DATATYPE_COUNT + 1); | 1752 sync_driver::user_selectable_type::SELECTABLE_DATATYPE_COUNT + 1); |
1752 } | 1753 } |
1753 } | 1754 } |
1754 } | 1755 } |
1755 } | 1756 } |
1756 | 1757 |
1757 #if defined(OS_CHROMEOS) | 1758 #if defined(OS_CHROMEOS) |
1758 void ProfileSyncService::RefreshSpareBootstrapToken( | 1759 void ProfileSyncService::RefreshSpareBootstrapToken( |
1759 const std::string& passphrase) { | 1760 const std::string& passphrase) { |
1760 browser_sync::SystemEncryptor encryptor; | 1761 browser_sync::SystemEncryptor encryptor; |
1761 syncer::Cryptographer temp_cryptographer(&encryptor); | 1762 syncer::Cryptographer temp_cryptographer(&encryptor); |
(...skipping 896 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2658 browser_sync::SyncedDeviceTracker* device_tracker = | 2659 browser_sync::SyncedDeviceTracker* device_tracker = |
2659 backend_->GetSyncedDeviceTracker(); | 2660 backend_->GetSyncedDeviceTracker(); |
2660 if (device_tracker) | 2661 if (device_tracker) |
2661 device_tracker->UpdateLocalDeviceBackupTime(*last_backup_time_); | 2662 device_tracker->UpdateLocalDeviceBackupTime(*last_backup_time_); |
2662 } | 2663 } |
2663 } | 2664 } |
2664 | 2665 |
2665 base::Time ProfileSyncService::GetDeviceBackupTimeForTesting() const { | 2666 base::Time ProfileSyncService::GetDeviceBackupTimeForTesting() const { |
2666 return backend_->GetSyncedDeviceTracker()->GetLocalDeviceBackupTime(); | 2667 return backend_->GetSyncedDeviceTracker()->GetLocalDeviceBackupTime(); |
2667 } | 2668 } |
OLD | NEW |