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_UI_WEBUI_OPTIONS_CHROMEOS_SYSTEM_SETTINGS_PROVIDER_H_ 6#define CHROME_BROWSER_UI_WEBUI_OPTIONS_CHROMEOS_SYSTEM_SETTINGS_PROVIDER_H_ 7 8#include <vector> 9 10#include "base/string16.h" 11#include "chrome/browser/chromeos/cros_settings_provider.h" 12#include "chrome/browser/chromeos/system_access.h" 13#include "third_party/icu/public/i18n/unicode/timezone.h" 14 15class Value; 16class ListValue; 17 18namespace chromeos { 19 20class SystemSettingsProvider : public CrosSettingsProvider, 21 public SystemAccess::Observer { 22 public: 23 SystemSettingsProvider(); 24 virtual ~SystemSettingsProvider(); 25 26 // CrosSettingsProvider overrides. 27 virtual bool Get(const std::string& path, Value** out_value) const; 28 virtual bool HandlesSetting(const std::string& path); 29 30 // Overridden from SystemAccess::Observer: 31 virtual void TimezoneChanged(const icu::TimeZone& timezone); 32 33 // Creates the map of timezones used by the options page. 34 ListValue* GetTimezoneList(); 35 36 private: 37 // CrosSettingsProvider overrides. 38 virtual void DoSet(const std::string& path, Value* in_value); 39 40 // Gets timezone name. 41 static string16 GetTimezoneName(const icu::TimeZone& timezone); 42 43 // Gets timezone ID which is also used as timezone pref value. 44 static string16 GetTimezoneID(const icu::TimeZone& timezone); 45 46 // Gets timezone object from its id. 47 const icu::TimeZone* GetTimezone(const string16& timezone_id); 48 49 // Gets a timezone id from a timezone in |timezones_| that has the same 50 // rule of given |timezone|. 51 // One timezone could have multiple timezones, 52 // e.g. 53 // US/Pacific == America/Los_Angeles 54 // We should always use the known timezone id when passing back as 55 // pref values. 56 string16 GetKnownTimezoneID(const icu::TimeZone& timezone) const; 57 58 // Timezones. 59 std::vector<icu::TimeZone*> timezones_; 60 61 DISALLOW_COPY_AND_ASSIGN(SystemSettingsProvider); 62}; 63 64} // namespace chromeos 65 66#endif // CHROME_BROWSER_UI_WEBUI_OPTIONS_CHROMEOS_SYSTEM_SETTINGS_PROVIDER_H_ 67