Home | History | Annotate | Download | only in system
      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 
     13 namespace base {
     14 class TaskRunner;
     15 }
     16 
     17 namespace chromeos {
     18 namespace system {
     19 
     20 // Developer switch value.
     21 CHROMEOS_EXPORT extern const char kDevSwitchBootMode[];
     22 
     23 // Customization ID key.
     24 CHROMEOS_EXPORT extern const char kCustomizationIdKey[];
     25 
     26 // HWID key.
     27 CHROMEOS_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.
     31 CHROMEOS_EXPORT extern const char kOemCanExitEnterpriseEnrollmentKey[];
     32 
     33 // OEM customization directive that specified intended device purpose.
     34 CHROMEOS_EXPORT extern const char kOemDeviceRequisitionKey[];
     35 
     36 // OEM customization flag that enforces enterprise enrollment flow in OOBE.
     37 CHROMEOS_EXPORT extern const char kOemIsEnterpriseManagedKey[];
     38 
     39 // OEM customization flag that specifies if OOBE flow should be enhanced for
     40 // keyboard driven control.
     41 CHROMEOS_EXPORT extern const char kOemKeyboardDrivenOobeKey[];
     42 
     43 // Offer coupon code key.
     44 CHROMEOS_EXPORT extern const char kOffersCouponCodeKey[];
     45 
     46 // Offer group key.
     47 CHROMEOS_EXPORT extern const char kOffersGroupCodeKey[];
     48 
     49 // Release Brand Code key.
     50 CHROMEOS_EXPORT extern const char kRlzBrandCodeKey[];
     51 
     52 // This interface provides access to Chrome OS statistics.
     53 class 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