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 13namespace chromeos { 14 15// This interface provides access to Chrome OS system APIs such as the 16// timezone setting. 17class 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