system_settings_provider.h revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org// Copyright (c) 2012 The Chromium Authors. All rights reserved.
247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org// Use of this source code is governed by a BSD-style license that can be
347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org// found in the LICENSE file.
447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#ifndef CHROME_BROWSER_CHROMEOS_SETTINGS_SYSTEM_SETTINGS_PROVIDER_H_
647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#define CHROME_BROWSER_CHROMEOS_SETTINGS_SYSTEM_SETTINGS_PROVIDER_H_
747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#include <string>
947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
1047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#include "base/callback.h"
1147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#include "base/memory/scoped_ptr.h"
1247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#include "chrome/browser/chromeos/settings/cros_settings_provider.h"
1347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#include "chrome/browser/chromeos/system/timezone_settings.h"
1447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#include "third_party/icu/public/i18n/unicode/timezone.h"
1547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
1647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgnamespace base {
1747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgclass StringValue;
1847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org}
1947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
2047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgnamespace chromeos {
2147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
2247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgclass SystemSettingsProvider : public CrosSettingsProvider,
2347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org                               public system::TimezoneSettings::Observer {
2447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org public:
2547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  explicit SystemSettingsProvider(const NotifyObserversCallback& notify_cb);
2647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  virtual ~SystemSettingsProvider();
2747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
2847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  // CrosSettingsProvider implementation.
2947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  virtual const base::Value* Get(const std::string& path) const OVERRIDE;
3047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  virtual TrustedStatus PrepareTrustedValues(
3147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org      const base::Closure& callback) OVERRIDE;
3247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  virtual bool HandlesSetting(const std::string& path) const OVERRIDE;
3347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
3447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  // TimezoneSettings::Observer implementation.
3547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  virtual void TimezoneChanged(const icu::TimeZone& timezone) OVERRIDE;
3647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
3747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org private:
3847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  // CrosSettingsProvider implementation.
3947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  virtual void DoSet(const std::string& path,
4047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org                     const base::Value& in_value) OVERRIDE;
4147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
4247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  scoped_ptr<base::StringValue> timezone_value_;
4347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
4447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org  DISALLOW_COPY_AND_ASSIGN(SystemSettingsProvider);
4547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org};
4647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
4747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org}  // namespace chromeos
4847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org
4947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#endif  // CHROME_BROWSER_CHROMEOS_SETTINGS_SYSTEM_SETTINGS_PROVIDER_H_
5047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org