1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- // Copyright 2018 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef SERVICES_NETWORK_CONDITIONAL_CACHE_DELETION_HELPER_H_
- #define SERVICES_NETWORK_CONDITIONAL_CACHE_DELETION_HELPER_H_
- #include <memory>
- #include "base/callback_forward.h"
- #include "base/memory/raw_ptr.h"
- #include "base/memory/weak_ptr.h"
- #include "base/task/sequenced_task_runner_helpers.h"
- #include "net/base/net_errors.h"
- #include "net/disk_cache/disk_cache.h"
- #include "url/gurl.h"
- namespace disk_cache {
- class Entry;
- }
- namespace network {
- // Helper to remove HTTP cache data.
- class ConditionalCacheDeletionHelper {
- public:
- // Creates a helper to delete |cache| entries whose last modified time is
- // between |begin_time| (inclusively), |end_time| (exclusively) and whose URL
- // is matched by the |url_matcher|. Note that |begin_time| and |end_time| can
- // be null to indicate unbounded time interval in their respective direction.
- // Starts the deletion and calls |completion_callback| when done.
- static std::unique_ptr<ConditionalCacheDeletionHelper> CreateAndStart(
- disk_cache::Backend* cache,
- const base::RepeatingCallback<bool(const GURL&)>& url_matcher,
- const base::Time& begin_time,
- const base::Time& end_time,
- base::OnceClosure completion_callback);
- ConditionalCacheDeletionHelper(const ConditionalCacheDeletionHelper&) =
- delete;
- ConditionalCacheDeletionHelper& operator=(
- const ConditionalCacheDeletionHelper&) = delete;
- ~ConditionalCacheDeletionHelper();
- private:
- ConditionalCacheDeletionHelper(
- const base::RepeatingCallback<bool(const disk_cache::Entry*)>& condition,
- base::OnceClosure completion_callback,
- std::unique_ptr<disk_cache::Backend::Iterator> iterator);
- void IterateOverEntries(disk_cache::EntryResult result);
- void NotifyCompletion();
- const base::RepeatingCallback<bool(const disk_cache::Entry*)> condition_;
- base::OnceClosure completion_callback_;
- std::unique_ptr<disk_cache::Backend::Iterator> iterator_;
- raw_ptr<disk_cache::Entry> previous_entry_ = nullptr;
- base::WeakPtrFactory<ConditionalCacheDeletionHelper> weak_factory_{this};
- };
- } // namespace network
- #endif // SERVICES_NETWORK_CONDITIONAL_CACHE_DELETION_HELPER_H_
|