| 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 "components/browser_sync/profile_sync_service.h" | 5 #include "components/browser_sync/profile_sync_service.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <cstddef> | 9 #include <cstddef> |
| 10 #include <map> | 10 #include <map> |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 80 #include "components/version_info/version_info_values.h" | 80 #include "components/version_info/version_info_values.h" |
| 81 #include "net/cookies/cookie_monster.h" | 81 #include "net/cookies/cookie_monster.h" |
| 82 #include "net/url_request/url_request_context_getter.h" | 82 #include "net/url_request/url_request_context_getter.h" |
| 83 #include "ui/base/l10n/l10n_util.h" | 83 #include "ui/base/l10n/l10n_util.h" |
| 84 #include "ui/base/l10n/time_format.h" | 84 #include "ui/base/l10n/time_format.h" |
| 85 | 85 |
| 86 #if defined(OS_ANDROID) | 86 #if defined(OS_ANDROID) |
| 87 #include "components/sync/core/read_transaction.h" | 87 #include "components/sync/core/read_transaction.h" |
| 88 #endif | 88 #endif |
| 89 | 89 |
| 90 using sync_driver::ChangeProcessor; |
| 91 using sync_driver::DataTypeController; |
| 92 using sync_driver::DataTypeManager; |
| 93 using sync_driver::DataTypeStatusTable; |
| 94 using sync_driver::DeviceInfoSyncService; |
| 95 using sync_driver_v2::DeviceInfoService; |
| 90 using sync_sessions::SessionsSyncManager; | 96 using sync_sessions::SessionsSyncManager; |
| 91 using syncer::BackendMigrator; | 97 using syncer::ModelType; |
| 92 using syncer::ChangeProcessor; | 98 using syncer::ModelTypeSet; |
| 93 using syncer::DataTypeController; | |
| 94 using syncer::DataTypeManager; | |
| 95 using syncer::DataTypeStatusTable; | |
| 96 using syncer::DeviceInfoService; | |
| 97 using syncer::DeviceInfoSyncService; | |
| 98 using syncer::JsBackend; | 99 using syncer::JsBackend; |
| 99 using syncer::JsController; | 100 using syncer::JsController; |
| 100 using syncer::JsEventDetails; | 101 using syncer::JsEventDetails; |
| 101 using syncer::JsEventHandler; | 102 using syncer::JsEventHandler; |
| 102 using syncer::ModelSafeRoutingInfo; | 103 using syncer::ModelSafeRoutingInfo; |
| 103 using syncer::ModelType; | |
| 104 using syncer::ModelTypeSet; | |
| 105 using syncer::ModelTypeStore; | |
| 106 using syncer::ProtocolEventObserver; | |
| 107 using syncer::SharedModelTypeProcessor; | |
| 108 using syncer::SyncBackendHost; | |
| 109 using syncer::SyncCredentials; | 104 using syncer::SyncCredentials; |
| 110 using syncer::SyncProtocolError; | 105 using syncer::SyncProtocolError; |
| 111 using syncer::WeakHandle; | 106 using syncer::WeakHandle; |
| 107 using syncer_v2::ModelTypeStore; |
| 108 using syncer_v2::SharedModelTypeProcessor; |
| 112 | 109 |
| 113 namespace browser_sync { | 110 namespace browser_sync { |
| 114 | 111 |
| 115 typedef GoogleServiceAuthError AuthError; | 112 typedef GoogleServiceAuthError AuthError; |
| 116 | 113 |
| 117 const char kSyncUnrecoverableErrorHistogram[] = "Sync.UnrecoverableErrors"; | 114 const char kSyncUnrecoverableErrorHistogram[] = "Sync.UnrecoverableErrors"; |
| 118 | 115 |
| 119 const net::BackoffEntry::Policy kRequestAccessTokenBackoffPolicy = { | 116 const net::BackoffEntry::Policy kRequestAccessTokenBackoffPolicy = { |
| 120 // Number of initial errors (in sequence) to ignore before applying | 117 // Number of initial errors (in sequence) to ignore before applying |
| 121 // exponential back-off rules. | 118 // exponential back-off rules. |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 187 file_thread(std::move(other.file_thread)), | 184 file_thread(std::move(other.file_thread)), |
| 188 blocking_pool(other.blocking_pool) {} | 185 blocking_pool(other.blocking_pool) {} |
| 189 | 186 |
| 190 ProfileSyncService::ProfileSyncService(InitParams init_params) | 187 ProfileSyncService::ProfileSyncService(InitParams init_params) |
| 191 : OAuth2TokenService::Consumer("sync"), | 188 : OAuth2TokenService::Consumer("sync"), |
| 192 last_auth_error_(AuthError::AuthErrorNone()), | 189 last_auth_error_(AuthError::AuthErrorNone()), |
| 193 passphrase_required_reason_(syncer::REASON_PASSPHRASE_NOT_REQUIRED), | 190 passphrase_required_reason_(syncer::REASON_PASSPHRASE_NOT_REQUIRED), |
| 194 sync_client_(std::move(init_params.sync_client)), | 191 sync_client_(std::move(init_params.sync_client)), |
| 195 sync_prefs_(sync_client_->GetPrefService()), | 192 sync_prefs_(sync_client_->GetPrefService()), |
| 196 sync_service_url_( | 193 sync_service_url_( |
| 197 syncer::GetSyncServiceURL(*base::CommandLine::ForCurrentProcess(), | 194 GetSyncServiceURL(*base::CommandLine::ForCurrentProcess(), |
| 198 init_params.channel)), | 195 init_params.channel)), |
| 199 network_time_update_callback_( | 196 network_time_update_callback_( |
| 200 std::move(init_params.network_time_update_callback)), | 197 std::move(init_params.network_time_update_callback)), |
| 201 base_directory_(init_params.base_directory), | 198 base_directory_(init_params.base_directory), |
| 202 url_request_context_(init_params.url_request_context), | 199 url_request_context_(init_params.url_request_context), |
| 203 debug_identifier_(std::move(init_params.debug_identifier)), | 200 debug_identifier_(std::move(init_params.debug_identifier)), |
| 204 channel_(init_params.channel), | 201 channel_(init_params.channel), |
| 205 db_thread_(init_params.db_thread), | 202 db_thread_(init_params.db_thread), |
| 206 file_thread_(init_params.file_thread), | 203 file_thread_(init_params.file_thread), |
| 207 blocking_pool_(init_params.blocking_pool), | 204 blocking_pool_(init_params.blocking_pool), |
| 208 is_first_time_sync_configure_(false), | 205 is_first_time_sync_configure_(false), |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 254 | 251 |
| 255 bool ProfileSyncService::CanSyncStart() const { | 252 bool ProfileSyncService::CanSyncStart() const { |
| 256 return IsSyncAllowed() && IsSyncRequested() && IsSignedIn(); | 253 return IsSyncAllowed() && IsSyncRequested() && IsSignedIn(); |
| 257 } | 254 } |
| 258 | 255 |
| 259 void ProfileSyncService::Initialize() { | 256 void ProfileSyncService::Initialize() { |
| 260 sync_client_->Initialize(); | 257 sync_client_->Initialize(); |
| 261 | 258 |
| 262 // We don't pass StartupController an Unretained reference to future-proof | 259 // We don't pass StartupController an Unretained reference to future-proof |
| 263 // against the controller impl changing to post tasks. | 260 // against the controller impl changing to post tasks. |
| 264 startup_controller_.reset(new syncer::StartupController( | 261 startup_controller_.reset(new StartupController( |
| 265 &sync_prefs_, | 262 &sync_prefs_, |
| 266 base::Bind(&ProfileSyncService::CanBackendStart, base::Unretained(this)), | 263 base::Bind(&ProfileSyncService::CanBackendStart, base::Unretained(this)), |
| 267 base::Bind(&ProfileSyncService::StartUpSlowBackendComponents, | 264 base::Bind(&ProfileSyncService::StartUpSlowBackendComponents, |
| 268 weak_factory_.GetWeakPtr()))); | 265 weak_factory_.GetWeakPtr()))); |
| 269 std::unique_ptr<sync_sessions::LocalSessionEventRouter> router( | 266 std::unique_ptr<sync_sessions::LocalSessionEventRouter> router( |
| 270 sync_client_->GetSyncSessionsClient()->GetLocalSessionEventRouter()); | 267 sync_client_->GetSyncSessionsClient()->GetLocalSessionEventRouter()); |
| 271 local_device_ = sync_client_->GetSyncApiComponentFactory() | 268 local_device_ = sync_client_->GetSyncApiComponentFactory() |
| 272 ->CreateLocalDeviceInfoProvider(); | 269 ->CreateLocalDeviceInfoProvider(); |
| 273 sync_stopped_reporter_.reset(new syncer::SyncStoppedReporter( | 270 sync_stopped_reporter_.reset(new SyncStoppedReporter( |
| 274 sync_service_url_, local_device_->GetSyncUserAgent(), | 271 sync_service_url_, local_device_->GetSyncUserAgent(), |
| 275 url_request_context_, syncer::SyncStoppedReporter::ResultCallback())); | 272 url_request_context_, SyncStoppedReporter::ResultCallback())); |
| 276 sessions_sync_manager_.reset(new SessionsSyncManager( | 273 sessions_sync_manager_.reset(new SessionsSyncManager( |
| 277 sync_client_->GetSyncSessionsClient(), &sync_prefs_, local_device_.get(), | 274 sync_client_->GetSyncSessionsClient(), &sync_prefs_, local_device_.get(), |
| 278 std::move(router), | 275 std::move(router), |
| 279 base::Bind(&ProfileSyncService::NotifyForeignSessionUpdated, | 276 base::Bind(&ProfileSyncService::NotifyForeignSessionUpdated, |
| 280 sync_enabled_weak_factory_.GetWeakPtr()), | 277 sync_enabled_weak_factory_.GetWeakPtr()), |
| 281 base::Bind(&ProfileSyncService::TriggerRefresh, | 278 base::Bind(&ProfileSyncService::TriggerRefresh, |
| 282 sync_enabled_weak_factory_.GetWeakPtr(), | 279 sync_enabled_weak_factory_.GetWeakPtr(), |
| 283 syncer::ModelTypeSet(syncer::SESSIONS)))); | 280 syncer::ModelTypeSet(syncer::SESSIONS)))); |
| 284 | 281 |
| 285 if (base::FeatureList::IsEnabled(switches::kSyncUSSDeviceInfo)) { | 282 if (base::FeatureList::IsEnabled(switches::kSyncUSSDeviceInfo)) { |
| 286 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner( | 283 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner( |
| 287 blocking_pool_->GetSequencedTaskRunnerWithShutdownBehavior( | 284 blocking_pool_->GetSequencedTaskRunnerWithShutdownBehavior( |
| 288 blocking_pool_->GetSequenceToken(), | 285 blocking_pool_->GetSequenceToken(), |
| 289 base::SequencedWorkerPool::SKIP_ON_SHUTDOWN)); | 286 base::SequencedWorkerPool::SKIP_ON_SHUTDOWN)); |
| 290 // TODO(skym): Stop creating leveldb files when signed out. | 287 // TODO(skym): Stop creating leveldb files when signed out. |
| 291 // TODO(skym): Verify using AsUTF8Unsafe is okay here. Should work as long | 288 // TODO(skym): Verify using AsUTF8Unsafe is okay here. Should work as long |
| 292 // as the Local State file is guaranteed to be UTF-8. | 289 // as the Local State file is guaranteed to be UTF-8. |
| 293 device_info_service_.reset(new DeviceInfoService( | 290 device_info_service_.reset(new DeviceInfoService( |
| 294 local_device_.get(), | 291 local_device_.get(), |
| 295 base::Bind(&ModelTypeStore::CreateStore, syncer::DEVICE_INFO, | 292 base::Bind(&ModelTypeStore::CreateStore, syncer::DEVICE_INFO, |
| 296 directory_path_.Append(base::FilePath(kLevelDBFolderName)) | 293 directory_path_.Append(base::FilePath(kLevelDBFolderName)) |
| 297 .AsUTF8Unsafe(), | 294 .AsUTF8Unsafe(), |
| 298 blocking_task_runner), | 295 blocking_task_runner), |
| 299 base::Bind(&SharedModelTypeProcessor::CreateAsChangeProcessor))); | 296 base::Bind(&SharedModelTypeProcessor::CreateAsChangeProcessor))); |
| 300 } else { | 297 } else { |
| 301 device_info_sync_service_.reset( | 298 device_info_sync_service_.reset( |
| 302 new DeviceInfoSyncService(local_device_.get())); | 299 new DeviceInfoSyncService(local_device_.get())); |
| 303 } | 300 } |
| 304 | 301 |
| 305 syncer::SyncApiComponentFactory::RegisterDataTypesMethod | 302 sync_driver::SyncApiComponentFactory::RegisterDataTypesMethod |
| 306 register_platform_types_callback = | 303 register_platform_types_callback = |
| 307 sync_client_->GetRegisterPlatformTypesCallback(); | 304 sync_client_->GetRegisterPlatformTypesCallback(); |
| 308 sync_client_->GetSyncApiComponentFactory()->RegisterDataTypes( | 305 sync_client_->GetSyncApiComponentFactory()->RegisterDataTypes( |
| 309 this, register_platform_types_callback); | 306 this, register_platform_types_callback); |
| 310 | 307 |
| 311 if (gaia_cookie_manager_service_) | 308 if (gaia_cookie_manager_service_) |
| 312 gaia_cookie_manager_service_->AddObserver(this); | 309 gaia_cookie_manager_service_->AddObserver(this); |
| 313 | 310 |
| 314 // We clear this here (vs Shutdown) because we want to remember that an error | 311 // We clear this here (vs Shutdown) because we want to remember that an error |
| 315 // happened on shutdown so we can display details (message, location) about it | 312 // happened on shutdown so we can display details (message, location) about it |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 357 std::string bootstrap_token = sync_prefs_.GetEncryptionBootstrapToken(); | 354 std::string bootstrap_token = sync_prefs_.GetEncryptionBootstrapToken(); |
| 358 if (bootstrap_token.empty()) { | 355 if (bootstrap_token.empty()) { |
| 359 sync_prefs_.SetEncryptionBootstrapToken( | 356 sync_prefs_.SetEncryptionBootstrapToken( |
| 360 sync_prefs_.GetSpareBootstrapToken()); | 357 sync_prefs_.GetSpareBootstrapToken()); |
| 361 } | 358 } |
| 362 #endif | 359 #endif |
| 363 | 360 |
| 364 #if !defined(OS_ANDROID) | 361 #if !defined(OS_ANDROID) |
| 365 DCHECK(sync_error_controller_ == NULL) | 362 DCHECK(sync_error_controller_ == NULL) |
| 366 << "Initialize() called more than once."; | 363 << "Initialize() called more than once."; |
| 367 sync_error_controller_.reset(new syncer::SyncErrorController(this)); | 364 sync_error_controller_.reset(new SyncErrorController(this)); |
| 368 AddObserver(sync_error_controller_.get()); | 365 AddObserver(sync_error_controller_.get()); |
| 369 #endif | 366 #endif |
| 370 | 367 |
| 371 memory_pressure_listener_.reset(new base::MemoryPressureListener( | 368 memory_pressure_listener_.reset(new base::MemoryPressureListener( |
| 372 base::Bind(&ProfileSyncService::OnMemoryPressure, | 369 base::Bind(&ProfileSyncService::OnMemoryPressure, |
| 373 sync_enabled_weak_factory_.GetWeakPtr()))); | 370 sync_enabled_weak_factory_.GetWeakPtr()))); |
| 374 startup_controller_->Reset(GetRegisteredDataTypes()); | 371 startup_controller_->Reset(GetRegisteredDataTypes()); |
| 375 | 372 |
| 376 // Auto-start means means the first time the profile starts up, sync should | 373 // Auto-start means means the first time the profile starts up, sync should |
| 377 // start up immediately. | 374 // start up immediately. |
| (...skipping 25 matching lines...) Expand all Loading... |
| 403 signin()->AddObserver(this); | 400 signin()->AddObserver(this); |
| 404 } | 401 } |
| 405 | 402 |
| 406 void ProfileSyncService::UnregisterAuthNotifications() { | 403 void ProfileSyncService::UnregisterAuthNotifications() { |
| 407 if (signin()) | 404 if (signin()) |
| 408 signin()->RemoveObserver(this); | 405 signin()->RemoveObserver(this); |
| 409 oauth2_token_service_->RemoveObserver(this); | 406 oauth2_token_service_->RemoveObserver(this); |
| 410 } | 407 } |
| 411 | 408 |
| 412 void ProfileSyncService::RegisterDataTypeController( | 409 void ProfileSyncService::RegisterDataTypeController( |
| 413 std::unique_ptr<syncer::DataTypeController> data_type_controller) { | 410 std::unique_ptr<sync_driver::DataTypeController> data_type_controller) { |
| 414 DCHECK_EQ(data_type_controllers_.count(data_type_controller->type()), 0U); | 411 DCHECK_EQ(data_type_controllers_.count(data_type_controller->type()), 0U); |
| 415 data_type_controllers_[data_type_controller->type()] = | 412 data_type_controllers_[data_type_controller->type()] = |
| 416 std::move(data_type_controller); | 413 std::move(data_type_controller); |
| 417 } | 414 } |
| 418 | 415 |
| 419 bool ProfileSyncService::IsDataTypeControllerRunning( | 416 bool ProfileSyncService::IsDataTypeControllerRunning( |
| 420 syncer::ModelType type) const { | 417 syncer::ModelType type) const { |
| 421 DataTypeController::TypeMap::const_iterator iter = | 418 DataTypeController::TypeMap::const_iterator iter = |
| 422 data_type_controllers_.find(type); | 419 data_type_controllers_.find(type); |
| 423 if (iter == data_type_controllers_.end()) { | 420 if (iter == data_type_controllers_.end()) { |
| 424 return false; | 421 return false; |
| 425 } | 422 } |
| 426 return iter->second->state() == DataTypeController::RUNNING; | 423 return iter->second->state() == DataTypeController::RUNNING; |
| 427 } | 424 } |
| 428 | 425 |
| 429 sync_sessions::OpenTabsUIDelegate* ProfileSyncService::GetOpenTabsUIDelegate() { | 426 sync_sessions::OpenTabsUIDelegate* ProfileSyncService::GetOpenTabsUIDelegate() { |
| 430 if (!IsDataTypeControllerRunning(syncer::SESSIONS)) | 427 if (!IsDataTypeControllerRunning(syncer::SESSIONS)) |
| 431 return NULL; | 428 return NULL; |
| 432 return sessions_sync_manager_.get(); | 429 return sessions_sync_manager_.get(); |
| 433 } | 430 } |
| 434 | 431 |
| 435 sync_sessions::FaviconCache* ProfileSyncService::GetFaviconCache() { | 432 sync_sessions::FaviconCache* ProfileSyncService::GetFaviconCache() { |
| 436 return sessions_sync_manager_->GetFaviconCache(); | 433 return sessions_sync_manager_->GetFaviconCache(); |
| 437 } | 434 } |
| 438 | 435 |
| 439 syncer::DeviceInfoTracker* ProfileSyncService::GetDeviceInfoTracker() const { | 436 sync_driver::DeviceInfoTracker* ProfileSyncService::GetDeviceInfoTracker() |
| 437 const { |
| 440 // One of the two should always be non-null after initialization is done. | 438 // One of the two should always be non-null after initialization is done. |
| 441 if (device_info_service_) { | 439 if (device_info_service_) { |
| 442 return device_info_service_.get(); | 440 return device_info_service_.get(); |
| 443 } else { | 441 } else { |
| 444 return device_info_sync_service_.get(); | 442 return device_info_sync_service_.get(); |
| 445 } | 443 } |
| 446 } | 444 } |
| 447 | 445 |
| 448 syncer::LocalDeviceInfoProvider* | 446 sync_driver::LocalDeviceInfoProvider* |
| 449 ProfileSyncService::GetLocalDeviceInfoProvider() const { | 447 ProfileSyncService::GetLocalDeviceInfoProvider() const { |
| 450 return local_device_.get(); | 448 return local_device_.get(); |
| 451 } | 449 } |
| 452 | 450 |
| 453 void ProfileSyncService::GetDataTypeControllerStates( | 451 void ProfileSyncService::GetDataTypeControllerStates( |
| 454 DataTypeController::StateMap* state_map) const { | 452 DataTypeController::StateMap* state_map) const { |
| 455 for (DataTypeController::TypeMap::const_iterator iter = | 453 for (DataTypeController::TypeMap::const_iterator iter = |
| 456 data_type_controllers_.begin(); | 454 data_type_controllers_.begin(); |
| 457 iter != data_type_controllers_.end(); ++iter) | 455 iter != data_type_controllers_.end(); ++iter) |
| 458 (*state_map)[iter->first] = iter->second.get()->state(); | 456 (*state_map)[iter->first] = iter->second.get()->state(); |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 506 base::Unretained(network_resources_.get()), | 504 base::Unretained(network_resources_.get()), |
| 507 url_request_context_, network_time_update_callback_); | 505 url_request_context_, network_time_update_callback_); |
| 508 | 506 |
| 509 backend_->Initialize( | 507 backend_->Initialize( |
| 510 this, std::move(sync_thread_), db_thread_, file_thread_, | 508 this, std::move(sync_thread_), db_thread_, file_thread_, |
| 511 GetJsEventHandler(), sync_service_url_, local_device_->GetSyncUserAgent(), | 509 GetJsEventHandler(), sync_service_url_, local_device_->GetSyncUserAgent(), |
| 512 credentials, delete_stale_data, | 510 credentials, delete_stale_data, |
| 513 std::unique_ptr<syncer::SyncManagerFactory>( | 511 std::unique_ptr<syncer::SyncManagerFactory>( |
| 514 new syncer::SyncManagerFactory()), | 512 new syncer::SyncManagerFactory()), |
| 515 MakeWeakHandle(sync_enabled_weak_factory_.GetWeakPtr()), | 513 MakeWeakHandle(sync_enabled_weak_factory_.GetWeakPtr()), |
| 516 base::Bind(syncer::ChromeReportUnrecoverableError, channel_), | 514 base::Bind(ChromeReportUnrecoverableError, channel_), |
| 517 http_post_provider_factory_getter, std::move(saved_nigori_state_)); | 515 http_post_provider_factory_getter, std::move(saved_nigori_state_)); |
| 518 } | 516 } |
| 519 | 517 |
| 520 bool ProfileSyncService::IsEncryptedDatatypeEnabled() const { | 518 bool ProfileSyncService::IsEncryptedDatatypeEnabled() const { |
| 521 if (encryption_pending()) | 519 if (encryption_pending()) |
| 522 return true; | 520 return true; |
| 523 const syncer::ModelTypeSet preferred_types = GetPreferredDataTypes(); | 521 const syncer::ModelTypeSet preferred_types = GetPreferredDataTypes(); |
| 524 const syncer::ModelTypeSet encrypted_types = GetEncryptedDataTypes(); | 522 const syncer::ModelTypeSet encrypted_types = GetEncryptedDataTypes(); |
| 525 DCHECK(encrypted_types.Has(syncer::PASSWORDS)); | 523 DCHECK(encrypted_types.Has(syncer::PASSWORDS)); |
| 526 return !Intersection(preferred_types, encrypted_types).Empty(); | 524 return !Intersection(preferred_types, encrypted_types).Empty(); |
| (...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 822 if (IsBackendInitialized()) { | 820 if (IsBackendInitialized()) { |
| 823 ReconfigureDatatypeManager(); | 821 ReconfigureDatatypeManager(); |
| 824 } | 822 } |
| 825 } | 823 } |
| 826 | 824 |
| 827 void ProfileSyncService::UpdateLastSyncedTime() { | 825 void ProfileSyncService::UpdateLastSyncedTime() { |
| 828 sync_prefs_.SetLastSyncedTime(base::Time::Now()); | 826 sync_prefs_.SetLastSyncedTime(base::Time::Now()); |
| 829 } | 827 } |
| 830 | 828 |
| 831 void ProfileSyncService::NotifyObservers() { | 829 void ProfileSyncService::NotifyObservers() { |
| 832 FOR_EACH_OBSERVER(syncer::SyncServiceObserver, observers_, OnStateChanged()); | 830 FOR_EACH_OBSERVER(sync_driver::SyncServiceObserver, observers_, |
| 831 OnStateChanged()); |
| 833 } | 832 } |
| 834 | 833 |
| 835 void ProfileSyncService::NotifySyncCycleCompleted() { | 834 void ProfileSyncService::NotifySyncCycleCompleted() { |
| 836 FOR_EACH_OBSERVER(syncer::SyncServiceObserver, observers_, | 835 FOR_EACH_OBSERVER(sync_driver::SyncServiceObserver, observers_, |
| 837 OnSyncCycleCompleted()); | 836 OnSyncCycleCompleted()); |
| 838 } | 837 } |
| 839 | 838 |
| 840 void ProfileSyncService::NotifyForeignSessionUpdated() { | 839 void ProfileSyncService::NotifyForeignSessionUpdated() { |
| 841 FOR_EACH_OBSERVER(syncer::SyncServiceObserver, observers_, | 840 FOR_EACH_OBSERVER(sync_driver::SyncServiceObserver, observers_, |
| 842 OnForeignSessionUpdated()); | 841 OnForeignSessionUpdated()); |
| 843 } | 842 } |
| 844 | 843 |
| 845 void ProfileSyncService::ClearStaleErrors() { | 844 void ProfileSyncService::ClearStaleErrors() { |
| 846 ClearUnrecoverableError(); | 845 ClearUnrecoverableError(); |
| 847 last_actionable_error_ = SyncProtocolError(); | 846 last_actionable_error_ = SyncProtocolError(); |
| 848 // Clear the data type errors as well. | 847 // Clear the data type errors as well. |
| 849 if (data_type_manager_.get()) | 848 if (data_type_manager_.get()) |
| 850 data_type_manager_->ResetDataTypeErrors(); | 849 data_type_manager_->ResetDataTypeErrors(); |
| 851 } | 850 } |
| (...skipping 466 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1318 if (is_first_time_sync_configure_) { | 1317 if (is_first_time_sync_configure_) { |
| 1319 UMA_HISTOGRAM_LONG_TIMES("Sync.ServiceInitialConfigureTime", delta); | 1318 UMA_HISTOGRAM_LONG_TIMES("Sync.ServiceInitialConfigureTime", delta); |
| 1320 } else { | 1319 } else { |
| 1321 UMA_HISTOGRAM_LONG_TIMES("Sync.ServiceSubsequentConfigureTime", delta); | 1320 UMA_HISTOGRAM_LONG_TIMES("Sync.ServiceSubsequentConfigureTime", delta); |
| 1322 } | 1321 } |
| 1323 } | 1322 } |
| 1324 sync_configure_start_time_ = base::Time(); | 1323 sync_configure_start_time_ = base::Time(); |
| 1325 } | 1324 } |
| 1326 | 1325 |
| 1327 // Notify listeners that configuration is done. | 1326 // Notify listeners that configuration is done. |
| 1328 FOR_EACH_OBSERVER(syncer::SyncServiceObserver, observers_, | 1327 FOR_EACH_OBSERVER(sync_driver::SyncServiceObserver, observers_, |
| 1329 OnSyncConfigurationCompleted()); | 1328 OnSyncConfigurationCompleted()); |
| 1330 | 1329 |
| 1331 DVLOG(1) << "PSS OnConfigureDone called with status: " << configure_status_; | 1330 DVLOG(1) << "PSS OnConfigureDone called with status: " << configure_status_; |
| 1332 // The possible status values: | 1331 // The possible status values: |
| 1333 // ABORT - Configuration was aborted. This is not an error, if | 1332 // ABORT - Configuration was aborted. This is not an error, if |
| 1334 // initiated by user. | 1333 // initiated by user. |
| 1335 // OK - Some or all types succeeded. | 1334 // OK - Some or all types succeeded. |
| 1336 // Everything else is an UnrecoverableError. So treat it as such. | 1335 // Everything else is an UnrecoverableError. So treat it as such. |
| 1337 | 1336 |
| 1338 // First handle the abort case. | 1337 // First handle the abort case. |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1464 } | 1463 } |
| 1465 | 1464 |
| 1466 bool ProfileSyncService::CanConfigureDataTypes() const { | 1465 bool ProfileSyncService::CanConfigureDataTypes() const { |
| 1467 return IsFirstSetupComplete() && !IsSetupInProgress(); | 1466 return IsFirstSetupComplete() && !IsSetupInProgress(); |
| 1468 } | 1467 } |
| 1469 | 1468 |
| 1470 bool ProfileSyncService::IsFirstSetupInProgress() const { | 1469 bool ProfileSyncService::IsFirstSetupInProgress() const { |
| 1471 return !IsFirstSetupComplete() && startup_controller_->IsSetupInProgress(); | 1470 return !IsFirstSetupComplete() && startup_controller_->IsSetupInProgress(); |
| 1472 } | 1471 } |
| 1473 | 1472 |
| 1474 std::unique_ptr<syncer::SyncSetupInProgressHandle> | 1473 std::unique_ptr<sync_driver::SyncSetupInProgressHandle> |
| 1475 ProfileSyncService::GetSetupInProgressHandle() { | 1474 ProfileSyncService::GetSetupInProgressHandle() { |
| 1476 if (++outstanding_setup_in_progress_handles_ == 1) { | 1475 if (++outstanding_setup_in_progress_handles_ == 1) { |
| 1477 DCHECK(!startup_controller_->IsSetupInProgress()); | 1476 DCHECK(!startup_controller_->IsSetupInProgress()); |
| 1478 startup_controller_->SetSetupInProgress(true); | 1477 startup_controller_->SetSetupInProgress(true); |
| 1479 | 1478 |
| 1480 NotifyObservers(); | 1479 NotifyObservers(); |
| 1481 } | 1480 } |
| 1482 | 1481 |
| 1483 return std::unique_ptr<syncer::SyncSetupInProgressHandle>( | 1482 return std::unique_ptr<sync_driver::SyncSetupInProgressHandle>( |
| 1484 new syncer::SyncSetupInProgressHandle( | 1483 new sync_driver::SyncSetupInProgressHandle( |
| 1485 base::Bind(&ProfileSyncService::OnSetupInProgressHandleDestroyed, | 1484 base::Bind(&ProfileSyncService::OnSetupInProgressHandleDestroyed, |
| 1486 weak_factory_.GetWeakPtr()))); | 1485 weak_factory_.GetWeakPtr()))); |
| 1487 } | 1486 } |
| 1488 | 1487 |
| 1489 bool ProfileSyncService::IsSyncAllowed() const { | 1488 bool ProfileSyncService::IsSyncAllowed() const { |
| 1490 return IsSyncAllowedByFlag() && !IsManaged() && IsSyncAllowedByPlatform(); | 1489 return IsSyncAllowedByFlag() && !IsManaged() && IsSyncAllowedByPlatform(); |
| 1491 } | 1490 } |
| 1492 | 1491 |
| 1493 bool ProfileSyncService::IsSyncActive() const { | 1492 bool ProfileSyncService::IsSyncActive() const { |
| 1494 return backend_initialized_ && data_type_manager_ && | 1493 return backend_initialized_ && data_type_manager_ && |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1562 bool sync_everything, | 1561 bool sync_everything, |
| 1563 const syncer::ModelTypeSet chosen_types) const { | 1562 const syncer::ModelTypeSet chosen_types) const { |
| 1564 if (!IsFirstSetupComplete() || | 1563 if (!IsFirstSetupComplete() || |
| 1565 sync_everything != sync_prefs_.HasKeepEverythingSynced()) { | 1564 sync_everything != sync_prefs_.HasKeepEverythingSynced()) { |
| 1566 UMA_HISTOGRAM_BOOLEAN("Sync.SyncEverything", sync_everything); | 1565 UMA_HISTOGRAM_BOOLEAN("Sync.SyncEverything", sync_everything); |
| 1567 } | 1566 } |
| 1568 | 1567 |
| 1569 // Only log the data types that are shown in the sync settings ui. | 1568 // Only log the data types that are shown in the sync settings ui. |
| 1570 // Note: the order of these types must match the ordering of | 1569 // Note: the order of these types must match the ordering of |
| 1571 // the respective types in ModelType | 1570 // the respective types in ModelType |
| 1572 const syncer::user_selectable_type::UserSelectableSyncType | 1571 const sync_driver::user_selectable_type::UserSelectableSyncType |
| 1573 user_selectable_types[] = { | 1572 user_selectable_types[] = { |
| 1574 syncer::user_selectable_type::BOOKMARKS, | 1573 sync_driver::user_selectable_type::BOOKMARKS, |
| 1575 syncer::user_selectable_type::PREFERENCES, | 1574 sync_driver::user_selectable_type::PREFERENCES, |
| 1576 syncer::user_selectable_type::PASSWORDS, | 1575 sync_driver::user_selectable_type::PASSWORDS, |
| 1577 syncer::user_selectable_type::AUTOFILL, | 1576 sync_driver::user_selectable_type::AUTOFILL, |
| 1578 syncer::user_selectable_type::THEMES, | 1577 sync_driver::user_selectable_type::THEMES, |
| 1579 syncer::user_selectable_type::TYPED_URLS, | 1578 sync_driver::user_selectable_type::TYPED_URLS, |
| 1580 syncer::user_selectable_type::EXTENSIONS, | 1579 sync_driver::user_selectable_type::EXTENSIONS, |
| 1581 syncer::user_selectable_type::APPS, | 1580 sync_driver::user_selectable_type::APPS, |
| 1582 syncer::user_selectable_type::PROXY_TABS, | 1581 sync_driver::user_selectable_type::PROXY_TABS, |
| 1583 }; | 1582 }; |
| 1584 | 1583 |
| 1585 static_assert(39 == syncer::MODEL_TYPE_COUNT, | 1584 static_assert(39 == syncer::MODEL_TYPE_COUNT, |
| 1586 "custom config histogram must be updated"); | 1585 "custom config histogram must be updated"); |
| 1587 | 1586 |
| 1588 if (!sync_everything) { | 1587 if (!sync_everything) { |
| 1589 const syncer::ModelTypeSet current_types = GetPreferredDataTypes(); | 1588 const syncer::ModelTypeSet current_types = GetPreferredDataTypes(); |
| 1590 | 1589 |
| 1591 syncer::ModelTypeSet type_set = syncer::UserSelectableTypes(); | 1590 syncer::ModelTypeSet type_set = syncer::UserSelectableTypes(); |
| 1592 syncer::ModelTypeSet::Iterator it = type_set.First(); | 1591 syncer::ModelTypeSet::Iterator it = type_set.First(); |
| 1593 | 1592 |
| 1594 DCHECK_EQ(arraysize(user_selectable_types), type_set.Size()); | 1593 DCHECK_EQ(arraysize(user_selectable_types), type_set.Size()); |
| 1595 | 1594 |
| 1596 for (size_t i = 0; i < arraysize(user_selectable_types) && it.Good(); | 1595 for (size_t i = 0; i < arraysize(user_selectable_types) && it.Good(); |
| 1597 ++i, it.Inc()) { | 1596 ++i, it.Inc()) { |
| 1598 const syncer::ModelType type = it.Get(); | 1597 const syncer::ModelType type = it.Get(); |
| 1599 if (chosen_types.Has(type) && | 1598 if (chosen_types.Has(type) && |
| 1600 (!IsFirstSetupComplete() || !current_types.Has(type))) { | 1599 (!IsFirstSetupComplete() || !current_types.Has(type))) { |
| 1601 // Selected type has changed - log it. | 1600 // Selected type has changed - log it. |
| 1602 UMA_HISTOGRAM_ENUMERATION( | 1601 UMA_HISTOGRAM_ENUMERATION( |
| 1603 "Sync.CustomSync", user_selectable_types[i], | 1602 "Sync.CustomSync", user_selectable_types[i], |
| 1604 syncer::user_selectable_type::SELECTABLE_DATATYPE_COUNT + 1); | 1603 sync_driver::user_selectable_type::SELECTABLE_DATATYPE_COUNT + 1); |
| 1605 } | 1604 } |
| 1606 } | 1605 } |
| 1607 } | 1606 } |
| 1608 } | 1607 } |
| 1609 | 1608 |
| 1610 #if defined(OS_CHROMEOS) | 1609 #if defined(OS_CHROMEOS) |
| 1611 void ProfileSyncService::RefreshSpareBootstrapToken( | 1610 void ProfileSyncService::RefreshSpareBootstrapToken( |
| 1612 const std::string& passphrase) { | 1611 const std::string& passphrase) { |
| 1613 syncer::SystemEncryptor encryptor; | 1612 sync_driver::SystemEncryptor encryptor; |
| 1614 syncer::Cryptographer temp_cryptographer(&encryptor); | 1613 syncer::Cryptographer temp_cryptographer(&encryptor); |
| 1615 // The first 2 params (hostname and username) doesn't have any effect here. | 1614 // The first 2 params (hostname and username) doesn't have any effect here. |
| 1616 syncer::KeyParams key_params = {"localhost", "dummy", passphrase}; | 1615 syncer::KeyParams key_params = {"localhost", "dummy", passphrase}; |
| 1617 | 1616 |
| 1618 std::string bootstrap_token; | 1617 std::string bootstrap_token; |
| 1619 if (!temp_cryptographer.AddKey(key_params)) { | 1618 if (!temp_cryptographer.AddKey(key_params)) { |
| 1620 NOTREACHED() << "Failed to add key to cryptographer."; | 1619 NOTREACHED() << "Failed to add key to cryptographer."; |
| 1621 } | 1620 } |
| 1622 temp_cryptographer.GetBootstrapToken(&bootstrap_token); | 1621 temp_cryptographer.GetBootstrapToken(&bootstrap_token); |
| 1623 sync_prefs_.SetSpareBootstrapToken(bootstrap_token); | 1622 sync_prefs_.SetSpareBootstrapToken(bootstrap_token); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1655 | 1654 |
| 1656 syncer::ModelTypeSet ProfileSyncService::GetActiveDataTypes() const { | 1655 syncer::ModelTypeSet ProfileSyncService::GetActiveDataTypes() const { |
| 1657 if (!IsSyncActive() || !ConfigurationDone()) | 1656 if (!IsSyncActive() || !ConfigurationDone()) |
| 1658 return syncer::ModelTypeSet(); | 1657 return syncer::ModelTypeSet(); |
| 1659 const syncer::ModelTypeSet preferred_types = GetPreferredDataTypes(); | 1658 const syncer::ModelTypeSet preferred_types = GetPreferredDataTypes(); |
| 1660 const syncer::ModelTypeSet failed_types = | 1659 const syncer::ModelTypeSet failed_types = |
| 1661 data_type_status_table_.GetFailedTypes(); | 1660 data_type_status_table_.GetFailedTypes(); |
| 1662 return Difference(preferred_types, failed_types); | 1661 return Difference(preferred_types, failed_types); |
| 1663 } | 1662 } |
| 1664 | 1663 |
| 1665 syncer::SyncClient* ProfileSyncService::GetSyncClient() const { | 1664 sync_driver::SyncClient* ProfileSyncService::GetSyncClient() const { |
| 1666 return sync_client_.get(); | 1665 return sync_client_.get(); |
| 1667 } | 1666 } |
| 1668 | 1667 |
| 1669 syncer::ModelTypeSet ProfileSyncService::GetPreferredDataTypes() const { | 1668 syncer::ModelTypeSet ProfileSyncService::GetPreferredDataTypes() const { |
| 1670 const syncer::ModelTypeSet registered_types = GetRegisteredDataTypes(); | 1669 const syncer::ModelTypeSet registered_types = GetRegisteredDataTypes(); |
| 1671 const syncer::ModelTypeSet preferred_types = | 1670 const syncer::ModelTypeSet preferred_types = |
| 1672 Union(sync_prefs_.GetPreferredDataTypes(registered_types), | 1671 Union(sync_prefs_.GetPreferredDataTypes(registered_types), |
| 1673 syncer::ControlTypes()); | 1672 syncer::ControlTypes()); |
| 1674 const syncer::ModelTypeSet enforced_types = | 1673 const syncer::ModelTypeSet enforced_types = |
| 1675 Intersection(GetDataTypesFromPreferenceProviders(), registered_types); | 1674 Intersection(GetDataTypesFromPreferenceProviders(), registered_types); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 1696 } | 1695 } |
| 1697 | 1696 |
| 1698 bool ProfileSyncService::IsUsingSecondaryPassphrase() const { | 1697 bool ProfileSyncService::IsUsingSecondaryPassphrase() const { |
| 1699 syncer::PassphraseType passphrase_type = GetPassphraseType(); | 1698 syncer::PassphraseType passphrase_type = GetPassphraseType(); |
| 1700 return passphrase_type == | 1699 return passphrase_type == |
| 1701 syncer::PassphraseType::FROZEN_IMPLICIT_PASSPHRASE || | 1700 syncer::PassphraseType::FROZEN_IMPLICIT_PASSPHRASE || |
| 1702 passphrase_type == syncer::PassphraseType::CUSTOM_PASSPHRASE; | 1701 passphrase_type == syncer::PassphraseType::CUSTOM_PASSPHRASE; |
| 1703 } | 1702 } |
| 1704 | 1703 |
| 1705 std::string ProfileSyncService::GetCustomPassphraseKey() const { | 1704 std::string ProfileSyncService::GetCustomPassphraseKey() const { |
| 1706 syncer::SystemEncryptor encryptor; | 1705 sync_driver::SystemEncryptor encryptor; |
| 1707 syncer::Cryptographer cryptographer(&encryptor); | 1706 syncer::Cryptographer cryptographer(&encryptor); |
| 1708 cryptographer.Bootstrap(sync_prefs_.GetEncryptionBootstrapToken()); | 1707 cryptographer.Bootstrap(sync_prefs_.GetEncryptionBootstrapToken()); |
| 1709 return cryptographer.GetDefaultNigoriKeyData(); | 1708 return cryptographer.GetDefaultNigoriKeyData(); |
| 1710 } | 1709 } |
| 1711 | 1710 |
| 1712 syncer::PassphraseType ProfileSyncService::GetPassphraseType() const { | 1711 syncer::PassphraseType ProfileSyncService::GetPassphraseType() const { |
| 1713 return backend_->GetPassphraseType(); | 1712 return backend_->GetPassphraseType(); |
| 1714 } | 1713 } |
| 1715 | 1714 |
| 1716 base::Time ProfileSyncService::GetExplicitPassphraseTime() const { | 1715 base::Time ProfileSyncService::GetExplicitPassphraseTime() const { |
| (...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2085 cookie_jar_mismatch = false; | 2084 cookie_jar_mismatch = false; |
| 2086 break; | 2085 break; |
| 2087 } | 2086 } |
| 2088 } | 2087 } |
| 2089 | 2088 |
| 2090 DVLOG(1) << "Cookie jar mismatch: " << cookie_jar_mismatch; | 2089 DVLOG(1) << "Cookie jar mismatch: " << cookie_jar_mismatch; |
| 2091 DVLOG(1) << "Cookie jar empty: " << cookie_jar_empty; | 2090 DVLOG(1) << "Cookie jar empty: " << cookie_jar_empty; |
| 2092 backend_->OnCookieJarChanged(cookie_jar_mismatch, cookie_jar_empty); | 2091 backend_->OnCookieJarChanged(cookie_jar_mismatch, cookie_jar_empty); |
| 2093 } | 2092 } |
| 2094 | 2093 |
| 2095 void ProfileSyncService::AddObserver(syncer::SyncServiceObserver* observer) { | 2094 void ProfileSyncService::AddObserver( |
| 2095 sync_driver::SyncServiceObserver* observer) { |
| 2096 observers_.AddObserver(observer); | 2096 observers_.AddObserver(observer); |
| 2097 } | 2097 } |
| 2098 | 2098 |
| 2099 void ProfileSyncService::RemoveObserver(syncer::SyncServiceObserver* observer) { | 2099 void ProfileSyncService::RemoveObserver( |
| 2100 sync_driver::SyncServiceObserver* observer) { |
| 2100 observers_.RemoveObserver(observer); | 2101 observers_.RemoveObserver(observer); |
| 2101 } | 2102 } |
| 2102 | 2103 |
| 2103 void ProfileSyncService::AddProtocolEventObserver( | 2104 void ProfileSyncService::AddProtocolEventObserver( |
| 2104 ProtocolEventObserver* observer) { | 2105 ProtocolEventObserver* observer) { |
| 2105 protocol_event_observers_.AddObserver(observer); | 2106 protocol_event_observers_.AddObserver(observer); |
| 2106 if (HasSyncingBackend()) { | 2107 if (HasSyncingBackend()) { |
| 2107 backend_->RequestBufferedProtocolEventsAndEnableForwarding(); | 2108 backend_->RequestBufferedProtocolEventsAndEnableForwarding(); |
| 2108 } | 2109 } |
| 2109 } | 2110 } |
| (...skipping 19 matching lines...) Expand all Loading... |
| 2129 void ProfileSyncService::RemoveTypeDebugInfoObserver( | 2130 void ProfileSyncService::RemoveTypeDebugInfoObserver( |
| 2130 syncer::TypeDebugInfoObserver* type_debug_info_observer) { | 2131 syncer::TypeDebugInfoObserver* type_debug_info_observer) { |
| 2131 type_debug_info_observers_.RemoveObserver(type_debug_info_observer); | 2132 type_debug_info_observers_.RemoveObserver(type_debug_info_observer); |
| 2132 if (!type_debug_info_observers_.might_have_observers() && | 2133 if (!type_debug_info_observers_.might_have_observers() && |
| 2133 backend_initialized_) { | 2134 backend_initialized_) { |
| 2134 backend_->DisableDirectoryTypeDebugInfoForwarding(); | 2135 backend_->DisableDirectoryTypeDebugInfoForwarding(); |
| 2135 } | 2136 } |
| 2136 } | 2137 } |
| 2137 | 2138 |
| 2138 void ProfileSyncService::AddPreferenceProvider( | 2139 void ProfileSyncService::AddPreferenceProvider( |
| 2139 syncer::SyncTypePreferenceProvider* provider) { | 2140 SyncTypePreferenceProvider* provider) { |
| 2140 DCHECK(!HasPreferenceProvider(provider)) | 2141 DCHECK(!HasPreferenceProvider(provider)) |
| 2141 << "Providers may only be added once!"; | 2142 << "Providers may only be added once!"; |
| 2142 preference_providers_.insert(provider); | 2143 preference_providers_.insert(provider); |
| 2143 } | 2144 } |
| 2144 | 2145 |
| 2145 void ProfileSyncService::RemovePreferenceProvider( | 2146 void ProfileSyncService::RemovePreferenceProvider( |
| 2146 syncer::SyncTypePreferenceProvider* provider) { | 2147 SyncTypePreferenceProvider* provider) { |
| 2147 DCHECK(HasPreferenceProvider(provider)) | 2148 DCHECK(HasPreferenceProvider(provider)) |
| 2148 << "Only providers that have been added before can be removed!"; | 2149 << "Only providers that have been added before can be removed!"; |
| 2149 preference_providers_.erase(provider); | 2150 preference_providers_.erase(provider); |
| 2150 } | 2151 } |
| 2151 | 2152 |
| 2152 bool ProfileSyncService::HasPreferenceProvider( | 2153 bool ProfileSyncService::HasPreferenceProvider( |
| 2153 syncer::SyncTypePreferenceProvider* provider) const { | 2154 SyncTypePreferenceProvider* provider) const { |
| 2154 return preference_providers_.count(provider) > 0; | 2155 return preference_providers_.count(provider) > 0; |
| 2155 } | 2156 } |
| 2156 | 2157 |
| 2157 namespace { | 2158 namespace { |
| 2158 | 2159 |
| 2159 class GetAllNodesRequestHelper | 2160 class GetAllNodesRequestHelper |
| 2160 : public base::RefCountedThreadSafe<GetAllNodesRequestHelper> { | 2161 : public base::RefCountedThreadSafe<GetAllNodesRequestHelper> { |
| 2161 public: | 2162 public: |
| 2162 GetAllNodesRequestHelper( | 2163 GetAllNodesRequestHelper( |
| 2163 syncer::ModelTypeSet requested_types, | 2164 syncer::ModelTypeSet requested_types, |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2231 } | 2232 } |
| 2232 | 2233 |
| 2233 for (ModelTypeSet::Iterator it = all_types.First(); it.Good(); it.Inc()) { | 2234 for (ModelTypeSet::Iterator it = all_types.First(); it.Good(); it.Inc()) { |
| 2234 const auto& dtc_iter = data_type_controllers_.find(it.Get()); | 2235 const auto& dtc_iter = data_type_controllers_.find(it.Get()); |
| 2235 if (dtc_iter != data_type_controllers_.end()) { | 2236 if (dtc_iter != data_type_controllers_.end()) { |
| 2236 dtc_iter->second->GetAllNodes(base::Bind( | 2237 dtc_iter->second->GetAllNodes(base::Bind( |
| 2237 &GetAllNodesRequestHelper::OnReceivedNodesForType, helper)); | 2238 &GetAllNodesRequestHelper::OnReceivedNodesForType, helper)); |
| 2238 } else { | 2239 } else { |
| 2239 // Control Types | 2240 // Control Types |
| 2240 helper->OnReceivedNodesForType( | 2241 helper->OnReceivedNodesForType( |
| 2241 it.Get(), | 2242 it.Get(), sync_driver::DirectoryDataTypeController:: |
| 2242 syncer::DirectoryDataTypeController::GetAllNodesForTypeFromDirectory( | 2243 GetAllNodesForTypeFromDirectory( |
| 2243 it.Get(), GetUserShare()->directory.get())); | 2244 it.Get(), GetUserShare()->directory.get())); |
| 2244 } | 2245 } |
| 2245 } | 2246 } |
| 2246 } | 2247 } |
| 2247 | 2248 |
| 2248 bool ProfileSyncService::HasObserver( | 2249 bool ProfileSyncService::HasObserver( |
| 2249 const syncer::SyncServiceObserver* observer) const { | 2250 const sync_driver::SyncServiceObserver* observer) const { |
| 2250 return observers_.HasObserver(observer); | 2251 return observers_.HasObserver(observer); |
| 2251 } | 2252 } |
| 2252 | 2253 |
| 2253 base::WeakPtr<syncer::JsController> ProfileSyncService::GetJsController() { | 2254 base::WeakPtr<syncer::JsController> ProfileSyncService::GetJsController() { |
| 2254 return sync_js_controller_.AsWeakPtr(); | 2255 return sync_js_controller_.AsWeakPtr(); |
| 2255 } | 2256 } |
| 2256 | 2257 |
| 2257 void ProfileSyncService::SyncEvent(SyncEventCodes code) { | 2258 void ProfileSyncService::SyncEvent(SyncEventCodes code) { |
| 2258 UMA_HISTOGRAM_ENUMERATION("Sync.EventCodes", code, MAX_SYNC_EVENT_CODE); | 2259 UMA_HISTOGRAM_ENUMERATION("Sync.EventCodes", code, MAX_SYNC_EVENT_CODE); |
| 2259 } | 2260 } |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2315 << "Unrecoverable error."; | 2316 << "Unrecoverable error."; |
| 2316 } else { | 2317 } else { |
| 2317 DVLOG(0) << "ConfigureDataTypeManager not invoked because backend is not " | 2318 DVLOG(0) << "ConfigureDataTypeManager not invoked because backend is not " |
| 2318 << "initialized"; | 2319 << "initialized"; |
| 2319 } | 2320 } |
| 2320 } | 2321 } |
| 2321 | 2322 |
| 2322 syncer::ModelTypeSet ProfileSyncService::GetDataTypesFromPreferenceProviders() | 2323 syncer::ModelTypeSet ProfileSyncService::GetDataTypesFromPreferenceProviders() |
| 2323 const { | 2324 const { |
| 2324 syncer::ModelTypeSet types; | 2325 syncer::ModelTypeSet types; |
| 2325 for (std::set<syncer::SyncTypePreferenceProvider*>::const_iterator it = | 2326 for (std::set<SyncTypePreferenceProvider*>::const_iterator it = |
| 2326 preference_providers_.begin(); | 2327 preference_providers_.begin(); |
| 2327 it != preference_providers_.end(); ++it) { | 2328 it != preference_providers_.end(); ++it) { |
| 2328 types.PutAll((*it)->GetPreferredDataTypes()); | 2329 types.PutAll((*it)->GetPreferredDataTypes()); |
| 2329 } | 2330 } |
| 2330 return types; | 2331 return types; |
| 2331 } | 2332 } |
| 2332 | 2333 |
| 2333 const DataTypeStatusTable& ProfileSyncService::data_type_status_table() const { | 2334 const DataTypeStatusTable& ProfileSyncService::data_type_status_table() const { |
| 2334 return data_type_status_table_; | 2335 return data_type_status_table_; |
| 2335 } | 2336 } |
| (...skipping 21 matching lines...) Expand all Loading... |
| 2357 } | 2358 } |
| 2358 | 2359 |
| 2359 syncer::SyncableService* ProfileSyncService::GetSessionsSyncableService() { | 2360 syncer::SyncableService* ProfileSyncService::GetSessionsSyncableService() { |
| 2360 return sessions_sync_manager_.get(); | 2361 return sessions_sync_manager_.get(); |
| 2361 } | 2362 } |
| 2362 | 2363 |
| 2363 syncer::SyncableService* ProfileSyncService::GetDeviceInfoSyncableService() { | 2364 syncer::SyncableService* ProfileSyncService::GetDeviceInfoSyncableService() { |
| 2364 return device_info_sync_service_.get(); | 2365 return device_info_sync_service_.get(); |
| 2365 } | 2366 } |
| 2366 | 2367 |
| 2367 syncer::ModelTypeService* ProfileSyncService::GetDeviceInfoService() { | 2368 syncer_v2::ModelTypeService* ProfileSyncService::GetDeviceInfoService() { |
| 2368 return device_info_service_.get(); | 2369 return device_info_service_.get(); |
| 2369 } | 2370 } |
| 2370 | 2371 |
| 2371 syncer::SyncService::SyncTokenStatus ProfileSyncService::GetSyncTokenStatus() | 2372 sync_driver::SyncService::SyncTokenStatus |
| 2372 const { | 2373 ProfileSyncService::GetSyncTokenStatus() const { |
| 2373 SyncTokenStatus status; | 2374 SyncTokenStatus status; |
| 2374 status.connection_status_update_time = connection_status_update_time_; | 2375 status.connection_status_update_time = connection_status_update_time_; |
| 2375 status.connection_status = connection_status_; | 2376 status.connection_status = connection_status_; |
| 2376 status.token_request_time = token_request_time_; | 2377 status.token_request_time = token_request_time_; |
| 2377 status.token_receive_time = token_receive_time_; | 2378 status.token_receive_time = token_receive_time_; |
| 2378 status.last_get_token_error = last_get_token_error_; | 2379 status.last_get_token_error = last_get_token_error_; |
| 2379 if (request_access_token_retry_timer_.IsRunning()) | 2380 if (request_access_token_retry_timer_.IsRunning()) |
| 2380 status.next_token_request_time = next_token_request_time_; | 2381 status.next_token_request_time = next_token_request_time_; |
| 2381 return status; | 2382 return status; |
| 2382 } | 2383 } |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2490 | 2491 |
| 2491 DCHECK(startup_controller_->IsSetupInProgress()); | 2492 DCHECK(startup_controller_->IsSetupInProgress()); |
| 2492 startup_controller_->SetSetupInProgress(false); | 2493 startup_controller_->SetSetupInProgress(false); |
| 2493 | 2494 |
| 2494 if (IsBackendInitialized()) | 2495 if (IsBackendInitialized()) |
| 2495 ReconfigureDatatypeManager(); | 2496 ReconfigureDatatypeManager(); |
| 2496 NotifyObservers(); | 2497 NotifyObservers(); |
| 2497 } | 2498 } |
| 2498 | 2499 |
| 2499 } // namespace browser_sync | 2500 } // namespace browser_sync |
| OLD | NEW |