cert_net_fetcher_url_request.h 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. // Copyright 2015 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef NET_CERT_NET_CERT_NET_FETCHER_URL_REQUEST_H_
  5. #define NET_CERT_NET_CERT_NET_FETCHER_URL_REQUEST_H_
  6. #include "base/memory/raw_ptr.h"
  7. #include "base/memory/ref_counted.h"
  8. #include "net/base/net_export.h"
  9. #include "net/cert/cert_net_fetcher.h"
  10. namespace base {
  11. class SingleThreadTaskRunner;
  12. }
  13. namespace net {
  14. class URLRequestContext;
  15. // A CertNetFetcher that issues requests through the provided
  16. // URLRequestContext. The URLRequestContext must stay valid until the returned
  17. // CertNetFetcher's Shutdown method is called. The CertNetFetcher is to be
  18. // created and shutdown on the network thread. Its Fetch methods are to be used
  19. // on a *different* thread, since it gives a blocking interface to URL fetching.
  20. class NET_EXPORT CertNetFetcherURLRequest : public CertNetFetcher {
  21. public:
  22. class AsyncCertNetFetcherURLRequest;
  23. class RequestCore;
  24. struct RequestParams;
  25. // Creates the CertNetFetcherURLRequest. SetURLRequestContext must be called
  26. // before the fetcher can be used.
  27. CertNetFetcherURLRequest();
  28. // Set the URLRequestContext this fetcher should use.
  29. // |context_| must stay valid until Shutdown() is called.
  30. void SetURLRequestContext(URLRequestContext* context);
  31. // Returns the default timeout value. Intended for test use only.
  32. static base::TimeDelta GetDefaultTimeoutForTesting();
  33. // CertNetFetcher impl:
  34. void Shutdown() override;
  35. std::unique_ptr<Request> FetchCaIssuers(const GURL& url,
  36. int timeout_milliseconds,
  37. int max_response_bytes) override;
  38. std::unique_ptr<Request> FetchCrl(const GURL& url,
  39. int timeout_milliseconds,
  40. int max_response_bytes) override;
  41. [[nodiscard]] std::unique_ptr<Request> FetchOcsp(
  42. const GURL& url,
  43. int timeout_milliseconds,
  44. int max_response_bytes) override;
  45. private:
  46. ~CertNetFetcherURLRequest() override;
  47. void DoFetchOnNetworkSequence(std::unique_ptr<RequestParams> request_params,
  48. scoped_refptr<RequestCore> request);
  49. std::unique_ptr<Request> DoFetch(
  50. std::unique_ptr<RequestParams> request_params);
  51. scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
  52. // Not owned. |context_| must stay valid until Shutdown() is called.
  53. raw_ptr<URLRequestContext> context_ = nullptr;
  54. std::unique_ptr<AsyncCertNetFetcherURLRequest> impl_;
  55. };
  56. } // namespace net
  57. #endif // NET_CERT_NET_CERT_NET_FETCHER_URL_REQUEST_H_