15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef NET_PROXY_PROXY_RESOLVER_ERROR_OBSERVER_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NET_PROXY_PROXY_RESOLVER_ERROR_OBSERVER_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h"
95e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles)#include "base/strings/string16.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/base/net_export.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace net {
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Interface for observing JavaScript error messages from PAC scripts.
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class NET_EXPORT_PRIVATE ProxyResolverErrorObserver {
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ProxyResolverErrorObserver() {}
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~ProxyResolverErrorObserver() {}
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Handler for when an error is encountered. |line_number| may be -1
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // if a line number is not applicable to this error. |error| is a message
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // describing the error.
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  //
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Note on threading: This may get called from a worker thread. If the
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // backing proxy resolver is ProxyResolverV8Tracing, then it will not
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // be called concurrently, however it will be called from a different
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // thread than the proxy resolver's origin thread.
28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void OnPACScriptError(int line_number,
29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                const base::string16& error) = 0;
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(ProxyResolverErrorObserver);
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace net
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // NET_PROXY_PROXY_RESOLVER_ERROR_OBSERVER_H_
38