• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
15 class Value;
16 class ListValue;
17 
18 namespace chromeos {
19 
20 class 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