// Copyright 2019 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef BASE_ENTERPRISE_UTIL_H_ #define BASE_ENTERPRISE_UTIL_H_ #include "base/base_export.h" #include "build/build_config.h" namespace base { // Returns true if an outside entity manages the current machine. To be // "managed" means that an entity such as a company or school is applying // policies to this device. This is primarily checking the device for MDM // management. // Not all managed devices are enterprise devices, as BYOD (bring your own // device) is becoming more common in connection with workplace joining of // personal computers. BASE_EXPORT bool IsManagedDevice(); // Returns true if the device should be considered an enterprise device. To be // an enterprise device means that the enterprise actually owns or has complete // control over a device. This is primarily checking if the device is joined to // a domain. // Not all enterprise devices are managed devices because not all enterprises // actually apply policies to all devices. BASE_EXPORT bool IsEnterpriseDevice(); // Returns true if the device is either managed or enterprise. In general, it is // recommended to use the PlatformManagementService to obtain this information, // if possible. BASE_EXPORT bool IsManagedOrEnterpriseDevice(); #if BUILDFLAG(IS_APPLE) // Returns true if the device is being managed by an MDM system. Uses an old API // not intended for the purpose. enum class MacDeviceManagementStateOld { kFailureAPIUnavailable = 0, kFailureUnableToParseResult = 1, kNoEnrollment = 2, kMDMEnrollment = 3, kMaxValue = kMDMEnrollment }; BASE_EXPORT MacDeviceManagementStateOld IsDeviceRegisteredWithManagementOld(); // Returns the state of the management of the device. Uses a new API so results // aren't always available. For more details, this is documented at // https://blog.fleetsmith.com/what-is-user-approved-mdm-uamdm/ . // These values are persisted to logs. Entries must not be renumbered and // numeric values must never be reused. enum class MacDeviceManagementStateNew { kFailureAPIUnavailable = 0, kFailureUnableToParseResult = 1, kNoEnrollment = 2, kLimitedMDMEnrollment = 3, kFullMDMEnrollment = 4, kDEPMDMEnrollment = 5, kMaxValue = kDEPMDMEnrollment }; BASE_EXPORT MacDeviceManagementStateNew IsDeviceRegisteredWithManagementNew(); // Returns whether the device and/or the current user is enrolled to a domain. struct DeviceUserDomainJoinState { bool device_joined; bool user_joined; }; BASE_EXPORT DeviceUserDomainJoinState AreDeviceAndUserJoinedToDomain(); #endif // BUILDFLAG(IS_APPLE) } // namespace base #endif // BASE_ENTERPRISE_UTIL_H_