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
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_CHROMEOS_PROXY_CONFIG_SERVICE_H_
6#define CHROME_BROWSER_CHROMEOS_PROXY_CONFIG_SERVICE_H_
7#pragma once
8
9#include "chrome/browser/chromeos/proxy_config_service_impl.h"
10
11namespace chromeos {
12
13// Wrapper class for the RefCountedThreadSafe chromeos::ProxyConfigServiceImpl
14// that forwards net::ProxyConfigService interface to the actual implementation,
15// instantiated in ProfileIOData::CreateProxyConfigService.
16class ProxyConfigService : public net::ProxyConfigService {
17 public:
18  explicit ProxyConfigService(const scoped_refptr<ProxyConfigServiceImpl>& impl)
19      : impl_(impl) {}
20  virtual ~ProxyConfigService() {}
21
22  // ProxyConfigService methods.  Called from IO thread.
23  virtual void AddObserver(Observer* observer) {
24    impl_->AddObserver(observer);
25  }
26  virtual void RemoveObserver(Observer* observer) {
27    impl_->RemoveObserver(observer);
28  }
29  virtual ConfigAvailability GetLatestProxyConfig(net::ProxyConfig* config) {
30    return impl_->IOGetProxyConfig(config);
31  }
32
33 private:
34  scoped_refptr<ProxyConfigServiceImpl> impl_;
35
36  DISALLOW_COPY_AND_ASSIGN(ProxyConfigService);
37};
38
39}  // namespace chromeos
40
41#endif  // CHROME_BROWSER_CHROMEOS_PROXY_CONFIG_SERVICE_H_
42