http_cache_data_remover.h 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. // Copyright 2018 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 SERVICES_NETWORK_HTTP_CACHE_DATA_REMOVER_H_
  5. #define SERVICES_NETWORK_HTTP_CACHE_DATA_REMOVER_H_
  6. #include <memory>
  7. #include "base/callback_forward.h"
  8. #include "base/component_export.h"
  9. #include "base/memory/weak_ptr.h"
  10. #include "base/time/time.h"
  11. #include "services/network/conditional_cache_deletion_helper.h"
  12. #include "services/network/public/mojom/network_service.mojom.h"
  13. #include "url/gurl.h"
  14. namespace disk_cache {
  15. class Backend;
  16. }
  17. namespace net {
  18. class URLRequestContext;
  19. }
  20. namespace network {
  21. // Helper to remove data from the HTTP cache.
  22. class COMPONENT_EXPORT(NETWORK_SERVICE) HttpCacheDataRemover {
  23. public:
  24. using HttpCacheDataRemoverCallback =
  25. base::OnceCallback<void(HttpCacheDataRemover*)>;
  26. // Creates an HttpCacheDataRemover that starts deleting cache entries in the
  27. // time range between |delete_begin| (inclusively) and |delete_end|
  28. // (exclusively) and that are matched by |url_filter|. Invokes |done_callback|
  29. // when finished.
  30. // Note that deletion with URL filtering is not built in to the cache
  31. // interface and might be slow.
  32. static std::unique_ptr<HttpCacheDataRemover> CreateAndStart(
  33. net::URLRequestContext* url_request_context,
  34. mojom::ClearDataFilterPtr url_filter,
  35. base::Time delete_begin,
  36. base::Time delete_end,
  37. HttpCacheDataRemoverCallback done_callback);
  38. HttpCacheDataRemover(const HttpCacheDataRemover&) = delete;
  39. HttpCacheDataRemover& operator=(const HttpCacheDataRemover&) = delete;
  40. ~HttpCacheDataRemover();
  41. private:
  42. HttpCacheDataRemover(mojom::ClearDataFilterPtr url_filter,
  43. base::Time delete_begin,
  44. base::Time delete_end,
  45. HttpCacheDataRemoverCallback done_callback);
  46. void CacheRetrieved(int rv);
  47. void ClearHttpCacheDone(int rv);
  48. base::RepeatingCallback<bool(const GURL&)> url_matcher_;
  49. const base::Time delete_begin_;
  50. const base::Time delete_end_;
  51. HttpCacheDataRemoverCallback done_callback_;
  52. disk_cache::Backend* backend_;
  53. std::unique_ptr<ConditionalCacheDeletionHelper> deletion_helper_;
  54. base::WeakPtrFactory<HttpCacheDataRemover> weak_factory_{this};
  55. };
  56. } // namespace network
  57. #endif // SERVICES_NETWORK_HTTP_CACHE_DATA_REMOVER_H_