1 // Copyright (c) 2012 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_SETTINGS_SYSTEM_SETTINGS_PROVIDER_H_ 6 #define CHROME_BROWSER_CHROMEOS_SETTINGS_SYSTEM_SETTINGS_PROVIDER_H_ 7 8 #include <string> 9 10 #include "base/callback.h" 11 #include "base/memory/scoped_ptr.h" 12 #include "chromeos/settings/cros_settings_provider.h" 13 #include "chromeos/settings/timezone_settings.h" 14 #include "third_party/icu/source/i18n/unicode/timezone.h" 15 16 namespace base { 17 class StringValue; 18 } 19 20 namespace chromeos { 21 22 class SystemSettingsProvider : public CrosSettingsProvider, 23 public system::TimezoneSettings::Observer { 24 public: 25 explicit SystemSettingsProvider(const NotifyObserversCallback& notify_cb); 26 virtual ~SystemSettingsProvider(); 27 28 // CrosSettingsProvider implementation. 29 virtual const base::Value* Get(const std::string& path) const OVERRIDE; 30 virtual TrustedStatus PrepareTrustedValues( 31 const base::Closure& callback) OVERRIDE; 32 virtual bool HandlesSetting(const std::string& path) const OVERRIDE; 33 34 // TimezoneSettings::Observer implementation. 35 virtual void TimezoneChanged(const icu::TimeZone& timezone) OVERRIDE; 36 37 private: 38 // CrosSettingsProvider implementation. 39 virtual void DoSet(const std::string& path, 40 const base::Value& in_value) OVERRIDE; 41 42 scoped_ptr<base::StringValue> timezone_value_; 43 44 DISALLOW_COPY_AND_ASSIGN(SystemSettingsProvider); 45 }; 46 47 } // namespace chromeos 48 49 #endif // CHROME_BROWSER_CHROMEOS_SETTINGS_SYSTEM_SETTINGS_PROVIDER_H_ 50