| Index: components/browsing_data/conditional_cache_deletion_helper.cc
|
| diff --git a/components/browsing_data/conditional_cache_deletion_helper.cc b/components/browsing_data/conditional_cache_deletion_helper.cc
|
| deleted file mode 100644
|
| index 3d1e0f9b8658c94d829d099f4aedd7d62955fe9f..0000000000000000000000000000000000000000
|
| --- a/components/browsing_data/conditional_cache_deletion_helper.cc
|
| +++ /dev/null
|
| @@ -1,96 +0,0 @@
|
| -// Copyright 2016 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.
|
| -
|
| -#include "components/browsing_data/conditional_cache_deletion_helper.h"
|
| -
|
| -#include "base/callback.h"
|
| -#include "base/location.h"
|
| -#include "base/single_thread_task_runner.h"
|
| -#include "base/threading/thread_task_runner_handle.h"
|
| -#include "content/public/browser/browser_thread.h"
|
| -
|
| -namespace {
|
| -
|
| -bool EntryPredicateFromURLsAndTime(
|
| - const base::Callback<bool(const GURL&)>& url_predicate,
|
| - const base::Time& begin_time,
|
| - const base::Time& end_time,
|
| - const disk_cache::Entry* entry) {
|
| - return (entry->GetLastModified() >= begin_time &&
|
| - entry->GetLastModified() < end_time &&
|
| - url_predicate.Run(GURL(entry->GetKey())));
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -namespace browsing_data {
|
| -
|
| -ConditionalCacheDeletionHelper::ConditionalCacheDeletionHelper(
|
| - disk_cache::Backend* cache,
|
| - const base::Callback<bool(const disk_cache::Entry*)>& condition)
|
| - : cache_(cache),
|
| - condition_(condition),
|
| - current_entry_(nullptr),
|
| - previous_entry_(nullptr) {
|
| - DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
|
| -}
|
| -
|
| -// static
|
| -base::Callback<bool(const disk_cache::Entry*)>
|
| -ConditionalCacheDeletionHelper::CreateURLAndTimeCondition(
|
| - const base::Callback<bool(const GURL&)>& url_predicate,
|
| - const base::Time& begin_time,
|
| - const base::Time& end_time) {
|
| - return base::Bind(
|
| - &EntryPredicateFromURLsAndTime,
|
| - url_predicate,
|
| - begin_time.is_null() ? base::Time() : begin_time,
|
| - end_time.is_null() ? base::Time::Max() : end_time);
|
| -}
|
| -
|
| -int ConditionalCacheDeletionHelper::DeleteAndDestroySelfWhenFinished(
|
| - const net::CompletionCallback& completion_callback) {
|
| - DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
|
| -
|
| - completion_callback_ = completion_callback;
|
| - iterator_ = cache_->CreateIterator();
|
| -
|
| - IterateOverEntries(net::OK);
|
| - return net::ERR_IO_PENDING;
|
| -}
|
| -
|
| -ConditionalCacheDeletionHelper::~ConditionalCacheDeletionHelper() {
|
| -}
|
| -
|
| -void ConditionalCacheDeletionHelper::IterateOverEntries(int error) {
|
| - while (error != net::ERR_IO_PENDING) {
|
| - // If the entry obtained in the previous iteration matches the condition,
|
| - // mark it for deletion. The iterator is already one step forward, so it
|
| - // won't be invalidated. Always close the previous entry so it does not
|
| - // leak.
|
| - if (previous_entry_) {
|
| - if (condition_.Run(previous_entry_))
|
| - previous_entry_->Doom();
|
| - previous_entry_->Close();
|
| - }
|
| -
|
| - if (error == net::ERR_FAILED) {
|
| - // The iteration finished successfuly or we can no longer iterate
|
| - // (e.g. the cache was destroyed). We cannot distinguish between the two,
|
| - // but we know that there is nothing more that we can do, so we return OK.
|
| - base::MessageLoop::current()->task_runner()->PostTask(
|
| - FROM_HERE, base::Bind(completion_callback_, net::OK));
|
| - base::ThreadTaskRunnerHandle::Get()->DeleteSoon(FROM_HERE, this);
|
| - return;
|
| - }
|
| -
|
| - previous_entry_ = current_entry_;
|
| - error = iterator_->OpenNextEntry(
|
| - ¤t_entry_,
|
| - base::Bind(&ConditionalCacheDeletionHelper::IterateOverEntries,
|
| - base::Unretained(this)));
|
| - }
|
| -}
|
| -
|
| -} // namespace browsing_data
|
|
|