blob: c5e158c325d382202b3aba8316e364d4c31876fc [file] [log] [blame]
// Copyright 2014 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 STORAGE_BROWSER_TEST_MOCK_QUOTA_CLIENT_H_
#define STORAGE_BROWSER_TEST_MOCK_QUOTA_CLIENT_H_
#include <stddef.h>
#include <stdint.h>
#include <map>
#include <set>
#include <string>
#include <utility>
#include "base/compiler_specific.h"
#include "base/containers/span.h"
#include "base/macros.h"
#include "base/memory/scoped_refptr.h"
#include "base/memory/weak_ptr.h"
#include "base/time/time.h"
#include "components/services/storage/public/mojom/quota_client.mojom.h"
#include "storage/browser/quota/quota_client_type.h"
#include "third_party/blink/public/common/storage_key/storage_key.h"
#include "third_party/blink/public/mojom/quota/quota_types.mojom.h"
namespace storage {
class QuotaManagerProxy;
struct MockStorageKeyData {
const char* origin;
blink::mojom::StorageType type;
int64_t usage;
};
// Mock QuotaClient implementation for testing.
class MockQuotaClient : public mojom::QuotaClient {
public:
MockQuotaClient(scoped_refptr<QuotaManagerProxy> quota_manager_proxy,
base::span<const MockStorageKeyData> mock_data,
QuotaClientType client_type);
~MockQuotaClient() override;
// To add or modify mock data in this client.
void AddStorageKeyAndNotify(const blink::StorageKey& storage_key,
blink::mojom::StorageType type,
int64_t size);
void ModifyStorageKeyAndNotify(const blink::StorageKey& storage_key,
blink::mojom::StorageType type,
int64_t delta);
void TouchAllStorageKeysAndNotify();
void AddStorageKeyToErrorSet(const blink::StorageKey& storage_key,
blink::mojom::StorageType type);
base::Time IncrementMockTime();
// QuotaClient.
void GetStorageKeyUsage(const blink::StorageKey& storage_key,
blink::mojom::StorageType type,
GetStorageKeyUsageCallback callback) override;
void GetStorageKeysForType(blink::mojom::StorageType type,
GetStorageKeysForTypeCallback callback) override;
void GetStorageKeysForHost(blink::mojom::StorageType type,
const std::string& host,
GetStorageKeysForHostCallback callback) override;
void DeleteStorageKeyData(const blink::StorageKey& storage_key,
blink::mojom::StorageType type,
DeleteStorageKeyDataCallback callback) override;
void PerformStorageCleanup(blink::mojom::StorageType type,
PerformStorageCleanupCallback callback) override;
private:
void RunGetStorageKeyUsage(const blink::StorageKey& storage_key,
blink::mojom::StorageType type,
GetStorageKeyUsageCallback callback);
void RunGetStorageKeysForType(blink::mojom::StorageType type,
GetStorageKeysForTypeCallback callback);
void RunGetStorageKeysForHost(blink::mojom::StorageType type,
const std::string& host,
GetStorageKeysForTypeCallback callback);
void RunDeleteStorageKeyData(const blink::StorageKey& storage_key,
blink::mojom::StorageType type,
DeleteStorageKeyDataCallback callback);
const scoped_refptr<QuotaManagerProxy> quota_manager_proxy_;
const QuotaClientType client_type_;
std::map<std::pair<blink::StorageKey, blink::mojom::StorageType>, int64_t>
storage_key_data_;
std::set<std::pair<blink::StorageKey, blink::mojom::StorageType>>
error_storage_keys_;
int mock_time_counter_;
base::WeakPtrFactory<MockQuotaClient> weak_factory_{this};
DISALLOW_COPY_AND_ASSIGN(MockQuotaClient);
};
} // namespace storage
#endif // STORAGE_BROWSER_TEST_MOCK_QUOTA_CLIENT_H_