> proxyRules = schemeProxies[";"<schemeProxies>]
> schemeProxies = [<urlScheme>"="]<proxyURIList>
> urlScheme = "http" | "https" | "ftp" | "socks"
> proxyURIList = <proxyURL>[","<proxyURIList>]
> proxyURL = [<proxyScheme>"://"]<proxyHost>[":"<proxyPort>]

atom/browser/api/atom_api_session.cc
public:
  ResolveProxyHelper(AtomBrowserContext* browser_context,
                     const GURL& url,
                     Session::ResolveProxyCallback callback)
      : callback_(callback),
        original_thread_(base::ThreadTaskRunnerHandle::Get()) {
    scoped_refptr<net::URLRequestContextGetter> context_getter =
        browser_context->url_request_context_getter();
    context_getter->GetNetworkTaskRunner()->PostTask(
        FROM_HERE,
        base::Bind(&ResolveProxyHelper::ResolveProxy,
                   base::Unretained(this), context_getter, url));
  }
  void OnResolveProxyCompleted(int result) {
    std::string proxy;
    if (result == net::OK)
      proxy = proxy_info_.ToPacString();
    original_thread_->PostTask(FROM_HERE,
                               base::Bind(callback_, proxy));
    delete this;
  }
 private:
  void ResolveProxy(scoped_refptr<net::URLRequestContextGetter> context_getter,