// 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_FEATURE_ENGAGEMENT_INTERNAL_STATS_H_ #define COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_STATS_H_ #include #include #include "components/feature_engagement/internal/condition_validator.h" #include "components/feature_engagement/internal/configuration.h" #include "components/feature_engagement/internal/proto/event.pb.h" namespace feature_engagement { namespace stats { // Enum used in the metrics to record the result when in-product help UI is // going to be triggered. // Most of the fields maps to |ConditionValidator::Result|. // The failure reasons are not mutually exclusive. // Out-dated entries shouldn't be deleted but marked as obselete. // Keep this synced with the enum in //tools/metrics/histograms/enums.xml. enum class TriggerHelpUIResult { // The help UI is triggered. SUCCESS = 0, // The help UI is not triggered. FAILURE = 1, // Event model is not ready. FAILURE_EVENT_MODEL_NOT_READY = 2, // Some other help UI is currently showing. FAILURE_CURRENTLY_SHOWING = 3, // The feature is disabled. FAILURE_FEATURE_DISABLED = 4, // Configuration can not be parsed. FAILURE_CONFIG_INVALID = 5, // Used event precondition is not satisfied. FAILURE_USED_PRECONDITION_UNMET = 6, // Trigger event precondition is not satisfied. FAILURE_TRIGGER_PRECONDITION_UNMET = 7, // Other event precondition is not satisfied. FAILURE_OTHER_PRECONDITION_UNMET = 8, // Session rate does not meet the requirement. FAILURE_SESSION_RATE = 9, // Availability model is not ready. FAILURE_AVAILABILITY_MODEL_NOT_READY = 10, // Availability precondition is not satisfied. FAILURE_AVAILABILITY_PRECONDITION_UNMET = 11, // Same as |SUCCESS|, but feature configuration was set to tracking only. SUCCESS_TRACKING_ONLY = 12, // Display of help UI is locked. FAILURE_DISPLAY_LOCK = 13, // Last entry for the enum. COUNT = 14, }; // Used in the metrics to track the configuration parsing event. // The failure reasons are not mutually exclusive. // Out-dated entries shouldn't be deleted but marked as obsolete. // Keep this synced with the enum in //tools/metrics/histograms/enums.xml. enum class ConfigParsingEvent { // The configuration is parsed correctly. SUCCESS = 0, // The configuration is invalid after parsing. FAILURE = 1, // Fails to parse the feature config because no field trial is found. FAILURE_NO_FIELD_TRIAL = 2, // Fails to parse the used event. FAILURE_USED_EVENT_PARSE = 3, // Used event is missing. FAILURE_USED_EVENT_MISSING = 4, // Fails to parse the trigger event. FAILURE_TRIGGER_EVENT_PARSE = 5, // Trigger event is missing. FAILURE_TRIGGER_EVENT_MISSING = 6, // Fails to parse other events. FAILURE_OTHER_EVENT_PARSE = 7, // Fails to parse the session rate comparator. FAILURE_SESSION_RATE_PARSE = 8, // Fails to parse the availability comparator. FAILURE_AVAILABILITY_PARSE = 9, // UnKnown key in configuration parameters. FAILURE_UNKNOWN_KEY = 10, // Fails to parse the session rate impact. FAILURE_SESSION_RATE_IMPACT_PARSE = 11, // Fails to parse the session rate impact. FAILURE_SESSION_RATE_IMPACT_UNKNOWN_FEATURE = 12, // Fails to parse the tracking only flag. FAILURE_TRACKING_ONLY_PARSE = 13, // Last entry for the enum. COUNT = 14, }; // Used in metrics to track database states. Each type will match to a suffix // in the histograms to identify the database. enum class StoreType { // Events store. EVENTS_STORE = 0, // Availability store. AVAILABILITY_STORE = 1, }; // Helper function that converts a store type to histogram suffix string. std::string ToDbHistogramSuffix(StoreType type); // Records the feature engagement events. Used event will be tracked // separately. void RecordNotifyEvent(const std::string& event, const Configuration* config, bool is_model_ready); // Records user action and the result histogram when in-product help will be // shown to the user. void RecordShouldTriggerHelpUI(const base::Feature& feature, const FeatureConfig& feature_config, const ConditionValidator::Result& result); // Records when the user dismisses the in-product help UI. void RecordUserDismiss(); // Records the result of database updates. void RecordDbUpdate(bool success, StoreType type); // Record database init. void RecordDbInitEvent(bool success, StoreType type); // Records events database load event. void RecordEventDbLoadEvent(bool success, const std::vector& events); // Records availability database load event. void RecordAvailabilityDbLoadEvent(bool success); // Records configuration parsing event. void RecordConfigParsingEvent(ConfigParsingEvent event); } // namespace stats } // namespace feature_engagement #endif // COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_STATS_H_