| // Copyright 2022 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CONTENT_BROWSER_PRELOADING_PROXY_LOOKUP_CLIENT_IMPL_H_ |
| #define CONTENT_BROWSER_PRELOADING_PROXY_LOOKUP_CLIENT_IMPL_H_ |
| |
| #include <optional> |
| |
| #include "base/functional/callback_forward.h" |
| #include "content/common/content_export.h" |
| #include "mojo/public/cpp/bindings/receiver.h" |
| #include "services/network/public/mojom/proxy_lookup_client.mojom.h" |
| |
| class GURL; |
| |
| namespace network::mojom { |
| class NetworkContext; |
| } // namespace network::mojom |
| |
| namespace content { |
| |
| // This class looks up if there is a proxy set up for the given URL in the given |
| // NetworkContext. Instances of this class must be deleted immediately after the |
| // callback is invoked. |
| class CONTENT_EXPORT ProxyLookupClientImpl |
| : public network::mojom::ProxyLookupClient { |
| public: |
| using ProxyLookupCallback = base::OnceCallback<void(bool has_proxy)>; |
| |
| // Starts the proxy lookup for |url| in |network_context|. Once the lookup is |
| // completed, |callback| will be invoked. |
| ProxyLookupClientImpl(const GURL& url, |
| ProxyLookupCallback callback, |
| network::mojom::NetworkContext* network_context); |
| ProxyLookupClientImpl( |
| const GURL& url, |
| const net::NetworkAnonymizationKey network_anonymization_key, |
| ProxyLookupCallback callback, |
| network::mojom::NetworkContext* network_context); |
| |
| ~ProxyLookupClientImpl() override; |
| |
| ProxyLookupClientImpl(const ProxyLookupClientImpl&) = delete; |
| ProxyLookupClientImpl& operator=(const ProxyLookupClientImpl&) = delete; |
| |
| // network::mojom::ProxyLookupClient |
| void OnProxyLookupComplete( |
| int32_t net_error, |
| const std::optional<net::ProxyInfo>& proxy_info) override; |
| |
| private: |
| mojo::Receiver<network::mojom::ProxyLookupClient> receiver_{this}; |
| ProxyLookupCallback callback_; |
| }; |
| |
| } // namespace content |
| |
| #endif // CONTENT_BROWSER_PRELOADING_PROXY_LOOKUP_CLIENT_IMPL_H_ |