1// Copyright 2013 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 CHROMEOS_SYSTEM_STATISTICS_PROVIDER_H_ 6#define CHROMEOS_SYSTEM_STATISTICS_PROVIDER_H_ 7 8#include <string> 9 10#include "base/memory/ref_counted.h" 11#include "chromeos/chromeos_export.h" 12 13namespace base { 14class TaskRunner; 15} 16 17namespace chromeos { 18namespace system { 19 20// Developer switch value. 21CHROMEOS_EXPORT extern const char kDevSwitchBootMode[]; 22 23// Customization ID key. 24CHROMEOS_EXPORT extern const char kCustomizationIdKey[]; 25 26// HWID key. 27CHROMEOS_EXPORT extern const char kHardwareClassKey[]; 28 29// OEM customization flag that permits exiting enterprise enrollment flow in 30// OOBE when 'oem_enterprise_managed' flag is set. 31CHROMEOS_EXPORT extern const char kOemCanExitEnterpriseEnrollmentKey[]; 32 33// OEM customization directive that specified intended device purpose. 34CHROMEOS_EXPORT extern const char kOemDeviceRequisitionKey[]; 35 36// OEM customization flag that enforces enterprise enrollment flow in OOBE. 37CHROMEOS_EXPORT extern const char kOemIsEnterpriseManagedKey[]; 38 39// OEM customization flag that specifies if OOBE flow should be enhanced for 40// keyboard driven control. 41CHROMEOS_EXPORT extern const char kOemKeyboardDrivenOobeKey[]; 42 43// Offer coupon code key. 44CHROMEOS_EXPORT extern const char kOffersCouponCodeKey[]; 45 46// Offer group key. 47CHROMEOS_EXPORT extern const char kOffersGroupCodeKey[]; 48 49// Release Brand Code key. 50CHROMEOS_EXPORT extern const char kRlzBrandCodeKey[]; 51 52// This interface provides access to Chrome OS statistics. 53class CHROMEOS_EXPORT StatisticsProvider { 54 public: 55 // Starts loading the machine statistics. File operations are performed on 56 // |file_task_runner|. 57 virtual void StartLoadingMachineStatistics( 58 const scoped_refptr<base::TaskRunner>& file_task_runner, 59 bool load_oem_manifest) = 0; 60 61 // Retrieves the named machine statistic (e.g. "hardware_class"). If |name| 62 // is found, sets |result| and returns true. Safe to call from any thread 63 // except the task runner passed to Initialize() (e.g. FILE). This may block 64 // if called early before the statistics are loaded from disk. 65 // StartLoadingMachineStatistics() must be called before this. 66 virtual bool GetMachineStatistic(const std::string& name, 67 std::string* result) = 0; 68 69 // Similar to GetMachineStatistic for boolean flags. 70 virtual bool GetMachineFlag(const std::string& name, bool* result) = 0; 71 72 // Cancels any pending file operations. 73 virtual void Shutdown() = 0; 74 75 // Get the Singleton instance. 76 static StatisticsProvider* GetInstance(); 77 78 // Set the instance returned by GetInstance() for testing. 79 static void SetTestProvider(StatisticsProvider* test_provider); 80 81 protected: 82 virtual ~StatisticsProvider() {} 83}; 84 85} // namespace system 86} // namespace chromeos 87 88#endif // CHROMEOS_SYSTEM_STATISTICS_PROVIDER_H_ 89