// Copyright 2017 The Chromium Authors. All rights reserved. // 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 { #if BUILDFLAG(IS_ANDROID) // The result of importing a seed during Android 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 }; #endif // BUILDFLAG(IS_ANDROID) // 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) // Records the result of importing a seed during Android first run. COMPONENT_EXPORT(VARIATIONS) void RecordFirstRunSeedImportResult(FirstRunSeedImportResult result); #endif // BUILDFLAG(IS_ANDROID) // 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_