Home | History | Annotate | Download | only in cloud
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef COMPONENTS_POLICY_CORE_COMMON_CLOUD_ENTERPRISE_METRICS_H_
      6 #define COMPONENTS_POLICY_CORE_COMMON_CLOUD_ENTERPRISE_METRICS_H_
      7 
      8 #include "components/policy/policy_export.h"
      9 
     10 namespace policy {
     11 
     12 // Metrics collected for enterprise events.
     13 
     14 // Events related to fetching, saving and loading DM server tokens.
     15 // These metrics are collected both for device and user tokens.
     16 // This enum is used to define the buckets for an enumerated UMA histogram.
     17 // Hence,
     18 //   (a) existing enumerated constants should never be deleted or reordered, and
     19 //   (b) new constants should only be appended at the end of the enumeration.
     20 enum MetricToken {
     21   // A cached token was successfully loaded from disk.
     22   kMetricTokenLoadSucceeded = 0,
     23   // Reading a cached token from disk failed.
     24   kMetricTokenLoadFailed = 1,
     25 
     26   // A token fetch request was sent to the DM server.
     27   kMetricTokenFetchRequested = 2,
     28   // The request was invalid, or the HTTP request failed.
     29   kMetricTokenFetchRequestFailed = 3,
     30   // Error HTTP status received, or the DM server failed in another way.
     31   kMetricTokenFetchServerFailed = 4,
     32   // A response to the fetch request was received.
     33   kMetricTokenFetchResponseReceived = 5,
     34   // The response received was invalid. This happens when some expected data
     35   // was not present in the response.
     36   kMetricTokenFetchBadResponse = 6,
     37   // DM server reported that management is not supported.
     38   kMetricTokenFetchManagementNotSupported = 7,
     39   // DM server reported that the given device ID was not found.
     40   kMetricTokenFetchDeviceNotFound = 8,
     41   // DM token successfully retrieved.
     42   kMetricTokenFetchOK = 9,
     43 
     44   // Successfully cached a token to disk.
     45   kMetricTokenStoreSucceeded = 10,
     46   // Caching a token to disk failed.
     47   kMetricTokenStoreFailed = 11,
     48 
     49   // DM server reported that the device-id generated is not unique.
     50   kMetricTokenFetchDeviceIdConflict = 12,
     51   // DM server reported that the serial number we try to register is invalid.
     52   kMetricTokenFetchInvalidSerialNumber = 13,
     53   // DM server reported that the licenses for the domain have expired or been
     54   // exhausted.
     55   kMetricMissingLicenses = 14,
     56 
     57   kMetricTokenSize  // Must be the last.
     58 };
     59 
     60 // Events related to fetching, saving and loading user and device policies.
     61 // This enum is used to define the buckets for an enumerated UMA histogram.
     62 // Hence,
     63 //   (a) existing enumerated constants should never be deleted or reordered, and
     64 //   (b) new constants should only be appended at the end of the enumeration.
     65 enum MetricPolicy {
     66   // A cached policy was successfully loaded from disk.
     67   kMetricPolicyLoadSucceeded = 0,
     68   // Reading a cached policy from disk failed.
     69   kMetricPolicyLoadFailed = 1,
     70 
     71   // A policy fetch request was sent to the DM server.
     72   kMetricPolicyFetchRequested = 2,
     73   // The request was invalid, or the HTTP request failed.
     74   kMetricPolicyFetchRequestFailed = 3,
     75   // Error HTTP status received, or the DM server failed in another way.
     76   kMetricPolicyFetchServerFailed = 4,
     77   // Policy not found for the given user or device.
     78   kMetricPolicyFetchNotFound = 5,
     79   // DM server didn't accept the token used in the request.
     80   kMetricPolicyFetchInvalidToken = 6,
     81   // A response to the policy fetch request was received.
     82   kMetricPolicyFetchResponseReceived = 7,
     83   // The policy response message didn't contain a policy, or other data was
     84   // missing.
     85   kMetricPolicyFetchBadResponse = 8,
     86   // Failed to decode the policy.
     87   kMetricPolicyFetchInvalidPolicy = 9,
     88   // The device policy was rejected because its signature was invalid.
     89   kMetricPolicyFetchBadSignature = 10,
     90   // Rejected policy because its timestamp is in the future.
     91   kMetricPolicyFetchTimestampInFuture = 11,
     92   // Device policy rejected because the device is not managed.
     93   kMetricPolicyFetchNonEnterpriseDevice = 12,
     94   // The policy was provided for a username that is different from the device
     95   // owner, and the policy was rejected.
     96   kMetricPolicyFetchUserMismatch = 13,
     97   // The policy was rejected for another reason. Currently this can happen
     98   // only for device policies, when the SignedSettings fail to store or retrieve
     99   // a stored policy.
    100   kMetricPolicyFetchOtherFailed = 14,
    101   // The fetched policy was accepted.
    102   kMetricPolicyFetchOK = 15,
    103   // The policy just fetched didn't have any changes compared to the cached
    104   // policy.
    105   kMetricPolicyFetchNotModified = 16,
    106 
    107   // Successfully cached a policy to disk.
    108   kMetricPolicyStoreSucceeded = 17,
    109   // Caching a policy to disk failed.
    110   kMetricPolicyStoreFailed = 18,
    111 
    112   kMetricPolicySize  // Must be the last.
    113 };
    114 
    115 // Events related to device enrollment.
    116 // This enum is used to define the buckets for an enumerated UMA histogram.
    117 // Hence,
    118 //   (a) existing enumerated constants should never be deleted or reordered, and
    119 //   (b) new constants should only be appended at the end of the enumeration.
    120 enum MetricEnrollment {
    121   // User pressed 'Cancel' during the enrollment process.
    122   kMetricEnrollmentCancelled = 0,
    123   // User started enrollment process by submitting valid GAIA credentials.
    124   kMetricEnrollmentStarted = 1,
    125   // OAuth token fetch failed: network error.
    126   kMetricEnrollmentNetworkFailed = 2,
    127   // OAuth token fetch failed: login error.
    128   kMetricEnrollmentLoginFailed = 3,
    129   // Registration / policy fetch failed: DM server reports management not
    130   // supported.
    131   kMetricEnrollmentNotSupported = 4,
    132   /* kMetricEnrollmentPolicyFailed = 5 REMOVED */
    133   /* kMetricEnrollmentOtherFailed = 6 REMOVED */
    134   // Enrollment was successful.
    135   kMetricEnrollmentOK = 7,
    136   // Registration / policy fetch failed: DM server reports that the serial
    137   // number we try to register is not assigned to the domain used.
    138   kMetricEnrollmentRegisterPolicyInvalidSerial = 8,
    139   // Auto-enrollment started automatically after the user signed in.
    140   kMetricEnrollmentAutoStarted = 9,
    141   // Auto-enrollment failed.
    142   kMetricEnrollmentAutoFailed = 10,
    143   // Auto-enrollment was retried after having failed before.
    144   kMetricEnrollmentAutoRestarted = 11,
    145   // Auto-enrollment was canceled through the opt-out dialog.
    146   kMetricEnrollmentAutoCancelled = 12,
    147   // Auto-enrollment succeeded.
    148   kMetricEnrollmentAutoOK = 13,
    149   // Registration failed: DM server returns unknown/disallowed enrollment mode.
    150   kMetricEnrollmentInvalidEnrollmentMode = 14,
    151   // Auto-enrollment is not supported for the mode supplied by the server.  This
    152   // presently means trying to auto-enroll in kiosk mode.
    153   kMetricEnrollmentAutoEnrollmentNotSupported = 15,
    154   // Enrollment failed: lockbox initialization took too long to complete.
    155   kMetricEnrollmentLockboxTimeoutError = 16,
    156   // Re-enrollment device lock failed: domain does not match install attributes.
    157   kMetricEnrollmentLockDomainMismatch = 17,
    158   // Registration / policy fetch failed: DM server reports licenses expired or
    159   // exhausted.
    160   kMetricEnrollmentRegisterPolicyMissingLicenses = 18,
    161   // Failed to fetch device robot authorization code from DM Server.
    162   kMetricEnrollmentRobotAuthCodeFetchFailed = 19,
    163   // Failed to fetch device robot refresh token from GAIA.
    164   kMetricEnrollmentRobotRefreshTokenFetchFailed = 20,
    165   // Failed to persist robot account refresh token on device.
    166   kMetricEnrollmentRobotRefreshTokenStoreFailed = 21,
    167   // Registration / policy fetch failed: DM server reports administrator
    168   // deprovisioned the device.
    169   kMetricEnrollmentRegisterPolicyDeprovisioned = 22,
    170   // Registration / policy fetch failed: DM server reports domain mismatch.
    171   kMetricEnrollmentRegisterPolicyDomainMismatch = 23,
    172   // Enrollment has been triggered, the webui login screen has been shown.
    173   kMetricEnrollmentTriggered = 24,
    174   // The user submitted valid GAIA credentials to start the enrollment process
    175   // for the second (or further) time.
    176   kMetricEnrollmentRestarted = 25,
    177   // Failed to store DM token and device ID.
    178   kMetricEnrollmentStoreTokenAndIdFailed = 26,
    179   // Failed to obtain FRE state keys.
    180   kMetricEnrollmentNoStateKeys = 27,
    181   // Failed to validate policy.
    182   kMetricEnrollmentPolicyValidationFailed = 28,
    183   // Failed due to error in CloudPolicyStore.
    184   kMetricEnrollmentCloudPolicyStoreError = 29,
    185   // Failed to lock device.
    186   kMetricEnrollmentLockBackendError = 30,
    187   // Registration / policy fetch failed: DM server reports invalid request
    188   // payload.
    189   kMetricEnrollmentRegisterPolicyPayloadInvalid = 31,
    190   // Registration / policy fetch failed: DM server reports device not found.
    191   kMetricEnrollmentRegisterPolicyDeviceNotFound = 32,
    192   // Registration / policy fetch failed: DM server reports DM token invalid.
    193   kMetricEnrollmentRegisterPolicyDMTokenInvalid = 33,
    194   // Registration / policy fetch failed: DM server reports activation pending.
    195   kMetricEnrollmentRegisterPolicyActivationPending = 34,
    196   // Registration / policy fetch failed: DM server reports device ID conflict.
    197   kMetricEnrollmentRegisterPolicyDeviceIdConflict = 35,
    198   // Registration / policy fetch failed: DM server can't find policy.
    199   kMetricEnrollmentRegisterPolicyNotFound = 36,
    200   // Registration / policy fetch failed: HTTP request failed.
    201   kMetricEnrollmentRegisterPolicyRequestFailed = 37,
    202   // Registration / policy fetch failed: DM server reports temporary problem.
    203   kMetricEnrollmentRegisterPolicyTempUnavailable = 38,
    204   // Registration / policy fetch failed: DM server returns non-success HTTP
    205   // status code.
    206   kMetricEnrollmentRegisterPolicyHttpError = 39,
    207   // Registration / policy fetch failed: can't decode DM server response.
    208   kMetricEnrollmentRegisterPolicyResponseInvalid = 40,
    209   // OAuth token fetch failed: account not signed up.
    210   kMetricEnrollmentAccountNotSignedUp = 41,
    211   // OAuth token fetch failed: account deleted.
    212   kMetricEnrollmentAccountDeleted = 42,
    213   // OAuth token fetch failed: account disabled.
    214   kMetricEnrollmentAccountDisabled = 43,
    215   // Re-enrollment pre-check failed: domain does not match install attributes.
    216   kMetricEnrollmentPrecheckDomainMismatch = 44
    217 };
    218 
    219 // Events related to policy refresh.
    220 // This enum is used to define the buckets for an enumerated UMA histogram.
    221 // Hence,
    222 //   (a) existing enumerated constants should never be deleted or reordered, and
    223 //   (b) new constants should only be appended at the end of the enumeration.
    224 enum MetricPolicyRefresh {
    225   // A refresh occurred while the policy was not invalidated and the policy was
    226   // changed. Invalidations were enabled.
    227   METRIC_POLICY_REFRESH_CHANGED = 0,
    228   // A refresh occurred while the policy was not invalidated and the policy was
    229   // changed. Invalidations were disabled.
    230   METRIC_POLICY_REFRESH_CHANGED_NO_INVALIDATIONS = 1,
    231   // A refresh occurred while the policy was not invalidated and the policy was
    232   // unchanged.
    233   METRIC_POLICY_REFRESH_UNCHANGED = 2,
    234   // A refresh occurred while the policy was invalidated and the policy was
    235   // changed.
    236   METRIC_POLICY_REFRESH_INVALIDATED_CHANGED = 3,
    237   // A refresh occurred while the policy was invalidated and the policy was
    238   // unchanged.
    239   METRIC_POLICY_REFRESH_INVALIDATED_UNCHANGED = 4,
    240 
    241   METRIC_POLICY_REFRESH_SIZE  // Must be the last.
    242 };
    243 
    244 // Types of policy invalidations.
    245 // This enum is used to define the buckets for an enumerated UMA histogram.
    246 // Hence,
    247 //   (a) existing enumerated constants should never be deleted or reordered, and
    248 //   (b) new constants should only be appended at the end of the enumeration.
    249 enum PolicyInvalidationType {
    250   // The invalidation contained no payload.
    251   POLICY_INVALIDATION_TYPE_NO_PAYLOAD = 0,
    252   // A normal invalidation containing a payload.
    253   POLICY_INVALIDATION_TYPE_NORMAL = 1,
    254   // The invalidation contained no payload and was considered expired.
    255   POLICY_INVALIDATION_TYPE_NO_PAYLOAD_EXPIRED = 3,
    256   // The invalidation contained a payload and was considered expired.
    257   POLICY_INVALIDATION_TYPE_EXPIRED = 4,
    258 
    259   POLICY_INVALIDATION_TYPE_SIZE  // Must be the last.
    260 };
    261 
    262 // Names for the UMA counters. They are shared from here since the events
    263 // from the same enum above can be triggered in different files, and must use
    264 // the same UMA histogram name.
    265 POLICY_EXPORT extern const char kMetricToken[];
    266 POLICY_EXPORT extern const char kMetricPolicy[];
    267 POLICY_EXPORT extern const char kMetricUserPolicyRefresh[];
    268 POLICY_EXPORT extern const char kMetricUserPolicyInvalidations[];
    269 POLICY_EXPORT extern const char kMetricDevicePolicyRefresh[];
    270 POLICY_EXPORT extern const char kMetricDevicePolicyInvalidations[];
    271 
    272 }  // namespace policy
    273 
    274 #endif  // COMPONENTS_POLICY_CORE_COMMON_CLOUD_ENTERPRISE_METRICS_H_
    275