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_CLOUD_POLICY_CONSTANTS_H_
6#define COMPONENTS_POLICY_CORE_COMMON_CLOUD_CLOUD_POLICY_CONSTANTS_H_
7
8#include <string>
9#include <utility>
10
11#include "components/policy/policy_export.h"
12
13namespace policy {
14
15// Constants related to the device management protocol.
16namespace dm_protocol {
17
18// Name extern constants for URL query parameters.
19POLICY_EXPORT extern const char kParamAgent[];
20POLICY_EXPORT extern const char kParamAppType[];
21POLICY_EXPORT extern const char kParamDeviceID[];
22POLICY_EXPORT extern const char kParamDeviceType[];
23POLICY_EXPORT extern const char kParamOAuthToken[];
24POLICY_EXPORT extern const char kParamPlatform[];
25POLICY_EXPORT extern const char kParamRequest[];
26POLICY_EXPORT extern const char kParamUserAffiliation[];
27
28// String extern constants for the device and app type we report to the server.
29POLICY_EXPORT extern const char kValueAppType[];
30POLICY_EXPORT extern const char kValueDeviceType[];
31POLICY_EXPORT extern const char kValueRequestAutoEnrollment[];
32POLICY_EXPORT extern const char kValueRequestPolicy[];
33POLICY_EXPORT extern const char kValueRequestRegister[];
34POLICY_EXPORT extern const char kValueRequestApiAuthorization[];
35POLICY_EXPORT extern const char kValueRequestUnregister[];
36POLICY_EXPORT extern const char kValueRequestUploadCertificate[];
37POLICY_EXPORT extern const char kValueRequestDeviceStateRetrieval[];
38POLICY_EXPORT extern const char kValueUserAffiliationManaged[];
39POLICY_EXPORT extern const char kValueUserAffiliationNone[];
40
41// Policy type strings for the policy_type field in PolicyFetchRequest.
42POLICY_EXPORT extern const char kChromeDevicePolicyType[];
43POLICY_EXPORT extern const char kChromeUserPolicyType[];
44POLICY_EXPORT extern const char kChromePublicAccountPolicyType[];
45POLICY_EXPORT extern const char kChromeExtensionPolicyType[];
46
47// These codes are sent in the |error_code| field of PolicyFetchResponse.
48enum PolicyFetchStatus {
49  POLICY_FETCH_SUCCESS = 200,
50  POLICY_FETCH_ERROR_NOT_FOUND = 902,
51};
52
53}  // namespace dm_protocol
54
55// The header used to transmit the policy ID for this client.
56POLICY_EXPORT extern const char kChromePolicyHeader[];
57
58// Information about the verification key used to verify that policy signing
59// keys are valid.
60POLICY_EXPORT std::string GetPolicyVerificationKey();
61POLICY_EXPORT extern const char kPolicyVerificationKeyHash[];
62
63// Describes the affiliation of a user w.r.t. the device owner.
64enum UserAffiliation {
65  // User is on the same domain the device was registered with.
66  USER_AFFILIATION_MANAGED,
67  // No affiliation between device and user.
68  USER_AFFILIATION_NONE,
69};
70
71// Status codes for communication errors with the device management service.
72// This enum is used to define the buckets for an enumerated UMA histogram.
73// Hence,
74//   (a) existing enumerated constants should never be deleted or reordered, and
75//   (b) new constants should only be appended at the end of the enumeration.
76enum DeviceManagementStatus {
77  // All is good.
78  DM_STATUS_SUCCESS = 0,
79  // Request payload invalid.
80  DM_STATUS_REQUEST_INVALID = 1,
81  // The HTTP request failed.
82  DM_STATUS_REQUEST_FAILED = 2,
83  // The server returned an error code that points to a temporary problem.
84  DM_STATUS_TEMPORARY_UNAVAILABLE = 3,
85  // The HTTP request returned a non-success code.
86  DM_STATUS_HTTP_STATUS_ERROR = 4,
87  // Response could not be decoded.
88  DM_STATUS_RESPONSE_DECODING_ERROR = 5,
89  // Service error: Management not supported.
90  DM_STATUS_SERVICE_MANAGEMENT_NOT_SUPPORTED = 6,
91  // Service error: Device not found.
92  DM_STATUS_SERVICE_DEVICE_NOT_FOUND = 7,
93  // Service error: Device token invalid.
94  DM_STATUS_SERVICE_MANAGEMENT_TOKEN_INVALID = 8,
95  // Service error: Activation pending.
96  DM_STATUS_SERVICE_ACTIVATION_PENDING = 9,
97  // Service error: The serial number is not valid or not known to the server.
98  DM_STATUS_SERVICE_INVALID_SERIAL_NUMBER = 10,
99  // Service error: The device id used for registration is already taken.
100  DM_STATUS_SERVICE_DEVICE_ID_CONFLICT = 11,
101  // Service error: The licenses have expired or have been exhausted.
102  DM_STATUS_SERVICE_MISSING_LICENSES = 12,
103  // Service error: The administrator has deprovisioned this client.
104  DM_STATUS_SERVICE_DEPROVISIONED = 13,
105  // Service error: Device registration for the wrong domain.
106  DM_STATUS_SERVICE_DOMAIN_MISMATCH = 14,
107  // Service error: Policy not found. Error code defined by the DM folks.
108  DM_STATUS_SERVICE_POLICY_NOT_FOUND = 902,
109};
110
111// List of modes that the device can be locked into.
112enum DeviceMode {
113  DEVICE_MODE_PENDING,         // The device mode is not yet available.
114  DEVICE_MODE_NOT_SET,         // The device is not yet enrolled or owned.
115  DEVICE_MODE_CONSUMER,        // The device is locally owned as consumer
116                               // device.
117  DEVICE_MODE_ENTERPRISE,      // The device is enrolled as an enterprise
118                               // device.
119  DEVICE_MODE_RETAIL_KIOSK,    // The device is enrolled as retail kiosk device.
120  DEVICE_MODE_CONSUMER_KIOSK_AUTOLAUNCH,  // The device is locally owned as
121                                          // consumer kiosk with ability to auto
122                                          // launch a kiosk webapp.
123};
124
125// A pair that combines a policy fetch type and entity ID.
126typedef std::pair<std::string, std::string> PolicyNamespaceKey;
127
128// Returns the Chrome user policy type to use. This allows overridding the
129// default user policy type on Android and iOS for testing purposes.
130// TODO(joaodasilva): remove this once the server is ready.
131// http://crbug.com/248527
132POLICY_EXPORT const char* GetChromeUserPolicyType();
133
134}  // namespace policy
135
136#endif  // COMPONENTS_POLICY_CORE_COMMON_CLOUD_CLOUD_POLICY_CONSTANTS_H_
137