#include "components/sync/engine/sync_manager_impl.h"
#include <stddef.h>
#include <utility>
#include "base/compiler_specific.h"
#include "base/feature_list.h"
#include "base/functional/bind.h"
#include "base/functional/callback.h"
#include "base/metrics/histogram_macros.h"
#include "base/observer_list.h"
#include "base/task/sequenced_task_runner.h"
#include "base/trace_event/trace_event.h"
#include "base/values.h"
#include "components/sync/base/data_type.h"
#include "components/sync/base/sync_invalidation.h"
#include "components/sync/engine/cancelation_signal.h"
#include "components/sync/engine/configure_reason.h"
#include "components/sync/engine/data_type_connector_proxy.h"
#include "components/sync/engine/data_type_worker.h"
#include "components/sync/engine/engine_components_factory.h"
#include "components/sync/engine/loopback_server/loopback_connection_manager.h"
#include "components/sync/engine/net/http_post_provider_factory.h"
#include "components/sync/engine/net/sync_server_connection_manager.h"
#include "components/sync/engine/net/url_translator.h"
#include "components/sync/engine/nigori/cryptographer.h"
#include "components/sync/engine/nigori/key_derivation_params.h"
#include "components/sync/engine/nigori/keystore_keys_handler.h"
#include "components/sync/engine/polling_constants.h"
#include "components/sync/engine/sync_scheduler.h"
#include "components/sync/engine/update_handler.h"
#include "components/sync/protocol/sync_enums.pb.h"
namespace syncer {
namespace {
sync_pb::SyncEnums::GetUpdatesOrigin GetOriginFromReason(
ConfigureReason reason) { … }
const char kSyncServerSyncPath[] = …;
std::string StripTrailingSlash(const std::string& s) { … }
GURL MakeConnectionURL(const GURL& sync_server, const std::string& client_id) { … }
}
SyncManagerImpl::SyncManagerImpl(
const std::string& name,
network::NetworkConnectionTracker* network_connection_tracker)
: … { … }
SyncManagerImpl::~SyncManagerImpl() { … }
DataTypeSet SyncManagerImpl::InitialSyncEndedTypes() { … }
DataTypeSet SyncManagerImpl::GetConnectedTypes() { … }
void SyncManagerImpl::ConfigureSyncer(ConfigureReason reason,
DataTypeSet to_download,
SyncFeatureState sync_feature_state,
base::OnceClosure ready_task) { … }
void SyncManagerImpl::Init(InitArgs* args) { … }
void SyncManagerImpl::OnPassphraseRequired(
const KeyDerivationParams& key_derivation_params,
const sync_pb::EncryptedData& pending_keys) { … }
void SyncManagerImpl::OnPassphraseAccepted() { … }
void SyncManagerImpl::OnTrustedVaultKeyRequired() { … }
void SyncManagerImpl::OnTrustedVaultKeyAccepted() { … }
void SyncManagerImpl::OnEncryptedTypesChanged(DataTypeSet encrypted_types,
bool encrypt_everything) { … }
void SyncManagerImpl::OnCryptographerStateChanged(Cryptographer* cryptographer,
bool has_pending_keys) { … }
void SyncManagerImpl::OnPassphraseTypeChanged(
PassphraseType type,
base::Time explicit_passphrase_time) { … }
void SyncManagerImpl::StartSyncingNormally(base::Time last_poll_time) { … }
void SyncManagerImpl::StartConfiguration() { … }
void SyncManagerImpl::UpdateCredentials(const SyncCredentials& credentials) { … }
void SyncManagerImpl::InvalidateCredentials() { … }
void SyncManagerImpl::AddObserver(SyncManager::Observer* observer) { … }
void SyncManagerImpl::RemoveObserver(SyncManager::Observer* observer) { … }
void SyncManagerImpl::ShutdownOnSyncThread() { … }
void SyncManagerImpl::OnConnectionChanged(network::mojom::ConnectionType type) { … }
void SyncManagerImpl::OnServerConnectionEvent(
const ServerConnectionEvent& event) { … }
void SyncManagerImpl::NudgeForInitialDownload(DataType type) { … }
void SyncManagerImpl::NudgeForCommit(DataType type) { … }
void SyncManagerImpl::SetHasPendingInvalidations(
DataType type,
bool has_pending_invalidations) { … }
void SyncManagerImpl::NotifySyncStatusChanged(const SyncStatus& status) { … }
void SyncManagerImpl::OnSyncCycleEvent(const SyncCycleEvent& event) { … }
void SyncManagerImpl::OnActionableProtocolError(
const SyncProtocolError& error) { … }
void SyncManagerImpl::OnRetryTimeChanged(base::Time) { … }
void SyncManagerImpl::OnThrottledTypesChanged(DataTypeSet) { … }
void SyncManagerImpl::OnBackedOffTypesChanged(DataTypeSet) { … }
void SyncManagerImpl::OnMigrationRequested(DataTypeSet types) { … }
void SyncManagerImpl::OnProtocolEvent(const ProtocolEvent& event) { … }
void SyncManagerImpl::SetInvalidatorEnabled(bool invalidator_enabled) { … }
void SyncManagerImpl::OnIncomingInvalidation(
DataType type,
std::unique_ptr<SyncInvalidation> invalidation) { … }
void SyncManagerImpl::RefreshTypes(DataTypeSet types) { … }
DataTypeConnector* SyncManagerImpl::GetDataTypeConnector() { … }
std::unique_ptr<DataTypeConnector>
SyncManagerImpl::GetDataTypeConnectorProxy() { … }
std::string SyncManagerImpl::cache_guid() { … }
std::string SyncManagerImpl::birthday() { … }
std::string SyncManagerImpl::bag_of_chips() { … }
DataTypeSet SyncManagerImpl::GetTypesWithUnsyncedData() { … }
bool SyncManagerImpl::HasUnsyncedItemsForTest() { … }
SyncEncryptionHandler* SyncManagerImpl::GetEncryptionHandler() { … }
std::vector<std::unique_ptr<ProtocolEvent>>
SyncManagerImpl::GetBufferedProtocolEvents() { … }
void SyncManagerImpl::OnCookieJarChanged(bool account_mismatch) { … }
void SyncManagerImpl::UpdateActiveDevicesInvalidationInfo(
ActiveDevicesInvalidationInfo active_devices_invalidation_info) { … }
}