1 // Copyright 2011 The Chromium Authors 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_RESOLUTION_NETWORK_DELEGATE_ERROR_OBSERVER_H_ 6 #define NET_PROXY_RESOLUTION_NETWORK_DELEGATE_ERROR_OBSERVER_H_ 7 8 #include <memory> 9 10 #include "base/compiler_specific.h" 11 #include "base/memory/scoped_refptr.h" 12 #include "net/base/net_export.h" 13 #include "net/proxy_resolution/proxy_resolver_error_observer.h" 14 15 namespace base { 16 class SingleThreadTaskRunner; 17 } 18 19 namespace net { 20 21 class NetworkDelegate; 22 23 // An implementation of ProxyResolverErrorObserver that forwards PAC script 24 // errors to a NetworkDelegate object on the thread it lives on. 25 class NET_EXPORT_PRIVATE NetworkDelegateErrorObserver 26 : public ProxyResolverErrorObserver { 27 public: 28 NetworkDelegateErrorObserver(NetworkDelegate* network_delegate, 29 base::SingleThreadTaskRunner* origin_runner); 30 31 NetworkDelegateErrorObserver(const NetworkDelegateErrorObserver&) = delete; 32 NetworkDelegateErrorObserver& operator=(const NetworkDelegateErrorObserver&) = 33 delete; 34 35 ~NetworkDelegateErrorObserver() override; 36 37 static std::unique_ptr<ProxyResolverErrorObserver> Create( 38 NetworkDelegate* network_delegate, 39 const scoped_refptr<base::SingleThreadTaskRunner>& origin_runner); 40 41 // ProxyResolverErrorObserver implementation. 42 void OnPACScriptError(int line_number, const std::u16string& error) override; 43 44 private: 45 class Core; 46 47 scoped_refptr<Core> core_; 48 }; 49 50 } // namespace net 51 52 #endif // NET_PROXY_RESOLUTION_NETWORK_DELEGATE_ERROR_OBSERVER_H_ 53