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_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