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