#include "components/sync/driver/sync_service.h"
#include <utility>
#include "components/signin/public/identity_manager/account_info.h"
#include "components/sync/driver/sync_user_settings.h"
#include "components/sync/engine/cycle/sync_cycle_snapshot.h"
namespace syncer {
SyncSetupInProgressHandle::SyncSetupInProgressHandle(
base::OnceClosure on_destroy)
: on_destroy_(std::move(on_destroy)) {}
SyncSetupInProgressHandle::~SyncSetupInProgressHandle() {
std::move(on_destroy_).Run();
}
bool SyncService::HasCompletedSyncCycle() const {
return GetLastCycleSnapshotForDebugging().is_initialized();
}
bool SyncService::IsSyncFeatureEnabled() const {
return CanSyncFeatureStart() && GetUserSettings()->IsFirstSetupComplete();
}
bool SyncService::CanSyncFeatureStart() const {
return GetDisableReasons().Empty() && HasSyncConsent();
}
bool SyncService::IsEngineInitialized() const {
switch (GetTransportState()) {
case TransportState::DISABLED:
case TransportState::PAUSED:
case TransportState::START_DEFERRED:
case TransportState::INITIALIZING:
return false;
case TransportState::PENDING_DESIRED_CONFIGURATION:
case TransportState::CONFIGURING:
case TransportState::ACTIVE:
return true;
}
NOTREACHED();
return false;
}
bool SyncService::IsSyncFeatureActive() const {
if (!IsSyncFeatureEnabled()) {
return false;
}
switch (GetTransportState()) {
case TransportState::DISABLED:
case TransportState::PAUSED:
case TransportState::START_DEFERRED:
case TransportState::INITIALIZING:
case TransportState::PENDING_DESIRED_CONFIGURATION:
return false;
case TransportState::CONFIGURING:
case TransportState::ACTIVE:
return true;
}
NOTREACHED();
return false;
}
bool SyncService::HasUnrecoverableError() const {
return HasDisableReason(DISABLE_REASON_UNRECOVERABLE_ERROR);
}
}