#include "browser/atom_browser_context.h"
#include "browser/browser.h"
#include "common/node_bindings.h"
+#include "net/proxy/proxy_resolver_v8.h"
#include "vendor/node/src/node.h"
#include "vendor/node/src/node_internals.h"
#endif
}
+int AtomBrowserMainParts::PreCreateThreads() {
+#if defined(OS_WIN)
+ net::ProxyResolverV8::CreateIsolate();
+#else
+ net::ProxyResolverV8::RememberDefaultIsolate();
+#endif
+ return 0;
+}
+
} // namespace atom
#include "net/http/http_auth_handler_factory.h"
#include "net/http/http_cache.h"
#include "net/http/http_server_properties_impl.h"
+#include "net/proxy/dhcp_proxy_script_fetcher_factory.h"
+#include "net/proxy/proxy_config_service.h"
+#include "net/proxy/proxy_script_fetcher_impl.h"
#include "net/proxy/proxy_service.h"
+#include "net/proxy/proxy_service_v8.h"
#include "net/ssl/default_server_bound_cert_store.h"
#include "net/ssl/server_bound_cert_service.h"
#include "net/ssl/ssl_config_service_defaults.h"
network_delegate_(network_delegate.Pass()) {
// Must first be created on the UI thread.
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+
std::swap(protocol_handlers_, *protocol_handlers);
+
+ // We must create the proxy config service on the UI loop on Linux because it
+ // must synchronously run on the glib message loop. This will be passed to
+ // the URLRequestContextStorage on the IO thread in GetURLRequestContext().
proxy_config_service_.reset(
net::ProxyService::CreateSystemProxyConfigService(
io_loop_->message_loop_proxy(),
net::HostResolver::CreateDefaultResolver(NULL));
storage_->set_cert_verifier(net::CertVerifier::CreateDefault());
- // TODO(jam): use v8 if possible, look at chrome code.
- storage_->set_proxy_service(
- net::ProxyService::CreateUsingSystemProxyResolver(
- proxy_config_service_.release(),
- 0,
- NULL));
storage_->set_ssl_config_service(new net::SSLConfigServiceDefaults);
storage_->set_http_auth_handler_factory(
net::HttpAuthHandlerFactory::CreateDefault(host_resolver.get()));
network_session_params.host_resolver =
url_request_context_->host_resolver();
+ net::DhcpProxyScriptFetcherFactory dhcp_factory;
+ storage_->set_proxy_service(
+ net::CreateProxyServiceUsingV8ProxyResolver(
+ proxy_config_service_.release(),
+ new net::ProxyScriptFetcherImpl(url_request_context_.get()),
+ dhcp_factory.Create(url_request_context_.get()),
+ url_request_context_->host_resolver(),
+ NULL,
+ url_request_context_->network_delegate()));
+
net::HttpCache* main_cache = new net::HttpCache(
network_session_params, main_backend);
storage_->set_http_transaction_factory(main_cache);