xref: /aosp_15_r20/external/cronet/base/enterprise_util.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker // Copyright 2019 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker 
5*6777b538SAndroid Build Coastguard Worker #ifndef BASE_ENTERPRISE_UTIL_H_
6*6777b538SAndroid Build Coastguard Worker #define BASE_ENTERPRISE_UTIL_H_
7*6777b538SAndroid Build Coastguard Worker 
8*6777b538SAndroid Build Coastguard Worker #include "base/base_export.h"
9*6777b538SAndroid Build Coastguard Worker #include "build/build_config.h"
10*6777b538SAndroid Build Coastguard Worker 
11*6777b538SAndroid Build Coastguard Worker namespace base {
12*6777b538SAndroid Build Coastguard Worker 
13*6777b538SAndroid Build Coastguard Worker // Returns true if an outside entity manages the current machine. To be
14*6777b538SAndroid Build Coastguard Worker // "managed" means that an entity such as a company or school is applying
15*6777b538SAndroid Build Coastguard Worker // policies to this device. This is primarily checking the device for MDM
16*6777b538SAndroid Build Coastguard Worker // management.
17*6777b538SAndroid Build Coastguard Worker // Not all managed devices are enterprise devices, as BYOD (bring your own
18*6777b538SAndroid Build Coastguard Worker // device) is becoming more common in connection with workplace joining of
19*6777b538SAndroid Build Coastguard Worker // personal computers.
20*6777b538SAndroid Build Coastguard Worker BASE_EXPORT bool IsManagedDevice();
21*6777b538SAndroid Build Coastguard Worker 
22*6777b538SAndroid Build Coastguard Worker // Returns true if the device should be considered an enterprise device. To be
23*6777b538SAndroid Build Coastguard Worker // an enterprise device means that the enterprise actually owns or has complete
24*6777b538SAndroid Build Coastguard Worker // control over a device. This is primarily checking if the device is joined to
25*6777b538SAndroid Build Coastguard Worker // a domain.
26*6777b538SAndroid Build Coastguard Worker // Not all enterprise devices are managed devices because not all enterprises
27*6777b538SAndroid Build Coastguard Worker // actually apply policies to all devices.
28*6777b538SAndroid Build Coastguard Worker BASE_EXPORT bool IsEnterpriseDevice();
29*6777b538SAndroid Build Coastguard Worker 
30*6777b538SAndroid Build Coastguard Worker // Returns true if the device is either managed or enterprise. In general, it is
31*6777b538SAndroid Build Coastguard Worker // recommended to use the PlatformManagementService to obtain this information,
32*6777b538SAndroid Build Coastguard Worker // if possible.
33*6777b538SAndroid Build Coastguard Worker BASE_EXPORT bool IsManagedOrEnterpriseDevice();
34*6777b538SAndroid Build Coastguard Worker 
35*6777b538SAndroid Build Coastguard Worker #if BUILDFLAG(IS_APPLE)
36*6777b538SAndroid Build Coastguard Worker 
37*6777b538SAndroid Build Coastguard Worker // Returns the state of the management of the device. For more details:
38*6777b538SAndroid Build Coastguard Worker // https://blog.fleetsmith.com/what-is-user-approved-mdm-uamdm/ .
39*6777b538SAndroid Build Coastguard Worker 
40*6777b538SAndroid Build Coastguard Worker // These values are persisted to logs. Entries must not be renumbered and
41*6777b538SAndroid Build Coastguard Worker // numeric values must never be reused.
42*6777b538SAndroid Build Coastguard Worker enum class MacDeviceManagementState {
43*6777b538SAndroid Build Coastguard Worker   kFailureAPIUnavailable = 0,
44*6777b538SAndroid Build Coastguard Worker   kFailureUnableToParseResult = 1,
45*6777b538SAndroid Build Coastguard Worker   kNoEnrollment = 2,
46*6777b538SAndroid Build Coastguard Worker   kLimitedMDMEnrollment = 3,
47*6777b538SAndroid Build Coastguard Worker   kFullMDMEnrollment = 4,
48*6777b538SAndroid Build Coastguard Worker   kDEPMDMEnrollment = 5,
49*6777b538SAndroid Build Coastguard Worker 
50*6777b538SAndroid Build Coastguard Worker   kMaxValue = kDEPMDMEnrollment
51*6777b538SAndroid Build Coastguard Worker };
52*6777b538SAndroid Build Coastguard Worker BASE_EXPORT MacDeviceManagementState IsDeviceRegisteredWithManagement();
53*6777b538SAndroid Build Coastguard Worker 
54*6777b538SAndroid Build Coastguard Worker // Returns whether the device and/or the current user is enrolled to a domain.
55*6777b538SAndroid Build Coastguard Worker struct DeviceUserDomainJoinState {
56*6777b538SAndroid Build Coastguard Worker   bool device_joined;
57*6777b538SAndroid Build Coastguard Worker   bool user_joined;
58*6777b538SAndroid Build Coastguard Worker };
59*6777b538SAndroid Build Coastguard Worker BASE_EXPORT DeviceUserDomainJoinState AreDeviceAndUserJoinedToDomain();
60*6777b538SAndroid Build Coastguard Worker 
61*6777b538SAndroid Build Coastguard Worker #endif  // BUILDFLAG(IS_APPLE)
62*6777b538SAndroid Build Coastguard Worker 
63*6777b538SAndroid Build Coastguard Worker }  // namespace base
64*6777b538SAndroid Build Coastguard Worker 
65*6777b538SAndroid Build Coastguard Worker #endif  // BASE_ENTERPRISE_UTIL_H_
66