Home | History | Annotate | Download | only in chromeos
      1 // Copyright (c) 2011 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 CHROME_BROWSER_CHROMEOS_SYSTEM_ACCESS_H_
      6 #define CHROME_BROWSER_CHROMEOS_SYSTEM_ACCESS_H_
      7 #pragma once
      8 
      9 #include <string>
     10 
     11 #include "unicode/timezone.h"
     12 
     13 namespace chromeos {
     14 
     15 // This interface provides access to Chrome OS system APIs such as the
     16 // timezone setting.
     17 class SystemAccess {
     18  public:
     19   class Observer {
     20    public:
     21     // Called when the timezone has changed. |timezone| is non-null.
     22     virtual void TimezoneChanged(const icu::TimeZone& timezone) = 0;
     23   };
     24 
     25   static SystemAccess* GetInstance();
     26 
     27   // Returns the current timezone as an icu::Timezone object.
     28   virtual const icu::TimeZone& GetTimezone() = 0;
     29 
     30   // Sets the current timezone. |timezone| must be non-null.
     31   virtual void SetTimezone(const icu::TimeZone& timezone) = 0;
     32 
     33   // Retrieve the named machine statistic (e.g. "hardware_class").
     34   // This does not update the statistcs. If the |name| is not set, |result|
     35   // preserves old value.
     36   virtual bool GetMachineStatistic(const std::string& name,
     37                                    std::string* result) = 0;
     38 
     39   virtual void AddObserver(Observer* observer) = 0;
     40   virtual void RemoveObserver(Observer* observer) = 0;
     41 
     42  protected:
     43   virtual ~SystemAccess() {}
     44 };
     45 
     46 }  // namespace chromeos
     47 
     48 #endif  // CHROME_BROWSER_CHROMEOS_SYSTEM_ACCESS_H_
     49