| // Copyright 2017 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef COMPONENTS_CRONET_CRONET_PREFS_MANAGER_H_ |
| #define COMPONENTS_CRONET_CRONET_PREFS_MANAGER_H_ |
| |
| #include <string> |
| |
| #include "base/memory/ref_counted.h" |
| #include "base/threading/thread_checker.h" |
| |
| class JsonPrefStore; |
| class PrefService; |
| |
| namespace base { |
| class SingleThreadTaskRunner; |
| class SequencedTaskRunner; |
| } // namespace base |
| |
| namespace net { |
| class HostCache; |
| class NetLog; |
| class NetworkQualitiesPrefsManager; |
| class NetworkQualityEstimator; |
| class URLRequestContextBuilder; |
| } // namespace net |
| |
| namespace cronet { |
| class HostCachePersistenceManager; |
| |
| // Manages the PrefService, JsonPrefStore and all associated persistence |
| // managers used by Cronet such as NetworkQualityPrefsManager, |
| // HostCachePersistenceManager, etc. The constructor, destructor and all |
| // other methods of this class should be called on the network thread. |
| class CronetPrefsManager { |
| public: |
| CronetPrefsManager( |
| const std::string& storage_path, |
| scoped_refptr<base::SingleThreadTaskRunner> network_task_runner, |
| scoped_refptr<base::SequencedTaskRunner> file_task_runner, |
| bool enable_network_quality_estimator, |
| bool enable_host_cache_persistence, |
| net::NetLog* net_log, |
| net::URLRequestContextBuilder* context_builder); |
| |
| CronetPrefsManager(const CronetPrefsManager&) = delete; |
| CronetPrefsManager& operator=(const CronetPrefsManager&) = delete; |
| |
| virtual ~CronetPrefsManager(); |
| |
| void SetupNqePersistence(net::NetworkQualityEstimator* nqe); |
| |
| void SetupHostCachePersistence(net::HostCache* host_cache, |
| int host_cache_persistence_delay_ms, |
| net::NetLog* net_log); |
| |
| // Prepares |this| for shutdown. |
| void PrepareForShutdown(); |
| |
| private: |
| // |pref_service_| should outlive the HttpServerPropertiesManager owned by |
| // |host_cache_persistence_manager_|. |
| std::unique_ptr<PrefService> pref_service_; |
| scoped_refptr<JsonPrefStore> json_pref_store_; |
| |
| // Manages the writing and reading of the network quality prefs. |
| std::unique_ptr<net::NetworkQualitiesPrefsManager> |
| network_qualities_prefs_manager_; |
| |
| // Manages reading and writing the HostCache pref when persistence is enabled. |
| // Must be destroyed before |context_| owned by CronetUrlContextAdapter |
| // (because it owns the HostResolverImpl, |
| // which owns the HostCache) and |pref_service_|. |
| std::unique_ptr<HostCachePersistenceManager> host_cache_persistence_manager_; |
| |
| // Checks that all methods are called on the network thread. |
| THREAD_CHECKER(thread_checker_); |
| |
| }; // class CronetPrefsManager |
| |
| } // namespace cronet |
| |
| #endif // COMPONENTS_CRONET_CRONET_PREFS_MANAGER_H_ |