| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| // |
| // Chromecast-specific configurations retrieved from and stored into a given |
| // configuration file. |
| |
| #ifndef CHROMECAST_COMMON_CHROMECAST_CONFIG_H_ |
| #define CHROMECAST_COMMON_CHROMECAST_CONFIG_H_ |
| |
| #include <string> |
| |
| #include "base/files/file_path.h" |
| #include "base/memory/ref_counted.h" |
| #include "base/memory/scoped_ptr.h" |
| #include "base/prefs/pref_service.h" |
| #include "base/threading/sequenced_worker_pool.h" |
| #include "base/threading/thread_checker.h" |
| |
| class PrefRegistrySimple; |
| |
| namespace chromecast { |
| |
| // Manages configuration for Chromecast via PrefService. |
| // It uses JsonPrefStore internally and/so the format of config file is same to |
| // that of JsonPrefStore. |
| // It is NOT thread-safe; all functions must be run on the same thread as |
| // the object is created. |
| class ChromecastConfig { |
| public: |
| // Creates new singleton instance of ChromecastConfig. |
| static void Create(PrefRegistrySimple* registry); |
| |
| // Returns the singleton instance of ChromecastConfig. |
| static ChromecastConfig* GetInstance(); |
| |
| // Saves configs into configuration file. |
| void Save() const; |
| |
| // Returns string value for |key|, if present. |
| const std::string GetValue(const std::string& key) const; |
| |
| // Returns integer value for |key|, if present. |
| const int GetIntValue(const std::string& key) const; |
| |
| // Sets new string value for |key|. |
| void SetValue(const std::string& key, const std::string& value) const; |
| |
| // Sets new int value for |key|. |
| void SetIntValue(const std::string& key, int value) const; |
| |
| // Whether or not a value has been set for |key|. |
| bool HasValue(const std::string& key) const; |
| |
| scoped_refptr<base::SequencedWorkerPool> worker_pool() const { |
| return worker_pool_; |
| } |
| |
| PrefService* pref_service() const { return pref_service_.get(); } |
| |
| private: |
| ChromecastConfig(); |
| ~ChromecastConfig(); |
| |
| // Loads configs from config file. Returns true if successful. |
| bool Load(PrefRegistrySimple* registry); |
| |
| // Registers any needed preferences for the current platform. |
| void RegisterPlatformPrefs(PrefRegistrySimple* registry); |
| |
| // Global singleton instance. |
| static ChromecastConfig* g_instance_; |
| |
| const base::FilePath config_path_; |
| const scoped_refptr<base::SequencedWorkerPool> worker_pool_; |
| scoped_ptr<PrefService> pref_service_; |
| |
| base::ThreadChecker thread_checker_; |
| |
| DISALLOW_COPY_AND_ASSIGN(ChromecastConfig); |
| }; |
| |
| } // namespace chromecast |
| |
| #endif // CHROMECAST_COMMON_CHROMECAST_CONFIG_H_ |