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

Unified Diff: net/http/mock_http_cache.h

Issue 2970133002: DoomPartialEntry should not attempt to doom an already doomed entry. (Closed)
Patch Set: Test and test framework changes added. Created 3 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
Index: net/http/mock_http_cache.h
diff --git a/net/http/mock_http_cache.h b/net/http/mock_http_cache.h
index ca0730429f7b401e18987acdf31a3859991b62f0..6f8ed65744e5466fc0d82ddce0098f2b1c975d43 100644
--- a/net/http/mock_http_cache.h
+++ b/net/http/mock_http_cache.h
@@ -27,6 +27,10 @@ namespace net {
class MockDiskEntry : public disk_cache::Entry,
public base::RefCounted<MockDiskEntry> {
public:
+ // If |*defer| is set to true, the transaction will wait until
+ // ResumeCacheOperation is called before accessing the cache.
+ typedef base::Callback<void(bool* defer)> BeforeCacheOperationCallback;
jkarlin 2017/07/07 19:12:39 Using instead of typedef
jkarlin 2017/07/07 19:12:39 Instead of passing back a bool* defer (we always s
shivanisha 2017/07/10 18:51:27 MockHttpCache needs to keep track of doomed entrie
+
explicit MockDiskEntry(const std::string& key);
bool is_doomed() const { return doomed_; }
@@ -74,6 +78,14 @@ class MockDiskEntry : public disk_cache::Entry,
// again or all subsequent tests will fail.
static void IgnoreCallbacks(bool value);
+ // Sets the callback to be invoked before cache operation.
+ void SetBeforeCacheOperationCallback(
jkarlin 2017/07/07 19:12:39 Name is too general, specifically this is for Read
shivanisha 2017/07/10 18:51:27 Removed this for simplicity and using a DeferOp en
+ const BeforeCacheOperationCallback& callback);
+
+ // Resume deferred cache operation by posting |resume_callback_| with
+ // |resume_return_code_|. Returns ERR_IO_PENDING.
+ int ResumeCacheOperation();
jkarlin 2017/07/07 19:12:39 BeforeCacheOperationCallback could be passed a cal
shivanisha 2017/07/10 18:51:27 The latest changes probably make this not applicab
+
private:
friend class base::RefCounted<MockDiskEntry>;
struct CallbackInfo;
@@ -106,6 +118,13 @@ class MockDiskEntry : public disk_cache::Entry,
bool busy_;
bool delayed_;
bool cancel_;
+
+ // TODO(shivanisha): Currently this is only used for ReadData. Extend to
+ // other cache operations as well.
+ BeforeCacheOperationCallback before_cache_callback_;
+ CompletionCallback resume_callback_; // used for pause and restart.
+ int resume_return_code_;
+
static bool ignore_callbacks_;
};
@@ -160,6 +179,15 @@ class MockDiskCache : public disk_cache::Backend {
bool IsDiskEntryDoomed(const std::string& key);
+ // Add the cache operation callback to the entry.
+ void SetBeforeCacheOperationCallback(
+ const std::string& key,
+ const MockDiskEntry::BeforeCacheOperationCallback& callback);
+
+ // Resume deferred cache operation on entry with |key|.
+ int ResumeCacheOperation(const std::string& key);
+ int ResumeDoomedEntryCacheOperation(const std::string& key);
+
private:
using EntryMap = std::unordered_map<std::string, MockDiskEntry*>;
class NotImplementedIterator;
@@ -167,6 +195,7 @@ class MockDiskCache : public disk_cache::Backend {
void CallbackLater(const CompletionCallback& callback, int result);
EntryMap entries_;
+ EntryMap doomed_entries_;
int open_count_;
int create_count_;
bool fail_requests_;
@@ -240,7 +269,6 @@ class MockHttpCache {
static void SetTestMode(int test_mode);
// Functions to test the state of ActiveEntry.
-
bool IsWriterPresent(const std::string& key);
bool IsHeadersTransactionPresent(const std::string& key);
int GetCountReaders(const std::string& key);

Powered by Google App Engine
This is Rietveld 408576698