chromium/chromeos/ash/components/system/statistics_provider.h

// Copyright 2013 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROMEOS_ASH_COMPONENTS_SYSTEM_STATISTICS_PROVIDER_H_
#define CHROMEOS_ASH_COMPONENTS_SYSTEM_STATISTICS_PROVIDER_H_

#include <optional>
#include <string_view>

#include "base/component_export.h"
#include "base/functional/callback.h"

namespace ash::system {

// Activation date key.
inline constexpr char kActivateDateKey[] =;

// The key that will be present in VPD if the device was enrolled in a domain
// that blocks dev mode.
inline constexpr char kBlockDevModeKey[] =;
// The key that will be present in VPD if the device ever was enrolled.
inline constexpr char kCheckEnrollmentKey[] =;

// The key and values present in VPD to indicate if RLZ ping should be sent.
inline constexpr char kShouldSendRlzPingKey[] =;
inline constexpr char kShouldSendRlzPingValueFalse[] =;
inline constexpr char kShouldSendRlzPingValueTrue[] =;

// The key present in VPD that indicates the date after which the RLZ ping is
// allowed to be sent. It is in the format of "yyyy-mm-dd".
inline constexpr char kRlzEmbargoEndDateKey[] =;

// Customization ID key.
inline constexpr char kCustomizationIdKey[] =;

// Developer switch value.
inline constexpr char kDevSwitchBootKey[] =;
inline constexpr char kDevSwitchBootValueDev[] =;
inline constexpr char kDevSwitchBootValueVerified[] =;

// Dock MAC address key.
inline constexpr char kDockMacAddressKey[] =;

// Ethernet MAC address key.
inline constexpr char kEthernetMacAddressKey[] =;

// Firmware write protect switch value.
inline constexpr char kFirmwareWriteProtectCurrentKey[] =;
inline constexpr char kFirmwareWriteProtectCurrentValueOn[] =;
inline constexpr char kFirmwareWriteProtectCurrentValueOff[] =;

// Firmware type and associated values. The values are from crossystem output
// for the mainfw_type key. Normal and developer correspond to Chrome OS
// firmware with MP and developer keys respectively, nonchrome indicates the
// machine doesn't run on Chrome OS firmware. See crossystem source for more
// details.
inline constexpr char kFirmwareTypeKey[] =;
inline constexpr char kFirmwareTypeValueDeveloper[] =;
inline constexpr char kFirmwareTypeValueNonchrome[] =;
inline constexpr char kFirmwareTypeValueNormal[] =;

// HWID key.
inline constexpr char kHardwareClassKey[] =;

// Key/values reporting if Chrome OS is running in a VM or not. These values are
// read from crossystem output. See crossystem source for VM detection logic.
inline constexpr char kIsVmKey[] =;
inline constexpr char kIsVmValueFalse[] =;
inline constexpr char kIsVmValueTrue[] =;

// Key/values reporting if ChromeOS is running in debug mode or not. These
// values are read from crossystem output. See crossystem source for cros_debug
// detection logic.
inline constexpr char kIsCrosDebugKey[] =;
inline constexpr char kIsCrosDebugValueFalse[] =;
inline constexpr char kIsCrosDebugValueTrue[] =;

// Manufacture date key.
inline constexpr char kManufactureDateKey[] =;

// OEM customization flag that permits exiting enterprise enrollment flow in
// OOBE when 'oem_enterprise_managed' flag is set.
inline constexpr char kOemCanExitEnterpriseEnrollmentKey[] =;

// OEM customization directive that specified intended device purpose.
inline constexpr char kOemDeviceRequisitionKey[] =;

// OEM customization flag that enforces enterprise enrollment flow in OOBE.
inline constexpr char kOemIsEnterpriseManagedKey[] =;

// OEM customization flag that specifies if OOBE flow should be enhanced for
// keyboard driven control.
inline constexpr char kOemKeyboardDrivenOobeKey[] =;

// Offer coupon code key.
inline constexpr char kOffersCouponCodeKey[] =;

// Offer group key.
inline constexpr char kOffersGroupCodeKey[] =;

// Release Brand Code key.
inline constexpr char kRlzBrandCodeKey[] =;

// Regional data
inline constexpr char kRegionKey[] =;
inline constexpr char kInitialLocaleKey[] =;
inline constexpr char kInitialTimezoneKey[] =;
inline constexpr char kKeyboardLayoutKey[] =;
inline constexpr char kKeyboardMechanicalLayoutKey[] =;

// The key that will be present in RO VPD to indicate what identifier is used
// for attestation-based registration of a device.
inline constexpr char kAttestedDeviceIdKey[] =;

// Serial number key (legacy VPD devices). In most cases,
// GetEnterpriseMachineID() is the appropriate way to obtain the serial number.
inline constexpr char kLegacySerialNumberKey[] =;

// Serial number key (VPD v2+ devices, Samsung: caroline and later). In most
// cases, GetEnterpriseMachineID() is the appropriate way to obtain the serial
// number.
inline constexpr char kSerialNumberKey[] =;

// Serial number key for Flex devices. In most cases, GetEnterpriseMachineID()
// is the appropriate way to obtain the serial number.
inline constexpr char kFlexIdKey[] =;

// Display Profiles key.
inline constexpr char kDisplayProfilesKey[] =;

// Machine model and oem names.
inline constexpr char kMachineModelName[] =;
inline constexpr char kMachineOemName[] =;

// This interface provides access to Chrome OS statistics.
class COMPONENT_EXPORT(CHROMEOS_ASH_COMPONENTS_SYSTEM) StatisticsProvider {};

}  // namespace ash::system

#endif  // CHROMEOS_ASH_COMPONENTS_SYSTEM_STATISTICS_PROVIDER_H_