blob: 08a5beeaf6c7cdc044cf8adf834c32b99a547ecc [file] [log] [blame]
// Copyright 2017 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_VARIATIONS_METRICS_H_
#define COMPONENTS_VARIATIONS_METRICS_H_
#include "base/component_export.h"
#include "build/build_config.h"
namespace variations {
// The result of importing a seed during Android or iOS first run.
// Note: UMA histogram enum - don't re-order or remove entries.
enum class FirstRunSeedImportResult {
SUCCESS,
FAIL_NO_CALLBACK,
FAIL_NO_FIRST_RUN_SEED,
FAIL_STORE_FAILED,
FAIL_INVALID_RESPONSE_DATE,
ENUM_SIZE
};
// The result of attempting to load a variations seed during startup.
//
// These values are persisted to logs. Entries should not be renumbered and
// numeric values should never be reused.
//
// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.components.variations
enum class LoadSeedResult {
kSuccess = 0,
kEmpty = 1,
// kCorrupt = 2, // Deprecated.
kInvalidSignature = 3,
kCorruptBase64 = 4,
kCorruptProtobuf = 5,
kCorruptGzip = 6,
kLoadTimedOut = 7,
kLoadInterrupted = 8,
kLoadOtherFailure = 9,
kMaxValue = kLoadOtherFailure,
};
// The result of attempting to store a variations seed received from the server.
//
// These values are persisted to logs. Entries should not be renumbered and
// numeric values should never be reused.
enum class StoreSeedResult {
kSuccess = 0,
// kFailedEmpty = 1, // Deprecated.
kFailedParse = 2,
kFailedSignature = 3,
kFailedGzip = 4,
// kDeltaCount = 5, // Deprecated.
kFailedDeltaReadSeed = 6,
kFailedDeltaApply = 7,
kFailedDeltaStore = 8,
kFailedUngzip = 9,
kFailedEmptyGzipContents = 10,
kFailedUnsupportedSeedFormat = 11,
// The following are not so much a result of the seed store, but rather
// counting the types of seeds the SeedStore() function saw. Kept in the same
// histogram for efficiency and convenience of comparing against the other
// values.
kGzipDeltaCount = 12,
kNonGzipDeltaCount = 13,
kGzipFullCount = 14,
kNonGzipFullCount = 15,
kMaxValue = kNonGzipFullCount,
};
// The result of updating the date associated with an existing stored variations
// seed.
// Note: UMA histogram enum - don't re-order or remove entries.
enum class UpdateSeedDateResult {
NO_OLD_DATE,
NEW_DATE_IS_OLDER,
SAME_DAY,
NEW_DAY,
ENUM_SIZE
};
// The result of verifying a variation seed's signature.
// Note: UMA histogram enum - don't re-order or remove entries.
enum class VerifySignatureResult {
MISSING_SIGNATURE,
DECODE_FAILED,
INVALID_SIGNATURE,
INVALID_SEED,
VALID_SIGNATURE,
ENUM_SIZE
};
// Describes instance manipulations applied to data.
struct InstanceManipulations {
const bool gzip_compressed;
const bool delta_compressed;
};
#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS)
// Records the result of importing a seed during Android first run.
COMPONENT_EXPORT(VARIATIONS)
void RecordFirstRunSeedImportResult(FirstRunSeedImportResult result);
#endif // BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS)
// Records the result of attempting to load the latest variations seed on
// startup.
COMPONENT_EXPORT(VARIATIONS) void RecordLoadSeedResult(LoadSeedResult state);
// Records the result of attempting to load the safe variations seed on startup.
COMPONENT_EXPORT(VARIATIONS)
void RecordLoadSafeSeedResult(LoadSeedResult state);
// Records the result of attempting to store a variations seed received from the
// server.
COMPONENT_EXPORT(VARIATIONS) void RecordStoreSeedResult(StoreSeedResult result);
// Records the result of attempting to store a seed as the safe seed.
COMPONENT_EXPORT(VARIATIONS)
void RecordStoreSafeSeedResult(StoreSeedResult result);
// Reports to UMA that the seed format specified by the server is unsupported.
COMPONENT_EXPORT(VARIATIONS) void ReportUnsupportedSeedFormatError();
// Records the instance manipulations a seed was received with.
COMPONENT_EXPORT(VARIATIONS)
void RecordSeedInstanceManipulations(const InstanceManipulations& im);
} // namespace variations
#endif // COMPONENTS_VARIATIONS_METRICS_H_