blob: 96aa9f104acea32cf8a6f7139b71f91e9880029e [file] [log] [blame]
// 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.
#ifndef COMPONENTS_SYNC_SERVICE_SYNC_SERVICE_UTILS_H_
#define COMPONENTS_SYNC_SERVICE_SYNC_SERVICE_UTILS_H_
#include "components/sync/base/data_type.h"
namespace syncer {
class SyncService;
// Indicates whether uploading of data to Google is enabled, i.e. the user has
// given consent to upload this data. Since this enum is used for logging
// histograms, entries must not be removed or reordered.
enum class UploadState {
// Syncing is enabled in principle, but the sync service is not actually
// active yet. This is because initialization hasn't completed and hence the
// auth error state isn't known yet.
INITIALIZING,
// We are not syncing to Google, and the caller should assume that we do not
// have consent to do so. This can have a number of reasons, e.g.: sync as a
// whole is disabled, or the given data type is disabled, or we're in
// "local sync" mode, or this data type is encrypted with a custom passphrase
// (in which case we're technically still uploading, but Google can't inspect
// the data), or we're in a persistent auth error state. As one special case
// of an auth error, sync may be "paused" because the user signed out of the
// content area.
NOT_ACTIVE,
// We're actively syncing data to Google servers, in a form that is readable
// by Google.
ACTIVE,
// Used when logging histograms. Must have this exact name.
kMaxValue = ACTIVE
};
// Represents the UI elements which contain trusted vault error button. These
// values are persisted to logs. Entries should not be renumbered and numeric
// values should never be reused. Keep in sync w/ TrustedVaultUserActionTrigger
// in tools/metrics/histograms/metadata/sync/enums.xml.
// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.components.sync
// LINT.IfChange(TrustedVaultUserActionTrigger)
enum class TrustedVaultUserActionTriggerForUMA {
// Settings pages, used on all platforms except ChromeOS.
kSettings = 0,
// Used on desktop platform only.
kProfileMenu = 1,
// Used on Android and ChromeOS, represents OS-level notification.
kNotification = 2,
// Used on iOS only. Represents Infobar on the New Tab Page.
// TODO(crbug.com/40131571): record this bucket bucket on Android once
// corresponding UI added.
kNewTabPageInfobar = 3,
// This dialog is shown on Android and iOS during sign-in or sign-up flows
// when there is an error preventing passwords from being fetched from
// an account (e.g. need to retrieve trusted vault key for passwords).
kPasswordManagerErrorMessage = 4,
// Used on iOS only, from the account menu.
kAccountMenu = 5,
// From the Password Manager Settings (currently used only on iOS).
kPasswordManagerSettings = 6,
kMaxValue = kPasswordManagerSettings
};
// LINT.ThenChange(/tools/metrics/histograms/metadata/sync/enums.xml:TrustedVaultUserActionTrigger)
// Returns whether `type` is being uploaded to Google. This is useful for
// features that depend on user consent for uploading data (e.g. history) to
// Google.
UploadState GetUploadToGoogleState(const SyncService* sync_service,
DataType type);
void RecordKeyRetrievalTrigger(TrustedVaultUserActionTriggerForUMA trigger);
void RecordRecoverabilityDegradedFixTrigger(
TrustedVaultUserActionTriggerForUMA trigger);
// Whether the user should be offered to opt in to trusted vault encryption.
bool ShouldOfferTrustedVaultOptIn(const SyncService* service);
} // namespace syncer
#endif // COMPONENTS_SYNC_SERVICE_SYNC_SERVICE_UTILS_H_