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 NET_PROXY_NETWORK_DELEGATE_ERROR_OBSERVER_H_
6#define NET_PROXY_NETWORK_DELEGATE_ERROR_OBSERVER_H_
7
8#include "base/compiler_specific.h"
9#include "base/memory/ref_counted.h"
10#include "net/proxy/proxy_resolver_error_observer.h"
11
12namespace base {
13class MessageLoopProxy;
14}
15
16namespace net {
17
18class NetworkDelegate;
19
20// An implementation of ProxyResolverErrorObserver that forwards PAC script
21// errors to a NetworkDelegate object on the thread it lives on.
22class NET_EXPORT_PRIVATE NetworkDelegateErrorObserver
23    : public ProxyResolverErrorObserver {
24 public:
25  NetworkDelegateErrorObserver(NetworkDelegate* network_delegate,
26                               base::MessageLoopProxy* origin_loop);
27  virtual ~NetworkDelegateErrorObserver();
28
29  // ProxyResolverErrorObserver implementation.
30  virtual void OnPACScriptError(int line_number, const base::string16& error)
31      OVERRIDE;
32
33 private:
34  class Core;
35
36  scoped_refptr<Core> core_;
37
38  DISALLOW_COPY_AND_ASSIGN(NetworkDelegateErrorObserver);
39};
40
41}  // namespace net
42
43#endif  // NET_PROXY_NETWORK_DELEGATE_ERROR_OBSERVER_H_
44