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 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
72 #include "content/public/browser/notification_service.h" | 72 #include "content/public/browser/notification_service.h" |
73 #include "content/public/browser/notification_source.h" | 73 #include "content/public/browser/notification_source.h" |
74 #include "google_apis/gaia/gaia_constants.h" | 74 #include "google_apis/gaia/gaia_constants.h" |
75 #include "grit/generated_resources.h" | 75 #include "grit/generated_resources.h" |
76 #include "net/cookies/cookie_monster.h" | 76 #include "net/cookies/cookie_monster.h" |
77 #include "net/url_request/url_request_context_getter.h" | 77 #include "net/url_request/url_request_context_getter.h" |
78 #include "sync/api/sync_error.h" | 78 #include "sync/api/sync_error.h" |
79 #include "sync/internal_api/public/configure_reason.h" | 79 #include "sync/internal_api/public/configure_reason.h" |
80 #include "sync/internal_api/public/http_bridge_network_resources.h" | 80 #include "sync/internal_api/public/http_bridge_network_resources.h" |
81 #include "sync/internal_api/public/network_resources.h" | 81 #include "sync/internal_api/public/network_resources.h" |
82 #include "sync/internal_api/public/sync_core_proxy.h" | |
82 #include "sync/internal_api/public/sync_encryption_handler.h" | 83 #include "sync/internal_api/public/sync_encryption_handler.h" |
83 #include "sync/internal_api/public/util/experiments.h" | 84 #include "sync/internal_api/public/util/experiments.h" |
84 #include "sync/internal_api/public/util/sync_string_conversions.h" | 85 #include "sync/internal_api/public/util/sync_string_conversions.h" |
85 #include "sync/js/js_arg_list.h" | 86 #include "sync/js/js_arg_list.h" |
86 #include "sync/js/js_event_details.h" | 87 #include "sync/js/js_event_details.h" |
87 #include "sync/util/cryptographer.h" | 88 #include "sync/util/cryptographer.h" |
88 #include "ui/base/l10n/l10n_util.h" | 89 #include "ui/base/l10n/l10n_util.h" |
89 #include "ui/base/l10n/time_format.h" | 90 #include "ui/base/l10n/time_format.h" |
90 | 91 |
91 #if defined(ENABLE_MANAGED_USERS) | 92 #if defined(ENABLE_MANAGED_USERS) |
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
340 | 341 |
341 void ProfileSyncService::UnregisterAuthNotifications() { | 342 void ProfileSyncService::UnregisterAuthNotifications() { |
342 if (signin()) | 343 if (signin()) |
343 signin()->RemoveObserver(this); | 344 signin()->RemoveObserver(this); |
344 oauth2_token_service_->RemoveObserver(this); | 345 oauth2_token_service_->RemoveObserver(this); |
345 } | 346 } |
346 | 347 |
347 void ProfileSyncService::RegisterDataTypeController( | 348 void ProfileSyncService::RegisterDataTypeController( |
348 DataTypeController* data_type_controller) { | 349 DataTypeController* data_type_controller) { |
349 DCHECK_EQ(data_type_controllers_.count(data_type_controller->type()), 0U); | 350 DCHECK_EQ(data_type_controllers_.count(data_type_controller->type()), 0U); |
351 DCHECK(!GetRegisteredNonBlockingDataTypes().Has( | |
352 data_type_controller->type())); | |
350 data_type_controllers_[data_type_controller->type()] = | 353 data_type_controllers_[data_type_controller->type()] = |
351 data_type_controller; | 354 data_type_controller; |
352 } | 355 } |
353 | 356 |
357 void ProfileSyncService::RegisterNonBlockingType(syncer::ModelType type) { | |
358 DCHECK_EQ(data_type_controllers_.count(type), 0U); | |
359 DCHECK(!GetRegisteredNonBlockingDataTypes().Has(type)); | |
360 off_thread_types_.Put(type); | |
Nicolas Zea
2014/04/02 23:19:05
Presumably this is where we could kick off the sta
rlarocque
2014/04/03 01:03:46
Nope, not here. Registration is something that sh
| |
361 } | |
362 | |
354 browser_sync::SessionModelAssociator* | 363 browser_sync::SessionModelAssociator* |
355 ProfileSyncService::GetSessionModelAssociatorDeprecated() { | 364 ProfileSyncService::GetSessionModelAssociatorDeprecated() { |
356 if (!IsSessionsDataTypeControllerRunning()) | 365 if (!IsSessionsDataTypeControllerRunning()) |
357 return NULL; | 366 return NULL; |
358 | 367 |
359 // If we're using sessions V2, there's no model associator. | 368 // If we're using sessions V2, there's no model associator. |
360 if (sessions_sync_manager_.get()) | 369 if (sessions_sync_manager_.get()) |
361 return NULL; | 370 return NULL; |
362 | 371 |
363 return static_cast<browser_sync::SessionDataTypeController*>( | 372 return static_cast<browser_sync::SessionDataTypeController*>( |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
536 scoped_ptr<syncer::SyncManagerFactory>( | 545 scoped_ptr<syncer::SyncManagerFactory>( |
537 new syncer::SyncManagerFactory).Pass(), | 546 new syncer::SyncManagerFactory).Pass(), |
538 backend_unrecoverable_error_handler.Pass(), | 547 backend_unrecoverable_error_handler.Pass(), |
539 &browser_sync::ChromeReportUnrecoverableError, | 548 &browser_sync::ChromeReportUnrecoverableError, |
540 network_resources_.get()); | 549 network_resources_.get()); |
541 } | 550 } |
542 | 551 |
543 bool ProfileSyncService::IsEncryptedDatatypeEnabled() const { | 552 bool ProfileSyncService::IsEncryptedDatatypeEnabled() const { |
544 if (encryption_pending()) | 553 if (encryption_pending()) |
545 return true; | 554 return true; |
546 const syncer::ModelTypeSet preferred_types = GetPreferredDataTypes(); | 555 const syncer::ModelTypeSet preferred_types = |
556 GetPreferredDirectoryDataTypes(); | |
Nicolas Zea
2014/04/02 23:19:05
Why not GetPreferredDataTypes? Encryption isn't so
rlarocque
2014/04/03 01:03:46
Good point. Fixed.
| |
547 const syncer::ModelTypeSet encrypted_types = GetEncryptedDataTypes(); | 557 const syncer::ModelTypeSet encrypted_types = GetEncryptedDataTypes(); |
548 DCHECK(encrypted_types.Has(syncer::PASSWORDS)); | 558 DCHECK(encrypted_types.Has(syncer::PASSWORDS)); |
549 return !Intersection(preferred_types, encrypted_types).Empty(); | 559 return !Intersection(preferred_types, encrypted_types).Empty(); |
550 } | 560 } |
551 | 561 |
552 void ProfileSyncService::OnSyncConfigureRetry() { | 562 void ProfileSyncService::OnSyncConfigureRetry() { |
553 // Note: in order to handle auth failures that arise before the backend is | 563 // Note: in order to handle auth failures that arise before the backend is |
554 // initialized (e.g. from invalidation notifier, or downloading new control | 564 // initialized (e.g. from invalidation notifier, or downloading new control |
555 // types), we have to gracefully handle configuration retries at all times. | 565 // types), we have to gracefully handle configuration retries at all times. |
556 // At this point an auth error badge should be shown, which once resolved | 566 // At this point an auth error badge should be shown, which once resolved |
(...skipping 10 matching lines...) Expand all Loading... | |
567 | 577 |
568 void ProfileSyncService::OnDataTypeRequestsSyncStartup( | 578 void ProfileSyncService::OnDataTypeRequestsSyncStartup( |
569 syncer::ModelType type) { | 579 syncer::ModelType type) { |
570 DCHECK(syncer::UserTypes().Has(type)); | 580 DCHECK(syncer::UserTypes().Has(type)); |
571 if (backend_.get()) { | 581 if (backend_.get()) { |
572 DVLOG(1) << "A data type requested sync startup, but it looks like " | 582 DVLOG(1) << "A data type requested sync startup, but it looks like " |
573 "something else beat it to the punch."; | 583 "something else beat it to the punch."; |
574 return; | 584 return; |
575 } | 585 } |
576 | 586 |
577 if (!GetPreferredDataTypes().Has(type)) { | 587 if (!GetPreferredDirectoryDataTypes().Has(type)) { |
Nicolas Zea
2014/04/02 23:19:05
Here too. If a nonblocking type requests sync star
rlarocque
2014/04/03 01:03:46
Maybe. The non-blocking types won't be as badly a
| |
578 // We can get here as datatype SyncableServices are typically wired up | 588 // We can get here as datatype SyncableServices are typically wired up |
579 // to the native datatype even if sync isn't enabled. | 589 // to the native datatype even if sync isn't enabled. |
580 DVLOG(1) << "Dropping sync startup request because type " | 590 DVLOG(1) << "Dropping sync startup request because type " |
581 << syncer::ModelTypeToString(type) << "not enabled."; | 591 << syncer::ModelTypeToString(type) << "not enabled."; |
582 return; | 592 return; |
583 } | 593 } |
584 | 594 |
585 startup_controller_.OnDataTypeRequestsSyncStartup(type); | 595 startup_controller_.OnDataTypeRequestsSyncStartup(type); |
586 } | 596 } |
587 | 597 |
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
929 // directory. It would be no big deal if we tried to delete it again. | 939 // directory. It would be no big deal if we tried to delete it again. |
930 OnInternalUnrecoverableError(FROM_HERE, | 940 OnInternalUnrecoverableError(FROM_HERE, |
931 "BackendInitialize failure", | 941 "BackendInitialize failure", |
932 false, | 942 false, |
933 ERROR_REASON_BACKEND_INIT_FAILURE); | 943 ERROR_REASON_BACKEND_INIT_FAILURE); |
934 return; | 944 return; |
935 } | 945 } |
936 | 946 |
937 backend_initialized_ = true; | 947 backend_initialized_ = true; |
938 | 948 |
949 backend_->SetPreferredNonBlockingTypes(GetPreferredNonBlockingDataTypes()); | |
Nicolas Zea
2014/04/02 23:19:05
It's not clear to me why the backend needs to know
rlarocque
2014/04/03 01:03:46
I was surprised to learn about this, too.
We want
Nicolas Zea
2014/04/03 17:52:15
But why is this different from directory types? Do
rlarocque
2014/04/03 19:57:03
Directory types register for invalidations once th
| |
950 | |
939 sync_js_controller_.AttachJsBackend(js_backend); | 951 sync_js_controller_.AttachJsBackend(js_backend); |
940 debug_info_listener_ = debug_info_listener; | 952 debug_info_listener_ = debug_info_listener; |
941 | 953 |
942 if (protocol_event_observers_.might_have_observers()) { | 954 if (protocol_event_observers_.might_have_observers()) { |
943 backend_->SetForwardProtocolEvents(true); | 955 backend_->SetForwardProtocolEvents(true); |
944 } | 956 } |
945 | 957 |
958 syncer::SyncCoreProxy sync_core_proxy_ = backend_->GetSyncCoreProxy(); | |
959 | |
946 // If we have a cached passphrase use it to decrypt/encrypt data now that the | 960 // If we have a cached passphrase use it to decrypt/encrypt data now that the |
947 // backend is initialized. We want to call this before notifying observers in | 961 // backend is initialized. We want to call this before notifying observers in |
948 // case this operation affects the "passphrase required" status. | 962 // case this operation affects the "passphrase required" status. |
949 ConsumeCachedPassphraseIfPossible(); | 963 ConsumeCachedPassphraseIfPossible(); |
950 | 964 |
951 // The very first time the backend initializes is effectively the first time | 965 // The very first time the backend initializes is effectively the first time |
952 // we can say we successfully "synced". last_synced_time_ will only be null | 966 // we can say we successfully "synced". last_synced_time_ will only be null |
953 // in this case, because the pref wasn't restored on StartUp. | 967 // in this case, because the pref wasn't restored on StartUp. |
954 if (last_synced_time_.is_null()) { | 968 if (last_synced_time_.is_null()) { |
955 UpdateLastSyncedTime(); | 969 UpdateLastSyncedTime(); |
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1210 if (HasUnrecoverableError()) { | 1224 if (HasUnrecoverableError()) { |
1211 // When unrecoverable error is detected we post a task to shutdown the | 1225 // When unrecoverable error is detected we post a task to shutdown the |
1212 // backend. The task might not have executed yet. | 1226 // backend. The task might not have executed yet. |
1213 return; | 1227 return; |
1214 } | 1228 } |
1215 | 1229 |
1216 DVLOG(1) << "Passphrase required with reason: " | 1230 DVLOG(1) << "Passphrase required with reason: " |
1217 << syncer::PassphraseRequiredReasonToString(reason); | 1231 << syncer::PassphraseRequiredReasonToString(reason); |
1218 passphrase_required_reason_ = reason; | 1232 passphrase_required_reason_ = reason; |
1219 | 1233 |
1220 const syncer::ModelTypeSet types = GetPreferredDataTypes(); | 1234 const syncer::ModelTypeSet types = GetPreferredDirectoryDataTypes(); |
1221 if (data_type_manager_) { | 1235 if (data_type_manager_) { |
1222 // Reconfigure without the encrypted types (excluded implicitly via the | 1236 // Reconfigure without the encrypted types (excluded implicitly via the |
1223 // failed datatypes handler). | 1237 // failed datatypes handler). |
1224 data_type_manager_->Configure(types, | 1238 data_type_manager_->Configure(types, |
1225 syncer::CONFIGURE_REASON_CRYPTO); | 1239 syncer::CONFIGURE_REASON_CRYPTO); |
1226 } | 1240 } |
1227 | 1241 |
1228 // Notify observers that the passphrase status may have changed. | 1242 // Notify observers that the passphrase status may have changed. |
1229 NotifyObservers(); | 1243 NotifyObservers(); |
1230 } | 1244 } |
1231 | 1245 |
1232 void ProfileSyncService::OnPassphraseAccepted() { | 1246 void ProfileSyncService::OnPassphraseAccepted() { |
1233 DVLOG(1) << "Received OnPassphraseAccepted."; | 1247 DVLOG(1) << "Received OnPassphraseAccepted."; |
1234 | 1248 |
1235 // If the pending keys were resolved via keystore, it's possible we never | 1249 // If the pending keys were resolved via keystore, it's possible we never |
1236 // consumed our cached passphrase. Clear it now. | 1250 // consumed our cached passphrase. Clear it now. |
1237 if (!cached_passphrase_.empty()) | 1251 if (!cached_passphrase_.empty()) |
1238 cached_passphrase_.clear(); | 1252 cached_passphrase_.clear(); |
1239 | 1253 |
1240 // Reset passphrase_required_reason_ since we know we no longer require the | 1254 // Reset passphrase_required_reason_ since we know we no longer require the |
1241 // passphrase. We do this here rather than down in ResolvePassphraseRequired() | 1255 // passphrase. We do this here rather than down in ResolvePassphraseRequired() |
1242 // because that can be called by OnPassphraseRequired() if no encrypted data | 1256 // because that can be called by OnPassphraseRequired() if no encrypted data |
1243 // types are enabled, and we don't want to clobber the true passphrase error. | 1257 // types are enabled, and we don't want to clobber the true passphrase error. |
1244 passphrase_required_reason_ = syncer::REASON_PASSPHRASE_NOT_REQUIRED; | 1258 passphrase_required_reason_ = syncer::REASON_PASSPHRASE_NOT_REQUIRED; |
1245 | 1259 |
1246 // Make sure the data types that depend on the passphrase are started at | 1260 // Make sure the data types that depend on the passphrase are started at |
1247 // this time. | 1261 // this time. |
1248 const syncer::ModelTypeSet types = GetPreferredDataTypes(); | 1262 const syncer::ModelTypeSet types = GetPreferredDirectoryDataTypes(); |
1249 if (data_type_manager_) { | 1263 if (data_type_manager_) { |
1250 // Re-enable any encrypted types if necessary. | 1264 // Re-enable any encrypted types if necessary. |
1251 data_type_manager_->Configure(types, | 1265 data_type_manager_->Configure(types, |
1252 syncer::CONFIGURE_REASON_CRYPTO); | 1266 syncer::CONFIGURE_REASON_CRYPTO); |
1253 } | 1267 } |
1254 | 1268 |
1255 NotifyObservers(); | 1269 NotifyObservers(); |
1256 } | 1270 } |
1257 | 1271 |
1258 void ProfileSyncService::OnEncryptedTypesChanged( | 1272 void ProfileSyncService::OnEncryptedTypesChanged( |
(...skipping 394 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1653 void ProfileSyncService::ChangePreferredDataTypes( | 1667 void ProfileSyncService::ChangePreferredDataTypes( |
1654 syncer::ModelTypeSet preferred_types) { | 1668 syncer::ModelTypeSet preferred_types) { |
1655 | 1669 |
1656 DVLOG(1) << "ChangePreferredDataTypes invoked"; | 1670 DVLOG(1) << "ChangePreferredDataTypes invoked"; |
1657 const syncer::ModelTypeSet registered_types = GetRegisteredDataTypes(); | 1671 const syncer::ModelTypeSet registered_types = GetRegisteredDataTypes(); |
1658 const syncer::ModelTypeSet registered_preferred_types = | 1672 const syncer::ModelTypeSet registered_preferred_types = |
1659 Intersection(registered_types, preferred_types); | 1673 Intersection(registered_types, preferred_types); |
1660 sync_prefs_.SetPreferredDataTypes(registered_types, | 1674 sync_prefs_.SetPreferredDataTypes(registered_types, |
1661 registered_preferred_types); | 1675 registered_preferred_types); |
1662 | 1676 |
1677 if (backend_.get() && backend_initialized_) | |
1678 backend_->SetPreferredNonBlockingTypes(GetPreferredNonBlockingDataTypes()); | |
1679 | |
1663 // Now reconfigure the DTM. | 1680 // Now reconfigure the DTM. |
1664 ReconfigureDatatypeManager(); | 1681 ReconfigureDatatypeManager(); |
1665 } | 1682 } |
1666 | 1683 |
1667 syncer::ModelTypeSet ProfileSyncService::GetActiveDataTypes() const { | 1684 syncer::ModelTypeSet ProfileSyncService::GetActiveDataTypes() const { |
1668 const syncer::ModelTypeSet preferred_types = GetPreferredDataTypes(); | 1685 const syncer::ModelTypeSet preferred_types = GetPreferredDirectoryDataTypes(); |
Nicolas Zea
2014/04/02 23:19:05
ActiveTypes only cares about whether they're runni
rlarocque
2014/04/03 01:03:46
I thought this was used only for construction of t
Nicolas Zea
2014/04/03 17:52:15
Anything that cares about what types are actually
| |
1669 const syncer::ModelTypeSet failed_types = | 1686 const syncer::ModelTypeSet failed_types = |
1670 failed_data_types_handler_.GetFailedTypes(); | 1687 failed_data_types_handler_.GetFailedTypes(); |
1671 return Difference(preferred_types, failed_types); | 1688 return Difference(preferred_types, failed_types); |
1672 } | 1689 } |
1673 | 1690 |
1674 syncer::ModelTypeSet ProfileSyncService::GetPreferredDataTypes() const { | 1691 syncer::ModelTypeSet ProfileSyncService::GetPreferredDataTypes() const { |
1675 const syncer::ModelTypeSet registered_types = GetRegisteredDataTypes(); | 1692 const syncer::ModelTypeSet registered_types = GetRegisteredDataTypes(); |
1676 const syncer::ModelTypeSet preferred_types = | 1693 const syncer::ModelTypeSet preferred_types = |
1677 sync_prefs_.GetPreferredDataTypes(registered_types); | 1694 sync_prefs_.GetPreferredDataTypes(registered_types); |
1678 return preferred_types; | 1695 return preferred_types; |
1679 } | 1696 } |
1680 | 1697 |
1698 syncer::ModelTypeSet | |
1699 ProfileSyncService::GetPreferredDirectoryDataTypes() const { | |
1700 const syncer::ModelTypeSet registered_directory_types = | |
1701 GetRegisteredDirectoryDataTypes(); | |
1702 const syncer::ModelTypeSet preferred_types = | |
1703 sync_prefs_.GetPreferredDataTypes(registered_directory_types); | |
1704 return preferred_types; | |
1705 } | |
1706 | |
1707 syncer::ModelTypeSet | |
1708 ProfileSyncService::GetPreferredNonBlockingDataTypes() const { | |
1709 return sync_prefs_.GetPreferredDataTypes(GetRegisteredNonBlockingDataTypes()); | |
1710 } | |
1711 | |
1681 syncer::ModelTypeSet ProfileSyncService::GetRegisteredDataTypes() const { | 1712 syncer::ModelTypeSet ProfileSyncService::GetRegisteredDataTypes() const { |
1713 return Union(GetRegisteredDirectoryDataTypes(), | |
1714 GetRegisteredNonBlockingDataTypes()); | |
1715 } | |
1716 | |
1717 syncer::ModelTypeSet | |
1718 ProfileSyncService::GetRegisteredDirectoryDataTypes() const { | |
1682 syncer::ModelTypeSet registered_types; | 1719 syncer::ModelTypeSet registered_types; |
1683 // The data_type_controllers_ are determined by command-line flags; that's | 1720 // The data_type_controllers_ are determined by command-line flags; that's |
1684 // effectively what controls the values returned here. | 1721 // effectively what controls the values returned here. |
1685 for (DataTypeController::TypeMap::const_iterator it = | 1722 for (DataTypeController::TypeMap::const_iterator it = |
1686 data_type_controllers_.begin(); | 1723 data_type_controllers_.begin(); |
1687 it != data_type_controllers_.end(); ++it) { | 1724 it != data_type_controllers_.end(); ++it) { |
1688 registered_types.Put(it->first); | 1725 registered_types.Put(it->first); |
1689 } | 1726 } |
1690 return registered_types; | 1727 return registered_types; |
1691 } | 1728 } |
1692 | 1729 |
1730 syncer::ModelTypeSet | |
1731 ProfileSyncService::GetRegisteredNonBlockingDataTypes() const { | |
1732 return off_thread_types_; | |
1733 } | |
1734 | |
1693 bool ProfileSyncService::IsUsingSecondaryPassphrase() const { | 1735 bool ProfileSyncService::IsUsingSecondaryPassphrase() const { |
1694 syncer::PassphraseType passphrase_type = GetPassphraseType(); | 1736 syncer::PassphraseType passphrase_type = GetPassphraseType(); |
1695 return passphrase_type == syncer::FROZEN_IMPLICIT_PASSPHRASE || | 1737 return passphrase_type == syncer::FROZEN_IMPLICIT_PASSPHRASE || |
1696 passphrase_type == syncer::CUSTOM_PASSPHRASE; | 1738 passphrase_type == syncer::CUSTOM_PASSPHRASE; |
1697 } | 1739 } |
1698 | 1740 |
1699 syncer::PassphraseType ProfileSyncService::GetPassphraseType() const { | 1741 syncer::PassphraseType ProfileSyncService::GetPassphraseType() const { |
1700 return backend_->GetPassphraseType(); | 1742 return backend_->GetPassphraseType(); |
1701 } | 1743 } |
1702 | 1744 |
1703 base::Time ProfileSyncService::GetExplicitPassphraseTime() const { | 1745 base::Time ProfileSyncService::GetExplicitPassphraseTime() const { |
1704 return backend_->GetExplicitPassphraseTime(); | 1746 return backend_->GetExplicitPassphraseTime(); |
1705 } | 1747 } |
1706 | 1748 |
1707 bool ProfileSyncService::IsCryptographerReady( | 1749 bool ProfileSyncService::IsCryptographerReady( |
1708 const syncer::BaseTransaction* trans) const { | 1750 const syncer::BaseTransaction* trans) const { |
1709 return backend_.get() && backend_->IsCryptographerReady(trans); | 1751 return backend_.get() && backend_->IsCryptographerReady(trans); |
1710 } | 1752 } |
1711 | 1753 |
1712 void ProfileSyncService::ConfigurePriorityDataTypes() { | 1754 void ProfileSyncService::ConfigurePriorityDataTypes() { |
1713 const syncer::ModelTypeSet priority_types = | 1755 const syncer::ModelTypeSet priority_types = |
1714 Intersection(GetPreferredDataTypes(), syncer::PriorityUserTypes()); | 1756 Intersection(GetPreferredDirectoryDataTypes(), |
1757 syncer::PriorityUserTypes()); | |
1715 if (!priority_types.Empty()) { | 1758 if (!priority_types.Empty()) { |
1716 const syncer::ConfigureReason reason = HasSyncSetupCompleted() ? | 1759 const syncer::ConfigureReason reason = HasSyncSetupCompleted() ? |
1717 syncer::CONFIGURE_REASON_RECONFIGURATION : | 1760 syncer::CONFIGURE_REASON_RECONFIGURATION : |
1718 syncer::CONFIGURE_REASON_NEW_CLIENT; | 1761 syncer::CONFIGURE_REASON_NEW_CLIENT; |
1719 data_type_manager_->Configure(priority_types, reason); | 1762 data_type_manager_->Configure(priority_types, reason); |
1720 } | 1763 } |
1721 } | 1764 } |
1722 | 1765 |
1723 void ProfileSyncService::ConfigureDataTypeManager() { | 1766 void ProfileSyncService::ConfigureDataTypeManager() { |
1724 // Don't configure datatypes if the setup UI is still on the screen - this | 1767 // Don't configure datatypes if the setup UI is still on the screen - this |
(...skipping 17 matching lines...) Expand all Loading... | |
1742 | 1785 |
1743 // We create the migrator at the same time. | 1786 // We create the migrator at the same time. |
1744 migrator_.reset( | 1787 migrator_.reset( |
1745 new browser_sync::BackendMigrator( | 1788 new browser_sync::BackendMigrator( |
1746 profile_->GetDebugName(), GetUserShare(), | 1789 profile_->GetDebugName(), GetUserShare(), |
1747 this, data_type_manager_.get(), | 1790 this, data_type_manager_.get(), |
1748 base::Bind(&ProfileSyncService::StartSyncingWithServer, | 1791 base::Bind(&ProfileSyncService::StartSyncingWithServer, |
1749 base::Unretained(this)))); | 1792 base::Unretained(this)))); |
1750 } | 1793 } |
1751 | 1794 |
1752 const syncer::ModelTypeSet types = GetPreferredDataTypes(); | 1795 const syncer::ModelTypeSet types = GetPreferredDirectoryDataTypes(); |
1753 syncer::ConfigureReason reason = syncer::CONFIGURE_REASON_UNKNOWN; | 1796 syncer::ConfigureReason reason = syncer::CONFIGURE_REASON_UNKNOWN; |
1754 if (!HasSyncSetupCompleted()) { | 1797 if (!HasSyncSetupCompleted()) { |
1755 reason = syncer::CONFIGURE_REASON_NEW_CLIENT; | 1798 reason = syncer::CONFIGURE_REASON_NEW_CLIENT; |
1756 } else if (restart) { | 1799 } else if (restart) { |
1757 // Datatype downloads on restart are generally due to newly supported | 1800 // Datatype downloads on restart are generally due to newly supported |
1758 // datatypes (although it's also possible we're picking up where a failed | 1801 // datatypes (although it's also possible we're picking up where a failed |
1759 // previous configuration left off). | 1802 // previous configuration left off). |
1760 // TODO(sync): consider detecting configuration recovery and setting | 1803 // TODO(sync): consider detecting configuration recovery and setting |
1761 // the reason here appropriately. | 1804 // the reason here appropriately. |
1762 reason = syncer::CONFIGURE_REASON_NEWLY_ENABLED_DATA_TYPE; | 1805 reason = syncer::CONFIGURE_REASON_NEWLY_ENABLED_DATA_TYPE; |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1859 type_status->SetString("value", error_text); | 1902 type_status->SetString("value", error_text); |
1860 } else if (throttled_types.Has(type) && passive_types.Has(type)) { | 1903 } else if (throttled_types.Has(type) && passive_types.Has(type)) { |
1861 type_status->SetString("status", "warning"); | 1904 type_status->SetString("status", "warning"); |
1862 type_status->SetString("value", "Passive, Throttled"); | 1905 type_status->SetString("value", "Passive, Throttled"); |
1863 } else if (passive_types.Has(type)) { | 1906 } else if (passive_types.Has(type)) { |
1864 type_status->SetString("status", "warning"); | 1907 type_status->SetString("status", "warning"); |
1865 type_status->SetString("value", "Passive"); | 1908 type_status->SetString("value", "Passive"); |
1866 } else if (throttled_types.Has(type)) { | 1909 } else if (throttled_types.Has(type)) { |
1867 type_status->SetString("status", "warning"); | 1910 type_status->SetString("status", "warning"); |
1868 type_status->SetString("value", "Throttled"); | 1911 type_status->SetString("value", "Throttled"); |
1912 } else if (GetRegisteredNonBlockingDataTypes().Has(type)) { | |
1913 type_status->SetString("status", "ok"); | |
1914 type_status->SetString("value", "Non-Blocking"); | |
1869 } else if (active_types.Has(type)) { | 1915 } else if (active_types.Has(type)) { |
1870 type_status->SetString("status", "ok"); | 1916 type_status->SetString("status", "ok"); |
1871 type_status->SetString("value", "Active: " + | 1917 type_status->SetString("value", "Active: " + |
1872 ModelSafeGroupToString(routing_info[type])); | 1918 ModelSafeGroupToString(routing_info[type])); |
1873 } else { | 1919 } else { |
1874 type_status->SetString("status", "warning"); | 1920 type_status->SetString("status", "warning"); |
1875 type_status->SetString("value", "Disabled by User"); | 1921 type_status->SetString("value", "Disabled by User"); |
1876 } | 1922 } |
1877 | 1923 |
1878 int live_count = detailed_status.num_entries_by_type[type] - | 1924 int live_count = detailed_status.num_entries_by_type[type] - |
(...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2221 status.last_get_token_error = last_get_token_error_; | 2267 status.last_get_token_error = last_get_token_error_; |
2222 if (request_access_token_retry_timer_.IsRunning()) | 2268 if (request_access_token_retry_timer_.IsRunning()) |
2223 status.next_token_request_time = next_token_request_time_; | 2269 status.next_token_request_time = next_token_request_time_; |
2224 return status; | 2270 return status; |
2225 } | 2271 } |
2226 | 2272 |
2227 void ProfileSyncService::OverrideNetworkResourcesForTest( | 2273 void ProfileSyncService::OverrideNetworkResourcesForTest( |
2228 scoped_ptr<syncer::NetworkResources> network_resources) { | 2274 scoped_ptr<syncer::NetworkResources> network_resources) { |
2229 network_resources_ = network_resources.Pass(); | 2275 network_resources_ = network_resources.Pass(); |
2230 } | 2276 } |
OLD | NEW |