| // 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_GLOBAL_STATE_H_ | 
 | #define COMPONENTS_CRONET_CRONET_GLOBAL_STATE_H_ | 
 |  | 
 | #include <memory> | 
 | #include <string> | 
 | #include "base/memory/scoped_refptr.h" | 
 | #include "base/task/sequenced_task_runner.h" | 
 |  | 
 | namespace net { | 
 | class NetLog; | 
 | class ProxyConfigService; | 
 | class ProxyResolutionService; | 
 | }  // namespace net | 
 |  | 
 | namespace cronet { | 
 |  | 
 | // Returns true when called on the initialization thread. | 
 | // May only be called after EnsureInitialized() has returned. | 
 | bool OnInitThread(); | 
 |  | 
 | // Posts a task to run on initialization thread. Blocks until initialization | 
 | // thread is started. | 
 | void PostTaskToInitThread(const base::Location& posted_from, | 
 |                           base::OnceClosure task); | 
 |  | 
 | // Performs one-off initialization of Cronet global state, including creating, | 
 | // or binding to an existing thread, to run initialization and process | 
 | // network notifications on. The implementation must be thread-safe and | 
 | // idempotent, and must complete initialization before returning. | 
 | void EnsureInitialized(); | 
 |  | 
 | // Creates a proxy config service appropriate for this platform that fetches the | 
 | // system proxy settings. Cronet will call this API only after a prior call | 
 | // to EnsureInitialized() has returned. | 
 | // On Android, this must be called on the JNI thread. | 
 | std::unique_ptr<net::ProxyConfigService> CreateProxyConfigService( | 
 |     const scoped_refptr<base::SequencedTaskRunner>& io_task_runner); | 
 |  | 
 | // Creates a proxy resolution service appropriate for this platform that fetches | 
 | // the system proxy settings. Cronet will call this API only after a prior call | 
 | // to EnsureInitialized() has returned. | 
 | std::unique_ptr<net::ProxyResolutionService> CreateProxyResolutionService( | 
 |     std::unique_ptr<net::ProxyConfigService> proxy_config_service, | 
 |     net::NetLog* net_log); | 
 |  | 
 | // Creates default User-Agent request value, combining optional | 
 | // |partial_user_agent| with system-dependent values. This API may be invoked | 
 | // before EnsureInitialized(), in which case it may trigger initialization | 
 | // itself, if necessary. | 
 | std::string CreateDefaultUserAgent(const std::string& partial_user_agent); | 
 |  | 
 | // Set network thread priority to |priority|. Must be called on the network | 
 | // thread. Corresponds to android.os.Process.setThreadPriority() | 
 | // values. | 
 | void SetNetworkThreadPriorityOnNetworkThread(double priority); | 
 |  | 
 | }  // namespace cronet | 
 |  | 
 | #endif  // COMPONENTS_CRONET_CRONET_GLOBAL_STATE_H_ |