| Index: net/http/mock_http_cache.h
|
| diff --git a/net/http/mock_http_cache.h b/net/http/mock_http_cache.h
|
| deleted file mode 100644
|
| index bcc7925dec87b4670a42d6162958ed9d1f764158..0000000000000000000000000000000000000000
|
| --- a/net/http/mock_http_cache.h
|
| +++ /dev/null
|
| @@ -1,266 +0,0 @@
|
| -// Copyright (c) 2011 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.
|
| -
|
| -// This is a mock of the http cache and related testing classes. To be fair, it
|
| -// is not really a mock http cache given that it uses the real implementation of
|
| -// the http cache, but it has fake implementations of all required components,
|
| -// so it is useful for unit tests at the http layer.
|
| -
|
| -#ifndef NET_HTTP_MOCK_HTTP_CACHE_H_
|
| -#define NET_HTTP_MOCK_HTTP_CACHE_H_
|
| -
|
| -#include "base/containers/hash_tables.h"
|
| -#include "net/disk_cache/disk_cache.h"
|
| -#include "net/http/http_cache.h"
|
| -#include "net/http/http_transaction_test_util.h"
|
| -
|
| -//-----------------------------------------------------------------------------
|
| -// Mock disk cache (a very basic memory cache implementation).
|
| -
|
| -class MockDiskEntry : public disk_cache::Entry,
|
| - public base::RefCounted<MockDiskEntry> {
|
| - public:
|
| - explicit MockDiskEntry(const std::string& key);
|
| -
|
| - bool is_doomed() const { return doomed_; }
|
| -
|
| - void Doom() override;
|
| - void Close() override;
|
| - std::string GetKey() const override;
|
| - base::Time GetLastUsed() const override;
|
| - base::Time GetLastModified() const override;
|
| - int32 GetDataSize(int index) const override;
|
| - int ReadData(int index,
|
| - int offset,
|
| - net::IOBuffer* buf,
|
| - int buf_len,
|
| - const net::CompletionCallback& callback) override;
|
| - int WriteData(int index,
|
| - int offset,
|
| - net::IOBuffer* buf,
|
| - int buf_len,
|
| - const net::CompletionCallback& callback,
|
| - bool truncate) override;
|
| - int ReadSparseData(int64 offset,
|
| - net::IOBuffer* buf,
|
| - int buf_len,
|
| - const net::CompletionCallback& callback) override;
|
| - int WriteSparseData(int64 offset,
|
| - net::IOBuffer* buf,
|
| - int buf_len,
|
| - const net::CompletionCallback& callback) override;
|
| - int GetAvailableRange(int64 offset,
|
| - int len,
|
| - int64* start,
|
| - const net::CompletionCallback& callback) override;
|
| - bool CouldBeSparse() const override;
|
| - void CancelSparseIO() override;
|
| - int ReadyForSparseIO(
|
| - const net::CompletionCallback& completion_callback) override;
|
| -
|
| - // Fail most subsequent requests.
|
| - void set_fail_requests() { fail_requests_ = true; }
|
| -
|
| - void set_fail_sparse_requests() { fail_sparse_requests_ = true; }
|
| -
|
| - // If |value| is true, don't deliver any completion callbacks until called
|
| - // again with |value| set to false. Caution: remember to enable callbacks
|
| - // again or all subsequent tests will fail.
|
| - static void IgnoreCallbacks(bool value);
|
| -
|
| - private:
|
| - friend class base::RefCounted<MockDiskEntry>;
|
| - struct CallbackInfo;
|
| -
|
| - ~MockDiskEntry() override;
|
| -
|
| - // Unlike the callbacks for MockHttpTransaction, we want this one to run even
|
| - // if the consumer called Close on the MockDiskEntry. We achieve that by
|
| - // leveraging the fact that this class is reference counted.
|
| - void CallbackLater(const net::CompletionCallback& callback, int result);
|
| -
|
| - void RunCallback(const net::CompletionCallback& callback, int result);
|
| -
|
| - // When |store| is true, stores the callback to be delivered later; otherwise
|
| - // delivers any callback previously stored.
|
| - static void StoreAndDeliverCallbacks(bool store, MockDiskEntry* entry,
|
| - const net::CompletionCallback& callback,
|
| - int result);
|
| -
|
| - static const int kNumCacheEntryDataIndices = 3;
|
| -
|
| - std::string key_;
|
| - std::vector<char> data_[kNumCacheEntryDataIndices];
|
| - int test_mode_;
|
| - bool doomed_;
|
| - bool sparse_;
|
| - bool fail_requests_;
|
| - bool fail_sparse_requests_;
|
| - bool busy_;
|
| - bool delayed_;
|
| - static bool cancel_;
|
| - static bool ignore_callbacks_;
|
| -};
|
| -
|
| -class MockDiskCache : public disk_cache::Backend {
|
| - public:
|
| - MockDiskCache();
|
| - ~MockDiskCache() override;
|
| -
|
| - net::CacheType GetCacheType() const override;
|
| - int32 GetEntryCount() const override;
|
| - int OpenEntry(const std::string& key,
|
| - disk_cache::Entry** entry,
|
| - const net::CompletionCallback& callback) override;
|
| - int CreateEntry(const std::string& key,
|
| - disk_cache::Entry** entry,
|
| - const net::CompletionCallback& callback) override;
|
| - int DoomEntry(const std::string& key,
|
| - const net::CompletionCallback& callback) override;
|
| - int DoomAllEntries(const net::CompletionCallback& callback) override;
|
| - int DoomEntriesBetween(base::Time initial_time,
|
| - base::Time end_time,
|
| - const net::CompletionCallback& callback) override;
|
| - int DoomEntriesSince(base::Time initial_time,
|
| - const net::CompletionCallback& callback) override;
|
| - scoped_ptr<Iterator> CreateIterator() override;
|
| - void GetStats(
|
| - std::vector<std::pair<std::string, std::string>>* stats) override;
|
| - void OnExternalCacheHit(const std::string& key) override;
|
| -
|
| - // Returns number of times a cache entry was successfully opened.
|
| - int open_count() const { return open_count_; }
|
| -
|
| - // Returns number of times a cache entry was successfully created.
|
| - int create_count() const { return create_count_; }
|
| -
|
| - // Fail any subsequent CreateEntry and OpenEntry.
|
| - void set_fail_requests() { fail_requests_ = true; }
|
| -
|
| - // Return entries that fail some of their requests.
|
| - void set_soft_failures(bool value) { soft_failures_ = value; }
|
| -
|
| - // Makes sure that CreateEntry is not called twice for a given key.
|
| - void set_double_create_check(bool value) { double_create_check_ = value; }
|
| -
|
| - // Makes all requests for data ranges to fail as not implemented.
|
| - void set_fail_sparse_requests() { fail_sparse_requests_ = true; }
|
| -
|
| - void ReleaseAll();
|
| -
|
| - private:
|
| - typedef base::hash_map<std::string, MockDiskEntry*> EntryMap;
|
| - class NotImplementedIterator;
|
| -
|
| - void CallbackLater(const net::CompletionCallback& callback, int result);
|
| -
|
| - EntryMap entries_;
|
| - int open_count_;
|
| - int create_count_;
|
| - bool fail_requests_;
|
| - bool soft_failures_;
|
| - bool double_create_check_;
|
| - bool fail_sparse_requests_;
|
| -};
|
| -
|
| -class MockBackendFactory : public net::HttpCache::BackendFactory {
|
| - public:
|
| - int CreateBackend(net::NetLog* net_log,
|
| - scoped_ptr<disk_cache::Backend>* backend,
|
| - const net::CompletionCallback& callback) override;
|
| -};
|
| -
|
| -class MockHttpCache {
|
| - public:
|
| - MockHttpCache();
|
| - explicit MockHttpCache(net::HttpCache::BackendFactory* disk_cache_factory);
|
| -
|
| - net::HttpCache* http_cache() { return &http_cache_; }
|
| -
|
| - MockNetworkLayer* network_layer() {
|
| - return static_cast<MockNetworkLayer*>(http_cache_.network_layer());
|
| - }
|
| - MockDiskCache* disk_cache();
|
| -
|
| - // Wrapper around http_cache()->CreateTransaction(net::DEFAULT_PRIORITY...)
|
| - int CreateTransaction(scoped_ptr<net::HttpTransaction>* trans);
|
| -
|
| - // Wrapper to bypass the cache lock for new transactions.
|
| - void BypassCacheLock();
|
| -
|
| - // Wrapper to fail request conditionalization for new transactions.
|
| - void FailConditionalizations();
|
| -
|
| - // Helper function for reading response info from the disk cache.
|
| - static bool ReadResponseInfo(disk_cache::Entry* disk_entry,
|
| - net::HttpResponseInfo* response_info,
|
| - bool* response_truncated);
|
| -
|
| - // Helper function for writing response info into the disk cache.
|
| - static bool WriteResponseInfo(disk_cache::Entry* disk_entry,
|
| - const net::HttpResponseInfo* response_info,
|
| - bool skip_transient_headers,
|
| - bool response_truncated);
|
| -
|
| - // Helper function to synchronously open a backend entry.
|
| - bool OpenBackendEntry(const std::string& key, disk_cache::Entry** entry);
|
| -
|
| - // Helper function to synchronously create a backend entry.
|
| - bool CreateBackendEntry(const std::string& key, disk_cache::Entry** entry,
|
| - net::NetLog* net_log);
|
| -
|
| - // Returns the test mode after considering the global override.
|
| - static int GetTestMode(int test_mode);
|
| -
|
| - // Overrides the test mode for a given operation. Remember to reset it after
|
| - // the test! (by setting test_mode to zero).
|
| - static void SetTestMode(int test_mode);
|
| -
|
| - private:
|
| - net::HttpCache http_cache_;
|
| -};
|
| -
|
| -// This version of the disk cache doesn't invoke CreateEntry callbacks.
|
| -class MockDiskCacheNoCB : public MockDiskCache {
|
| - int CreateEntry(const std::string& key,
|
| - disk_cache::Entry** entry,
|
| - const net::CompletionCallback& callback) override;
|
| -};
|
| -
|
| -class MockBackendNoCbFactory : public net::HttpCache::BackendFactory {
|
| - public:
|
| - int CreateBackend(net::NetLog* net_log,
|
| - scoped_ptr<disk_cache::Backend>* backend,
|
| - const net::CompletionCallback& callback) override;
|
| -};
|
| -
|
| -// This backend factory allows us to control the backend instantiation.
|
| -class MockBlockingBackendFactory : public net::HttpCache::BackendFactory {
|
| - public:
|
| - MockBlockingBackendFactory();
|
| - ~MockBlockingBackendFactory() override;
|
| -
|
| - int CreateBackend(net::NetLog* net_log,
|
| - scoped_ptr<disk_cache::Backend>* backend,
|
| - const net::CompletionCallback& callback) override;
|
| -
|
| - // Completes the backend creation. Any blocked call will be notified via the
|
| - // provided callback.
|
| - void FinishCreation();
|
| -
|
| - scoped_ptr<disk_cache::Backend>* backend() { return backend_; }
|
| - void set_fail(bool fail) { fail_ = fail; }
|
| -
|
| - const net::CompletionCallback& callback() { return callback_; }
|
| -
|
| - private:
|
| - int Result() { return fail_ ? net::ERR_FAILED : net::OK; }
|
| -
|
| - scoped_ptr<disk_cache::Backend>* backend_;
|
| - net::CompletionCallback callback_;
|
| - bool block_;
|
| - bool fail_;
|
| -};
|
| -
|
| -#endif // NET_HTTP_MOCK_HTTP_CACHE_H_
|
|
|