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
10namespace 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.
20enum 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.
65enum 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.
120enum 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.
224enum 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.
249enum 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.
265POLICY_EXPORT extern const char kMetricToken[];
266POLICY_EXPORT extern const char kMetricPolicy[];
267POLICY_EXPORT extern const char kMetricUserPolicyRefresh[];
268POLICY_EXPORT extern const char kMetricUserPolicyInvalidations[];
269POLICY_EXPORT extern const char kMetricDevicePolicyRefresh[];
270POLICY_EXPORT extern const char kMetricDevicePolicyInvalidations[];
271
272}  // namespace policy
273
274#endif  // COMPONENTS_POLICY_CORE_COMMON_CLOUD_ENTERPRISE_METRICS_H_
275