Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(119)

Unified Diff: components/browsing_data/storage_partition_http_cache_data_remover.cc

Issue 2127403002: Make browsing_data component a layered component (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removed output_name from components/browsing_data/content/BUILD.gn Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/browsing_data/storage_partition_http_cache_data_remover.h ('k') | components/components.gyp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/browsing_data/storage_partition_http_cache_data_remover.cc
diff --git a/components/browsing_data/storage_partition_http_cache_data_remover.cc b/components/browsing_data/storage_partition_http_cache_data_remover.cc
deleted file mode 100644
index fabde8efbcfce6ca2636db93fa7c009b449be9de..0000000000000000000000000000000000000000
--- a/components/browsing_data/storage_partition_http_cache_data_remover.cc
+++ /dev/null
@@ -1,310 +0,0 @@
-// Copyright 2015 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/storage_partition_http_cache_data_remover.h"
-
-#include "base/location.h"
-#include "base/single_thread_task_runner.h"
-#include "base/threading/thread_task_runner_handle.h"
-#include "components/browsing_data/conditional_cache_deletion_helper.h"
-#include "content/public/browser/browser_thread.h"
-#include "content/public/browser/storage_partition.h"
-#include "net/base/sdch_manager.h"
-#include "net/disk_cache/blockfile/backend_impl.h"
-#include "net/disk_cache/disk_cache.h"
-#include "net/disk_cache/memory/mem_backend_impl.h"
-#include "net/disk_cache/simple/simple_backend_impl.h"
-#include "net/http/http_cache.h"
-#include "net/url_request/url_request_context.h"
-#include "net/url_request/url_request_context_getter.h"
-
-using content::BrowserThread;
-
-namespace browsing_data {
-
-StoragePartitionHttpCacheDataRemover::StoragePartitionHttpCacheDataRemover(
- base::Callback<bool(const GURL&)> url_predicate,
- base::Time delete_begin,
- base::Time delete_end,
- net::URLRequestContextGetter* main_context_getter,
- net::URLRequestContextGetter* media_context_getter)
- : url_predicate_(url_predicate),
- delete_begin_(delete_begin),
- delete_end_(delete_end),
- main_context_getter_(main_context_getter),
- media_context_getter_(media_context_getter),
- next_cache_state_(STATE_NONE),
- cache_(nullptr),
- calculation_result_(0) {
-}
-
-StoragePartitionHttpCacheDataRemover::~StoragePartitionHttpCacheDataRemover() {
-}
-
-// static.
-StoragePartitionHttpCacheDataRemover*
-StoragePartitionHttpCacheDataRemover::CreateForRange(
- content::StoragePartition* storage_partition,
- base::Time delete_begin,
- base::Time delete_end) {
- return new StoragePartitionHttpCacheDataRemover(
- base::Callback<bool(const GURL&)>(), // Null callback.
- delete_begin, delete_end,
- storage_partition->GetURLRequestContext(),
- storage_partition->GetMediaURLRequestContext());
-}
-
-// static.
-StoragePartitionHttpCacheDataRemover*
-StoragePartitionHttpCacheDataRemover::CreateForURLsAndRange(
- content::StoragePartition* storage_partition,
- const base::Callback<bool(const GURL&)>& url_predicate,
- base::Time delete_begin,
- base::Time delete_end) {
- return new StoragePartitionHttpCacheDataRemover(
- url_predicate, delete_begin, delete_end,
- storage_partition->GetURLRequestContext(),
- storage_partition->GetMediaURLRequestContext());
-}
-
-void StoragePartitionHttpCacheDataRemover::Remove(
- const base::Closure& done_callback) {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
- DCHECK(!done_callback.is_null());
- done_callback_ = done_callback;
-
- BrowserThread::PostTask(
- BrowserThread::IO, FROM_HERE,
- base::Bind(
- &StoragePartitionHttpCacheDataRemover::ClearHttpCacheOnIOThread,
- base::Unretained(this)));
-}
-
-void StoragePartitionHttpCacheDataRemover::Count(
- const net::Int64CompletionCallback& result_callback) {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
- DCHECK(!result_callback.is_null());
- result_callback_ = result_callback;
- calculation_result_ = 0;
-
- BrowserThread::PostTask(
- BrowserThread::IO, FROM_HERE,
- base::Bind(
- &StoragePartitionHttpCacheDataRemover::CountHttpCacheOnIOThread,
- base::Unretained(this)));
-}
-
-void StoragePartitionHttpCacheDataRemover::ClearHttpCacheOnIOThread() {
- DCHECK_CURRENTLY_ON(BrowserThread::IO);
- next_cache_state_ = STATE_NONE;
- DCHECK_EQ(STATE_NONE, next_cache_state_);
- DCHECK(main_context_getter_.get());
- DCHECK(media_context_getter_.get());
-
- next_cache_state_ = STATE_CREATE_MAIN;
- DoClearCache(net::OK);
-}
-
-void StoragePartitionHttpCacheDataRemover::CountHttpCacheOnIOThread() {
- DCHECK_CURRENTLY_ON(BrowserThread::IO);
- next_cache_state_ = STATE_NONE;
- DCHECK_EQ(STATE_NONE, next_cache_state_);
- DCHECK(main_context_getter_.get());
- DCHECK(media_context_getter_.get());
-
- next_cache_state_ = STATE_CREATE_MAIN;
- DoCountCache(net::OK);
-}
-
-void StoragePartitionHttpCacheDataRemover::ClearedHttpCache() {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
- done_callback_.Run();
- base::ThreadTaskRunnerHandle::Get()->DeleteSoon(FROM_HERE, this);
-}
-
-void StoragePartitionHttpCacheDataRemover::CountedHttpCache() {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
- result_callback_.Run(calculation_result_);
- base::ThreadTaskRunnerHandle::Get()->DeleteSoon(FROM_HERE, this);
-}
-
-// The expected state sequence is STATE_NONE --> STATE_CREATE_MAIN -->
-// STATE_PROCESS_MAIN --> STATE_CREATE_MEDIA --> STATE_PROCESS_MEDIA -->
-// STATE_DONE, and any errors are ignored.
-void StoragePartitionHttpCacheDataRemover::DoClearCache(int rv) {
- DCHECK_NE(STATE_NONE, next_cache_state_);
-
- while (rv != net::ERR_IO_PENDING && next_cache_state_ != STATE_NONE) {
- switch (next_cache_state_) {
- case STATE_CREATE_MAIN:
- case STATE_CREATE_MEDIA: {
- // Get a pointer to the cache.
- net::URLRequestContextGetter* getter =
- (next_cache_state_ == STATE_CREATE_MAIN)
- ? main_context_getter_.get()
- : media_context_getter_.get();
- net::HttpCache* http_cache = getter->GetURLRequestContext()
- ->http_transaction_factory()
- ->GetCache();
-
- next_cache_state_ = (next_cache_state_ == STATE_CREATE_MAIN)
- ? STATE_PROCESS_MAIN
- : STATE_PROCESS_MEDIA;
-
- // Clear QUIC server information from memory and the disk cache.
- http_cache->GetSession()
- ->quic_stream_factory()
- ->ClearCachedStatesInCryptoConfig();
-
- // Clear SDCH dictionary state.
- net::SdchManager* sdch_manager =
- getter->GetURLRequestContext()->sdch_manager();
- // The test is probably overkill, since chrome should always have an
- // SdchManager. But in general the URLRequestContext is *not*
- // guaranteed to have an SdchManager, so checking is wise.
- if (sdch_manager)
- sdch_manager->ClearData();
-
- rv = http_cache->GetBackend(
- &cache_,
- base::Bind(&StoragePartitionHttpCacheDataRemover::DoClearCache,
- base::Unretained(this)));
- break;
- }
- case STATE_PROCESS_MAIN:
- case STATE_PROCESS_MEDIA: {
- next_cache_state_ = (next_cache_state_ == STATE_PROCESS_MAIN)
- ? STATE_CREATE_MEDIA
- : STATE_DONE;
-
- // |cache_| can be null if it cannot be initialized.
- if (cache_) {
- if (!url_predicate_.is_null()) {
- rv = (new ConditionalCacheDeletionHelper(
- cache_,
- ConditionalCacheDeletionHelper::CreateURLAndTimeCondition(
- url_predicate_,
- delete_begin_,
- delete_end_)))->DeleteAndDestroySelfWhenFinished(
- base::Bind(
- &StoragePartitionHttpCacheDataRemover::DoClearCache,
- base::Unretained(this)));
- } else if (delete_begin_.is_null() && delete_end_.is_max()) {
- rv = cache_->DoomAllEntries(base::Bind(
- &StoragePartitionHttpCacheDataRemover::DoClearCache,
- base::Unretained(this)));
- } else {
- rv = cache_->DoomEntriesBetween(
- delete_begin_, delete_end_,
- base::Bind(
- &StoragePartitionHttpCacheDataRemover::DoClearCache,
- base::Unretained(this)));
- }
- cache_ = NULL;
- }
- break;
- }
- case STATE_DONE: {
- cache_ = NULL;
- next_cache_state_ = STATE_NONE;
-
- // Notify the UI thread that we are done.
- BrowserThread::PostTask(
- BrowserThread::UI, FROM_HERE,
- base::Bind(&StoragePartitionHttpCacheDataRemover::ClearedHttpCache,
- base::Unretained(this)));
- return;
- }
- default: {
- NOTREACHED() << "bad state";
- next_cache_state_ = STATE_NONE; // Stop looping.
- return;
- }
- }
- }
-}
-
-// The expected state sequence is STATE_NONE --> STATE_CREATE_MAIN -->
-// STATE_PROCESS_MAIN --> STATE_CREATE_MEDIA --> STATE_PROCESS_MEDIA -->
-// STATE_DONE. On error, we jump directly to STATE_DONE.
-void StoragePartitionHttpCacheDataRemover::DoCountCache(int rv) {
- DCHECK_NE(STATE_NONE, next_cache_state_);
-
- while (rv != net::ERR_IO_PENDING && next_cache_state_ != STATE_NONE) {
- // On error, finish and return the error code. A valid result value might
- // be of two types - either net::OK from the CREATE states, or the result
- // of calculation from the PROCESS states. Since net::OK == 0, it is valid
- // to simply add the value to the final calculation result.
- if (rv < 0) {
- calculation_result_ = rv;
- next_cache_state_ = STATE_DONE;
- } else {
- DCHECK_EQ(0, net::OK);
- calculation_result_ += rv;
- }
-
- switch (next_cache_state_) {
- case STATE_CREATE_MAIN:
- case STATE_CREATE_MEDIA: {
- // Get a pointer to the cache.
- net::URLRequestContextGetter* getter =
- (next_cache_state_ == STATE_CREATE_MAIN)
- ? main_context_getter_.get()
- : media_context_getter_.get();
- net::HttpCache* http_cache = getter->GetURLRequestContext()
- ->http_transaction_factory()
- ->GetCache();
-
- next_cache_state_ = (next_cache_state_ == STATE_CREATE_MAIN)
- ? STATE_PROCESS_MAIN
- : STATE_PROCESS_MEDIA;
-
- rv = http_cache->GetBackend(
- &cache_,
- base::Bind(&StoragePartitionHttpCacheDataRemover::DoCountCache,
- base::Unretained(this)));
- break;
- }
- case STATE_PROCESS_MAIN:
- case STATE_PROCESS_MEDIA: {
- next_cache_state_ = (next_cache_state_ == STATE_PROCESS_MAIN)
- ? STATE_CREATE_MEDIA
- : STATE_DONE;
-
- // |cache_| can be null if it cannot be initialized.
- if (cache_) {
- if (delete_begin_.is_null() && delete_end_.is_max()) {
- rv = cache_->CalculateSizeOfAllEntries(
- base::Bind(
- &StoragePartitionHttpCacheDataRemover::DoCountCache,
- base::Unretained(this)));
- } else {
- // TODO(msramek): Implement this when we need it.
- DoCountCache(net::ERR_NOT_IMPLEMENTED);
- }
- cache_ = NULL;
- }
- break;
- }
- case STATE_DONE: {
- cache_ = NULL;
- next_cache_state_ = STATE_NONE;
-
- // Notify the UI thread that we are done.
- BrowserThread::PostTask(
- BrowserThread::UI, FROM_HERE,
- base::Bind(&StoragePartitionHttpCacheDataRemover::CountedHttpCache,
- base::Unretained(this)));
- return;
- }
- default: {
- NOTREACHED() << "bad state";
- next_cache_state_ = STATE_NONE; // Stop looping.
- return;
- }
- }
- }
-}
-
-} // namespace browsing_data
« no previous file with comments | « components/browsing_data/storage_partition_http_cache_data_remover.h ('k') | components/components.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698