Remove the HostResolverImpl::Shutdown() method.

This was originally needed to avoid crashing when the HostResolverImpl was being leaked, by forcing things to a "shutdown" state.
However since HostResolverImpl is no longer reference counted, this work-around is no longer necessary.

The other place that HostResolver::Shutdown() was used, was in SyncHostResolverBridge. It overrode it to unblock synchronous host resolves and avoid deadlock during shutdown. To accomodate this user, I added a separate interface (SyncHostResolver) to expose the shutdown method.

Lastly, fixed a leak of SyncHostResolverBridge by moving ownership of the dependency into ProxyResolverJSBindings.

BUG=74572,76427,18373

Review URL: http://codereview.chromium.org/7046097

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@89167 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/net/proxy/proxy_resolver_js_bindings.h b/net/proxy/proxy_resolver_js_bindings.h
index d2a53d1..8d7e916 100644
--- a/net/proxy/proxy_resolver_js_bindings.h
+++ b/net/proxy/proxy_resolver_js_bindings.h
@@ -17,6 +17,7 @@
 class NetLog;
 class ProxyResolverErrorObserver;
 struct ProxyResolverRequestContext;
+class SyncHostResolver;
 
 // Interface for the javascript bindings.
 class NET_TEST ProxyResolverJSBindings {
@@ -65,10 +66,10 @@
   //   - Send script alert()s to both VLOG(1) and the NetLog.
   //   - Use the provided host resolver to service dnsResolve().
   //
-  // Note that |host_resolver| will be used in sync mode mode.
-  // Takes ownership of |error_observer| which might be NULL.
+  // Takes ownership of |host_resolver| and |error_observer| (the latter can
+  // be NULL).
   static ProxyResolverJSBindings* CreateDefault(
-      HostResolver* host_resolver,
+      SyncHostResolver* host_resolver,
       NetLog* net_log,
       ProxyResolverErrorObserver* error_observer);