blob: e45307db299a2eb815205461da8bafdff1faf34c [file] [log] [blame]
// 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.
#ifndef CHROME_BROWSER_STORAGE_STORAGE_INFO_FETCHER_H_
#define CHROME_BROWSER_STORAGE_STORAGE_INFO_FETCHER_H_
#include "base/memory/ref_counted.h"
#include "storage/browser/quota/quota_callbacks.h"
#include "third_party/blink/public/mojom/quota/quota_types.mojom-forward.h"
namespace storage {
class QuotaManager;
}
class Profile;
// Asynchronously fetches the amount of storage used by websites.
class StorageInfoFetcher :
public base::RefCountedThreadSafe<StorageInfoFetcher> {
public:
using FetchCallback =
base::Callback<void(const storage::UsageInfoEntries&)>;
using ClearCallback =
base::Callback<void(blink::mojom::QuotaStatusCode code)>;
explicit StorageInfoFetcher(Profile* profile);
// Asynchronously fetches the StorageInfo.
void FetchStorageInfo(const FetchCallback& fetch_callback);
// Asynchronously clears storage for the given host.
void ClearStorage(const std::string& host,
blink::mojom::StorageType type,
const ClearCallback& clear_callback);
private:
virtual ~StorageInfoFetcher();
friend class base::RefCountedThreadSafe<StorageInfoFetcher>;
// Fetches the usage information.
void GetUsageInfo(storage::GetUsageInfoCallback callback);
// Called when usage information is available.
void OnGetUsageInfoInternal(storage::UsageInfoEntries entries);
// Reports back to all observers that information is available.
void OnFetchCompleted();
// Called when usage has been cleared.
void OnUsageClearedInternal(blink::mojom::QuotaStatusCode code);
// Reports back to all observers that storage has been deleted.
void OnClearCompleted(blink::mojom::QuotaStatusCode code);
// The quota manager to use to calculate the storage usage.
storage::QuotaManager* quota_manager_;
// Hosts and their usage.
storage::UsageInfoEntries entries_;
// The storage type to delete.
blink::mojom::StorageType type_to_delete_;
// The callback to use when fetching is complete.
FetchCallback fetch_callback_;
// The callback to use when storage has been cleared.
ClearCallback clear_callback_;
DISALLOW_COPY_AND_ASSIGN(StorageInfoFetcher);
};
#endif // CHROME_BROWSER_STORAGE_STORAGE_INFO_FETCHER_H_