summaryrefslogtreecommitdiffstats
path: root/net/proxy/proxy_service.cc
diff options
context:
space:
mode:
authorjochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-03 12:02:41 +0000
committerjochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-03 12:02:41 +0000
commit82a3767c45e85b77fb41d4fc92fc49fcb879e75b (patch)
treec1e8b1cc380f014a68c194929fb1abd799981cec /net/proxy/proxy_service.cc
parentef1cef9aef6034dda84cee719d2c9012bfb75a5e (diff)
downloadchromium_src-82a3767c45e85b77fb41d4fc92fc49fcb879e75b.zip
chromium_src-82a3767c45e85b77fb41d4fc92fc49fcb879e75b.tar.gz
chromium_src-82a3767c45e85b77fb41d4fc92fc49fcb879e75b.tar.bz2
Add a method for PAC script errors to the network delegate.
Also add a wrapper class to avoid passing around raw NULL pointers, and a bridge so I can invoke the method from other than the IO thread BUG=48930 TEST=net unittests Review URL: http://codereview.chromium.org/6822026 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@83881 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/proxy/proxy_service.cc')
-rw-r--r--net/proxy/proxy_service.cc18
1 files changed, 14 insertions, 4 deletions
diff --git a/net/proxy/proxy_service.cc b/net/proxy/proxy_service.cc
index ca3629e..75411c3 100644
--- a/net/proxy/proxy_service.cc
+++ b/net/proxy/proxy_service.cc
@@ -17,6 +17,7 @@
#include "net/base/net_util.h"
#include "net/proxy/init_proxy_resolver.h"
#include "net/proxy/multi_threaded_proxy_resolver.h"
+#include "net/proxy/network_delegate_error_observer.h"
#include "net/proxy/proxy_config_service_fixed.h"
#include "net/proxy/proxy_resolver.h"
#include "net/proxy/proxy_resolver_js_bindings.h"
@@ -168,7 +169,8 @@ class ProxyResolverFactoryForV8 : public ProxyResolverFactory {
// |async_host_resolver| will only be operated on |io_loop|.
ProxyResolverFactoryForV8(HostResolver* async_host_resolver,
MessageLoop* io_loop,
- NetLog* net_log)
+ NetLog* net_log,
+ NetworkDelegate* network_delegate)
: ProxyResolverFactory(true /*expects_pac_bytes*/),
async_host_resolver_(async_host_resolver),
io_loop_(io_loop),
@@ -181,8 +183,13 @@ class ProxyResolverFactoryForV8 : public ProxyResolverFactory {
SyncHostResolverBridge* sync_host_resolver =
new SyncHostResolverBridge(async_host_resolver_, io_loop_);
+ NetworkDelegateErrorObserver* error_observer =
+ new NetworkDelegateErrorObserver(network_delegate_, io_loop_);
+
+ // ProxyResolverJSBindings takes ownership of |error_observer|.
ProxyResolverJSBindings* js_bindings =
- ProxyResolverJSBindings::CreateDefault(sync_host_resolver, net_log_);
+ ProxyResolverJSBindings::CreateDefault(
+ sync_host_resolver, net_log_, error_observer);
// ProxyResolverV8 takes ownership of |js_bindings|.
return new ProxyResolverV8(js_bindings);
@@ -192,6 +199,7 @@ class ProxyResolverFactoryForV8 : public ProxyResolverFactory {
HostResolver* const async_host_resolver_;
MessageLoop* io_loop_;
NetLog* net_log_;
+ NetworkDelegate* network_delegate_;
};
// Creates ProxyResolvers using a platform-specific implementation.
@@ -395,7 +403,8 @@ ProxyService* ProxyService::CreateUsingV8ProxyResolver(
size_t num_pac_threads,
ProxyScriptFetcher* proxy_script_fetcher,
HostResolver* host_resolver,
- NetLog* net_log) {
+ NetLog* net_log,
+ NetworkDelegate* network_delegate) {
DCHECK(proxy_config_service);
DCHECK(proxy_script_fetcher);
DCHECK(host_resolver);
@@ -407,7 +416,8 @@ ProxyService* ProxyService::CreateUsingV8ProxyResolver(
new ProxyResolverFactoryForV8(
host_resolver,
MessageLoop::current(),
- net_log);
+ net_log,
+ network_delegate);
ProxyResolver* proxy_resolver =
new MultiThreadedProxyResolver(sync_resolver_factory, num_pac_threads);