From f6c9d56c4b81eb282e591cc079622697ed99b5ed Mon Sep 17 00:00:00 2001 From: "rvargas@google.com" Date: Tue, 15 Jan 2013 19:28:13 +0000 Subject: Http Cache: Release all references to buffers before invoking callbacks. BUG=131272 TEST=net_unittests Review URL: https://codereview.chromium.org/11854020 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@176951 0039d316-1c4b-4281-b951-d872f2087c98 --- net/disk_cache/entry_unittest.cc | 20 +------------------- 1 file changed, 1 insertion(+), 19 deletions(-) (limited to 'net/disk_cache') diff --git a/net/disk_cache/entry_unittest.cc b/net/disk_cache/entry_unittest.cc index 7a581bd..6438f2e 100644 --- a/net/disk_cache/entry_unittest.cc +++ b/net/disk_cache/entry_unittest.cc @@ -510,24 +510,6 @@ TEST_F(DiskCacheEntryTest, MemoryOnlyExternalAsyncIO) { ExternalAsyncIO(); } -// Makes sure that the buffer is not referenced when the callback runs. -class ReleaseBufferCompletionCallback: public net::TestCompletionCallback { - public: - explicit ReleaseBufferCompletionCallback(net::IOBuffer* buffer) - : buffer_(buffer) { - } - - private: - virtual void SetResult(int result) OVERRIDE { - if (!buffer_->HasOneRef()) - result = net::ERR_FAILED; - TestCompletionCallback::SetResult(result); - } - - net::IOBuffer* buffer_; - DISALLOW_COPY_AND_ASSIGN(ReleaseBufferCompletionCallback); -}; - // Tests that IOBuffers are not referenced after IO completes. void DiskCacheEntryTest::ReleaseBuffer() { disk_cache::Entry* entry = NULL; @@ -538,7 +520,7 @@ void DiskCacheEntryTest::ReleaseBuffer() { scoped_refptr buffer(new net::IOBuffer(kBufferSize)); CacheTestFillBuffer(buffer->data(), kBufferSize, false); - ReleaseBufferCompletionCallback cb(buffer); + net::ReleaseBufferCompletionCallback cb(buffer); int rv = entry->WriteData(0, 0, buffer, kBufferSize, cb.callback(), false); EXPECT_EQ(kBufferSize, cb.GetResult(rv)); entry->Close(); -- cgit v1.1