OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CHROME_BROWSER_CHROMEOS_PROXY_CONFIG_SERVICE_IMPL_H_ | 5 #ifndef CHROME_BROWSER_CHROMEOS_PROXY_CONFIG_SERVICE_IMPL_H_ |
6 #define CHROME_BROWSER_CHROMEOS_PROXY_CONFIG_SERVICE_IMPL_H_ | 6 #define CHROME_BROWSER_CHROMEOS_PROXY_CONFIG_SERVICE_IMPL_H_ |
7 #pragma once | 7 #pragma once |
8 | 8 |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 21 matching lines...) Expand all Loading... |
32 // - provides UI with methods to retrieve and modify system proxy configuration | 32 // - provides UI with methods to retrieve and modify system proxy configuration |
33 // on UI thread | 33 // on UI thread |
34 // - TODO(kuan): persists proxy configuration settings on chromeos device using | 34 // - TODO(kuan): persists proxy configuration settings on chromeos device using |
35 // cros settings | 35 // cros settings |
36 class ProxyConfigServiceImpl | 36 class ProxyConfigServiceImpl |
37 : public base::RefCountedThreadSafe<ProxyConfigServiceImpl>, | 37 : public base::RefCountedThreadSafe<ProxyConfigServiceImpl>, |
38 public SignedSettings::Delegate<bool>, | 38 public SignedSettings::Delegate<bool>, |
39 public SignedSettings::Delegate<std::string> { | 39 public SignedSettings::Delegate<std::string> { |
40 public: | 40 public: |
41 // ProxyConfigServiceImpl is created on the UI thread in | 41 // ProxyConfigServiceImpl is created on the UI thread in |
42 // chrome/browser/net/chrome_url_request_context.cc::CreateProxyConfigService | 42 // ProfileIOData::CreateProxyConfigService via |
43 // via ProfileImpl::GetChromeOSProxyConfigServiceImpl, and stored in Profile | 43 // ProfileImpl::GetChromeOSProxyConfigServiceImpl, and stored in Profile as a |
44 // as a scoped_refptr (because it's RefCountedThreadSafe). | 44 // scoped_refptr (because it's RefCountedThreadSafe). |
45 // | 45 // |
46 // Past that point, it can be accessed from the IO or UI threads. | 46 // Past that point, it can be accessed from the IO or UI threads. |
47 // | 47 // |
48 // From the IO thread, it is accessed periodically through the wrapper class | 48 // From the IO thread, it is accessed periodically through the wrapper class |
49 // chromeos::ProxyConfigService via net::ProxyConfigService interface | 49 // chromeos::ProxyConfigService via net::ProxyConfigService interface |
50 // (GetLatestProxyConfig, AddObserver, RemoveObserver). | 50 // (GetLatestProxyConfig, AddObserver, RemoveObserver). |
51 // | 51 // |
52 // From the UI thread, it is accessed via | 52 // From the UI thread, it is accessed via |
53 // WebUI::GetProfile::GetChromeOSProxyConfigServiceImpl to allow user to read | 53 // WebUI::GetProfile::GetChromeOSProxyConfigServiceImpl to allow user to read |
54 // or modify the proxy configuration via UIGetProxyConfig or | 54 // or modify the proxy configuration via UIGetProxyConfig or |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
170 // Constructor for testing. | 170 // Constructor for testing. |
171 // |init_config| specifies the ProxyConfig to use for initialization. | 171 // |init_config| specifies the ProxyConfig to use for initialization. |
172 explicit ProxyConfigServiceImpl(const ProxyConfig& init_config); | 172 explicit ProxyConfigServiceImpl(const ProxyConfig& init_config); |
173 virtual ~ProxyConfigServiceImpl(); | 173 virtual ~ProxyConfigServiceImpl(); |
174 | 174 |
175 // Methods called on IO thread from wrapper class chromeos::ProxyConfigService | 175 // Methods called on IO thread from wrapper class chromeos::ProxyConfigService |
176 // as ProxyConfigService methods. | 176 // as ProxyConfigService methods. |
177 void AddObserver(net::ProxyConfigService::Observer* observer); | 177 void AddObserver(net::ProxyConfigService::Observer* observer); |
178 void RemoveObserver(net::ProxyConfigService::Observer* observer); | 178 void RemoveObserver(net::ProxyConfigService::Observer* observer); |
179 // Called from GetLatestProxyConfig. | 179 // Called from GetLatestProxyConfig. |
180 bool IOGetProxyConfig(net::ProxyConfig* config); | 180 net::ProxyConfigService::ConfigAvailability IOGetProxyConfig( |
| 181 net::ProxyConfig* config); |
181 | 182 |
182 // Called from UI thread to retrieve proxy configuration in |config|. | 183 // Called from UI thread to retrieve proxy configuration in |config|. |
183 void UIGetProxyConfig(ProxyConfig* config); | 184 void UIGetProxyConfig(ProxyConfig* config); |
184 | 185 |
185 // Called from UI thread to set flag to persist settings to device. | 186 // Called from UI thread to set flag to persist settings to device. |
186 // Subsequent UISet* methods will use this flag, until UI calls it again with | 187 // Subsequent UISet* methods will use this flag, until UI calls it again with |
187 // a different flag. | 188 // a different flag. |
188 void UISetPersistToDevice(bool persist) { | 189 void UISetPersistToDevice(bool persist) { |
189 persist_to_device_ = persist; | 190 persist_to_device_ = persist; |
190 } | 191 } |
(...skipping 17 matching lines...) Expand all Loading... |
208 | 209 |
209 // Implementation for SignedSettings::Delegate | 210 // Implementation for SignedSettings::Delegate |
210 virtual void OnSettingsOpCompleted(SignedSettings::ReturnCode code, | 211 virtual void OnSettingsOpCompleted(SignedSettings::ReturnCode code, |
211 std::string value); | 212 std::string value); |
212 virtual void OnSettingsOpCompleted(SignedSettings::ReturnCode code, | 213 virtual void OnSettingsOpCompleted(SignedSettings::ReturnCode code, |
213 bool value); | 214 bool value); |
214 | 215 |
215 private: | 216 private: |
216 friend class base::RefCountedThreadSafe<ProxyConfigServiceImpl>; | 217 friend class base::RefCountedThreadSafe<ProxyConfigServiceImpl>; |
217 | 218 |
218 // Init proxy to default config, i.e. AutoDetect. | |
219 // If |post_to_io_thread| is true, a task will be posted to IO thread to | |
220 // update |cached_config|. | |
221 void InitConfigToDefault(bool post_to_io_thread); | |
222 | |
223 // Persists proxy config to device. | 219 // Persists proxy config to device. |
224 void PersistConfigToDevice(); | 220 void PersistConfigToDevice(); |
225 | 221 |
226 // Called from UI thread from the various UISetProxyConfigTo* | 222 // Called from UI thread from the various UISetProxyConfigTo* |
227 // |update_to_device| is true to persist new proxy config to device. | 223 // |update_to_device| is true to persist new proxy config to device. |
228 void OnUISetProxyConfig(bool update_to_device); | 224 void OnUISetProxyConfig(bool update_to_device); |
229 | 225 |
230 // Posted from UI thread to IO thread to carry the new config information. | 226 // Posted from UI thread to IO thread to carry the new config information. |
231 void IOSetProxyConfig(const ProxyConfig& new_config); | 227 void IOSetProxyConfig( |
| 228 const ProxyConfig& new_config, |
| 229 net::ProxyConfigService::ConfigAvailability new_availability); |
232 | 230 |
233 // Checks that method is called on BrowserThread::IO thread. | 231 // Checks that method is called on BrowserThread::IO thread. |
234 void CheckCurrentlyOnIOThread(); | 232 void CheckCurrentlyOnIOThread(); |
235 | 233 |
236 // Checks that method is called on BrowserThread::UI thread. | 234 // Checks that method is called on BrowserThread::UI thread. |
237 void CheckCurrentlyOnUIThread(); | 235 void CheckCurrentlyOnUIThread(); |
238 | 236 |
239 // Data members. | 237 // Data members. |
240 | 238 |
241 // True if tasks can be posted, which can only happen if constructor has | 239 // True if tasks can be posted, which can only happen if constructor has |
242 // completed (NewRunnableMethod cannot be created for a RefCountedThreadBase's | 240 // completed (NewRunnableMethod cannot be created for a RefCountedThreadBase's |
243 // method until the class's ref_count is at least one). | 241 // method until the class's ref_count is at least one). |
244 bool can_post_task_; | 242 bool can_post_task_; |
245 | 243 |
246 // True if config has been fetched from device or initialized properly. | 244 // Availability status of the configuration. |
247 bool has_config_; | 245 net::ProxyConfigService::ConfigAvailability config_availability_; |
248 | 246 |
249 // True if settings are to be persisted to device. | 247 // True if settings are to be persisted to device. |
250 bool persist_to_device_; | 248 bool persist_to_device_; |
251 | 249 |
252 // True if there's a pending operation to store proxy setting to device. | 250 // True if there's a pending operation to store proxy setting to device. |
253 bool persist_to_device_pending_; | 251 bool persist_to_device_pending_; |
254 | 252 |
255 // Cached proxy configuration, to be converted to net::ProxyConfig and | 253 // Cached proxy configuration, to be converted to net::ProxyConfig and |
256 // returned by IOGetProxyConfig. | 254 // returned by IOGetProxyConfig. |
257 // Initially populated from the UI thread, but afterwards only accessed from | 255 // Initially populated from the UI thread, but afterwards only accessed from |
(...skipping 12 matching lines...) Expand all Loading... |
270 // respectively. | 268 // respectively. |
271 scoped_refptr<SignedSettings> retrieve_property_op_; | 269 scoped_refptr<SignedSettings> retrieve_property_op_; |
272 scoped_refptr<SignedSettings> store_property_op_; | 270 scoped_refptr<SignedSettings> store_property_op_; |
273 | 271 |
274 DISALLOW_COPY_AND_ASSIGN(ProxyConfigServiceImpl); | 272 DISALLOW_COPY_AND_ASSIGN(ProxyConfigServiceImpl); |
275 }; | 273 }; |
276 | 274 |
277 } // namespace chromeos | 275 } // namespace chromeos |
278 | 276 |
279 #endif // CHROME_BROWSER_CHROMEOS_PROXY_CONFIG_SERVICE_IMPL_H_ | 277 #endif // CHROME_BROWSER_CHROMEOS_PROXY_CONFIG_SERVICE_IMPL_H_ |
OLD | NEW |