1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
// Copyright 2015 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/sync/service/sync_service.h"
#include <utility>
#include "components/signin/public/identity_manager/account_info.h"
#include "components/sync/engine/cycle/sync_cycle_snapshot.h"
#include "components/sync/service/sync_user_settings.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 {
// Stats on the last Sync cycle are only available in internal "for debugging"
// information. Better to access that here than making clients do it.
return GetLastCycleSnapshotForDebugging().is_initialized();
}
bool SyncService::IsSyncFeatureEnabled() const {
// Note: IsInitialSyncFeatureSetupComplete() shouldn't usually be true if we
// don't have a primary account, but it could happen if the account changes
// from primary to secondary.
return CanSyncFeatureStart() &&
GetUserSettings()->IsInitialSyncFeatureSetupComplete();
}
bool SyncService::CanSyncFeatureStart() const {
return GetDisableReasons().empty() &&
#if BUILDFLAG(IS_CHROMEOS)
!GetUserSettings()->IsSyncFeatureDisabledViaDashboard() &&
#endif // BUILDFLAG(IS_CHROMEOS)
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();
}
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();
}
bool SyncService::HasUnrecoverableError() const {
return HasDisableReason(DISABLE_REASON_UNRECOVERABLE_ERROR);
}
} // namespace syncer
|