#include "components/sync/service/glue/sync_engine_impl.h"
#include <utility>
#include "base/base64.h"
#include "base/command_line.h"
#include "base/feature_list.h"
#include "base/functional/bind.h"
#include "base/functional/callback_forward.h"
#include "base/functional/callback_helpers.h"
#include "base/location.h"
#include "base/logging.h"
#include "base/metrics/histogram_functions.h"
#include "base/rand_util.h"
#include "base/task/bind_post_task.h"
#include "base/task/sequenced_task_runner.h"
#include "base/time/time.h"
#include "base/trace_event/trace_event.h"
#include "components/sync/base/features.h"
#include "components/sync/engine/data_type_activation_response.h"
#include "components/sync/engine/events/protocol_event.h"
#include "components/sync/engine/nigori/nigori.h"
#include "components/sync/engine/polling_constants.h"
#include "components/sync/engine/sync_engine_host.h"
#include "components/sync/engine/sync_string_conversions.h"
#include "components/sync/invalidations/sync_invalidations_service.h"
#include "components/sync/service/active_devices_provider.h"
#include "components/sync/service/glue/sync_engine_backend.h"
#include "components/sync/service/glue/sync_transport_data_prefs.h"
namespace syncer {
namespace {
SyncEngineBackend::RestoredLocalTransportData
RestoreLocalTransportDataFromPrefs(const SyncTransportDataPrefs& prefs) { … }
enum class SyncTransportDataStartupState { … };
std::string GenerateCacheGUID() { … }
SyncTransportDataStartupState ValidateSyncTransportData(
const SyncTransportDataPrefs& prefs,
const CoreAccountInfo& core_account_info) { … }
}
SyncEngineImpl::SyncEngineImpl(
const std::string& name,
SyncInvalidationsService* sync_invalidations_service,
std::unique_ptr<ActiveDevicesProvider> active_devices_provider,
std::unique_ptr<SyncTransportDataPrefs> prefs,
const base::FilePath& sync_data_folder,
scoped_refptr<base::SequencedTaskRunner> sync_task_runner)
: … { … }
SyncEngineImpl::~SyncEngineImpl() { … }
void SyncEngineImpl::Initialize(InitParams params) { … }
bool SyncEngineImpl::IsInitialized() const { … }
void SyncEngineImpl::TriggerRefresh(const DataTypeSet& types) { … }
void SyncEngineImpl::UpdateCredentials(const SyncCredentials& credentials) { … }
void SyncEngineImpl::InvalidateCredentials() { … }
std::string SyncEngineImpl::GetCacheGuid() const { … }
std::string SyncEngineImpl::GetBirthday() const { … }
base::Time SyncEngineImpl::GetLastSyncedTimeForDebugging() const { … }
void SyncEngineImpl::StartConfiguration() { … }
void SyncEngineImpl::StartSyncingWithServer() { … }
void SyncEngineImpl::StartHandlingInvalidations() { … }
void SyncEngineImpl::SetEncryptionPassphrase(
const std::string& passphrase,
const KeyDerivationParams& key_derivation_params) { … }
void SyncEngineImpl::SetExplicitPassphraseDecryptionKey(
std::unique_ptr<Nigori> key) { … }
void SyncEngineImpl::AddTrustedVaultDecryptionKeys(
const std::vector<std::vector<uint8_t>>& keys,
base::OnceClosure done_cb) { … }
void SyncEngineImpl::StopSyncingForShutdown() { … }
void SyncEngineImpl::Shutdown(ShutdownReason reason) { … }
void SyncEngineImpl::ConfigureDataTypes(ConfigureParams params) { … }
void SyncEngineImpl::ConnectDataType(
DataType type,
std::unique_ptr<DataTypeActivationResponse> activation_response) { … }
void SyncEngineImpl::DisconnectDataType(DataType type) { … }
const SyncStatus& SyncEngineImpl::GetDetailedStatus() const { … }
void SyncEngineImpl::HasUnsyncedItemsForTest(
base::OnceCallback<void(bool)> cb) const { … }
void SyncEngineImpl::GetTypesWithUnsyncedData(
base::OnceCallback<void(DataTypeSet)> cb) const { … }
void SyncEngineImpl::GetThrottledDataTypesForTest(
base::OnceCallback<void(DataTypeSet)> cb) const { … }
void SyncEngineImpl::RequestBufferedProtocolEventsAndEnableForwarding() { … }
void SyncEngineImpl::DisableProtocolEventForwarding() { … }
void SyncEngineImpl::FinishConfigureDataTypesOnFrontendLoop(
const DataTypeSet enabled_types,
base::OnceClosure ready_task) { … }
void SyncEngineImpl::HandleInitializationSuccessOnFrontendLoop(
std::unique_ptr<DataTypeConnector> data_type_connector,
const std::string& birthday,
const std::string& bag_of_chips) { … }
void SyncEngineImpl::HandleInitializationFailureOnFrontendLoop() { … }
void SyncEngineImpl::HandleSyncCycleCompletedOnFrontendLoop(
const SyncCycleSnapshot& snapshot) { … }
void SyncEngineImpl::HandleActionableProtocolErrorEventOnFrontendLoop(
const SyncProtocolError& sync_error) { … }
void SyncEngineImpl::HandleMigrationRequestedOnFrontendLoop(DataTypeSet types) { … }
void SyncEngineImpl::OnInvalidatorStateChange(bool enabled) { … }
void SyncEngineImpl::HandleConnectionStatusChangeOnFrontendLoop(
ConnectionStatus status) { … }
void SyncEngineImpl::HandleProtocolEventOnFrontendLoop(
std::unique_ptr<ProtocolEvent> event) { … }
void SyncEngineImpl::HandleSyncStatusChanged(const SyncStatus& status) { … }
void SyncEngineImpl::OnCookieJarChanged(bool account_mismatch,
base::OnceClosure callback) { … }
bool SyncEngineImpl::IsNextPollTimeInThePast() const { … }
void SyncEngineImpl::GetNigoriNodeForDebugging(AllNodesCallback callback) { … }
void SyncEngineImpl::RecordNigoriMemoryUsageAndCountsHistograms() { … }
void SyncEngineImpl::OnInvalidationReceived(const std::string& payload) { … }
void SyncEngineImpl::OnFCMRegistrationTokenChanged() { … }
std::string SyncEngineImpl::GenerateCacheGUIDForTest() { … }
void SyncEngineImpl::OnCookieJarChangedDoneOnFrontendLoop(
base::OnceClosure callback) { … }
void SyncEngineImpl::OnActiveDevicesChanged() { … }
void SyncEngineImpl::UpdateLastSyncedTime() { … }
void SyncEngineImpl::UpdateStandaloneInvalidationsState() { … }
}