Chromium Code Reviews| Index: webkit/appcache/appcache_response_unittest.cc |
| diff --git a/webkit/appcache/appcache_response_unittest.cc b/webkit/appcache/appcache_response_unittest.cc |
| index ae75a4bf9ab63a703c9b1654da0618a83acd179f..d1dc8f187dc0ade97944445e2d18c915c8b2eaf1 100644 |
| --- a/webkit/appcache/appcache_response_unittest.cc |
| +++ b/webkit/appcache/appcache_response_unittest.cc |
| @@ -6,6 +6,9 @@ |
| #include <string> |
| #include <utility> |
| +#include "base/bind.h" |
| +#include "base/bind_helpers.h" |
| +#include "base/callback.h" |
| #include "base/compiler_specific.h" |
| #include "base/pickle.h" |
| #include "base/threading/thread.h" |
| @@ -116,10 +119,9 @@ class AppCacheResponseTest : public testing::Test { |
| void TearDownTest() { |
| DCHECK(MessageLoop::current() == io_thread_->message_loop()); |
| - while (!task_stack_.empty()) { |
| - delete task_stack_.top().first; |
| + while (!task_stack_.empty()) |
| task_stack_.pop(); |
|
csilv
2011/11/10 23:47:02
(commentary: too bad std::stack doesn't have a cle
|
| - } |
| + |
| reader_.reset(); |
| read_buffer_ = NULL; |
| read_info_buffer_ = NULL; |
| @@ -134,8 +136,9 @@ class AppCacheResponseTest : public testing::Test { |
| // We unwind the stack prior to finishing up to let stack |
| // based objects get deleted. |
| DCHECK(MessageLoop::current() == io_thread_->message_loop()); |
| - MessageLoop::current()->PostTask(FROM_HERE, |
| - NewRunnableMethod(this, &AppCacheResponseTest::TestFinishedUnwound)); |
| + MessageLoop::current()->PostTask( |
| + FROM_HERE, base::Bind(&AppCacheResponseTest::TestFinishedUnwound, |
| + base::Unretained(this))); |
| } |
| void TestFinishedUnwound() { |
| @@ -143,12 +146,12 @@ class AppCacheResponseTest : public testing::Test { |
| test_finished_event_->Signal(); |
| } |
| - void PushNextTask(Task* task) { |
| - task_stack_.push(std::pair<Task*, bool>(task, false)); |
| + void PushNextTask(const base::Closure& task) { |
| + task_stack_.push(std::pair<base::Closure, bool>(task, false)); |
| } |
| - void PushNextTaskAsImmediate(Task* task) { |
| - task_stack_.push(std::pair<Task*, bool>(task, true)); |
| + void PushNextTaskAsImmediate(const base::Closure& task) { |
| + task_stack_.push(std::pair<base::Closure, bool>(task, true)); |
| } |
| void ScheduleNextTask() { |
| @@ -157,13 +160,13 @@ class AppCacheResponseTest : public testing::Test { |
| TestFinished(); |
| return; |
| } |
| - scoped_ptr<Task> task(task_stack_.top().first); |
| + base::Closure task = task_stack_.top().first; |
| bool immediate = task_stack_.top().second; |
| task_stack_.pop(); |
| if (immediate) |
| - task->Run(); |
| + task.Run(); |
| else |
| - MessageLoop::current()->PostTask(FROM_HERE, task.release()); |
| + MessageLoop::current()->PostTask(FROM_HERE, task); |
| } |
| // Wrappers to call AppCacheResponseReader/Writer Read and Write methods |
| @@ -183,9 +186,8 @@ class AppCacheResponseTest : public testing::Test { |
| IOBuffer* body, int body_len) { |
| DCHECK(body); |
| scoped_refptr<IOBuffer> body_ref(body); |
| - PushNextTask(NewRunnableMethod( |
| - this, &AppCacheResponseTest::WriteResponseBody, |
| - body_ref, body_len)); |
| + PushNextTask(base::Bind(&AppCacheResponseTest::WriteResponseBody, |
| + base::Unretained(this), body_ref, body_len)); |
| WriteResponseHead(head); |
| } |
| @@ -309,10 +311,10 @@ class AppCacheResponseTest : public testing::Test { |
| GURL(), 0, kNoSuchResponseId)); |
| // Push tasks in reverse order |
| - PushNextTask(NewRunnableMethod( |
| - this, &AppCacheResponseTest::ReadNonExistentData)); |
| - PushNextTask(NewRunnableMethod( |
| - this, &AppCacheResponseTest::ReadNonExistentInfo)); |
| + PushNextTask(base::Bind(&AppCacheResponseTest::ReadNonExistentData, |
| + base::Unretained(this))); |
| + PushNextTask(base::Bind(&AppCacheResponseTest::ReadNonExistentInfo, |
| + base::Unretained(this))); |
| ScheduleNextTask(); |
| } |
| @@ -334,8 +336,8 @@ class AppCacheResponseTest : public testing::Test { |
| // LoadResponseInfo_Miss ---------------------------------------------------- |
| void LoadResponseInfo_Miss() { |
| - PushNextTask(NewRunnableMethod( |
| - this, &AppCacheResponseTest::LoadResponseInfo_Miss_Verify)); |
| + PushNextTask(base::Bind(&AppCacheResponseTest::LoadResponseInfo_Miss_Verify, |
| + base::Unretained(this))); |
| service_->storage()->LoadResponseInfo(GURL(), 0, kNoSuchResponseId, |
| storage_delegate_.get()); |
| } |
| @@ -353,8 +355,8 @@ class AppCacheResponseTest : public testing::Test { |
| // a. headers |
| // b. body |
| // 2. Use LoadResponseInfo to read the response headers back out |
| - PushNextTask(NewRunnableMethod( |
| - this, &AppCacheResponseTest::LoadResponseInfo_Hit_Step2)); |
| + PushNextTask(base::Bind(&AppCacheResponseTest::LoadResponseInfo_Hit_Step2, |
| + base::Unretained(this))); |
| writer_.reset(service_->storage()->CreateResponseWriter(GURL(), 0)); |
| written_response_id_ = writer_->response_id(); |
| WriteBasicResponse(); |
| @@ -362,8 +364,8 @@ class AppCacheResponseTest : public testing::Test { |
| void LoadResponseInfo_Hit_Step2() { |
| writer_.reset(); |
| - PushNextTask(NewRunnableMethod( |
| - this, &AppCacheResponseTest::LoadResponseInfo_Hit_Verify)); |
| + PushNextTask(base::Bind(&AppCacheResponseTest::LoadResponseInfo_Hit_Verify, |
| + base::Unretained(this))); |
| service_->storage()->LoadResponseInfo(GURL(), 0, written_response_id_, |
| storage_delegate_.get()); |
| } |
| @@ -390,15 +392,14 @@ class AppCacheResponseTest : public testing::Test { |
| GetHttpResponseInfoSize(head) + kNumBlocks * kBlockSize; |
| // Push tasks in reverse order. |
| - PushNextTask(NewRunnableMethod( |
| - this, &AppCacheResponseTest::Verify_AmountWritten, |
| - expected_amount_written)); |
| + PushNextTask(base::Bind(&AppCacheResponseTest::Verify_AmountWritten, |
| + base::Unretained(this), expected_amount_written)); |
| for (int i = 0; i < kNumBlocks; ++i) { |
| - PushNextTask(NewRunnableMethod( |
| - this, &AppCacheResponseTest::WriteOneBlock, kNumBlocks - i)); |
| + PushNextTask(base::Bind(&AppCacheResponseTest::WriteOneBlock, |
| + base::Unretained(this), kNumBlocks - i)); |
| } |
| - PushNextTask(NewRunnableMethod( |
| - this, &AppCacheResponseTest::WriteResponseHead, head)); |
| + PushNextTask(base::Bind(&AppCacheResponseTest::WriteResponseHead, |
| + base::Unretained(this), head)); |
| writer_.reset(service_->storage()->CreateResponseWriter(GURL(), 0)); |
| written_response_id_ = writer_->response_id(); |
| @@ -424,22 +425,22 @@ class AppCacheResponseTest : public testing::Test { |
| // 6. Attempt to read beyond EOF of a range. |
| // Push tasks in reverse order |
| - PushNextTask(NewRunnableMethod( |
| - this, &AppCacheResponseTest::ReadRangeFullyBeyondEOF)); |
| - PushNextTask(NewRunnableMethod( |
| - this, &AppCacheResponseTest::ReadRangePartiallyBeyondEOF)); |
| - PushNextTask(NewRunnableMethod( |
| - this, &AppCacheResponseTest::ReadPastEOF)); |
| - PushNextTask(NewRunnableMethod( |
| - this, &AppCacheResponseTest::ReadRange)); |
| - PushNextTask(NewRunnableMethod( |
| - this, &AppCacheResponseTest::ReadPastEOF)); |
| - PushNextTask(NewRunnableMethod( |
| - this, &AppCacheResponseTest::ReadAllAtOnce)); |
| - PushNextTask(NewRunnableMethod( |
| - this, &AppCacheResponseTest::ReadInBlocks)); |
| - PushNextTask(NewRunnableMethod( |
| - this, &AppCacheResponseTest::WriteOutBlocks)); |
| + PushNextTask(base::Bind(&AppCacheResponseTest::ReadRangeFullyBeyondEOF, |
| + base::Unretained(this))); |
| + PushNextTask(base::Bind(&AppCacheResponseTest::ReadRangePartiallyBeyondEOF, |
| + base::Unretained(this))); |
| + PushNextTask(base::Bind(&AppCacheResponseTest::ReadPastEOF, |
| + base::Unretained(this))); |
| + PushNextTask(base::Bind(&AppCacheResponseTest::ReadRange, |
| + base::Unretained(this))); |
| + PushNextTask(base::Bind(&AppCacheResponseTest::ReadPastEOF, |
| + base::Unretained(this))); |
| + PushNextTask(base::Bind(&AppCacheResponseTest::ReadAllAtOnce, |
| + base::Unretained(this))); |
| + PushNextTask(base::Bind(&AppCacheResponseTest::ReadInBlocks, |
| + base::Unretained(this))); |
| + PushNextTask(base::Bind(&AppCacheResponseTest::WriteOutBlocks, |
| + base::Unretained(this))); |
| // Get them going. |
| ScheduleNextTask(); |
| @@ -449,8 +450,8 @@ class AppCacheResponseTest : public testing::Test { |
| writer_.reset(service_->storage()->CreateResponseWriter(GURL(), 0)); |
| written_response_id_ = writer_->response_id(); |
| for (int i = 0; i < kNumBlocks; ++i) { |
| - PushNextTask(NewRunnableMethod( |
| - this, &AppCacheResponseTest::WriteOneBlock, kNumBlocks - i)); |
| + PushNextTask(base::Bind(&AppCacheResponseTest::WriteOneBlock, |
| + base::Unretained(this), kNumBlocks - i)); |
| } |
| ScheduleNextTask(); |
| } |
| @@ -467,15 +468,15 @@ class AppCacheResponseTest : public testing::Test { |
| reader_.reset(service_->storage()->CreateResponseReader( |
| GURL(), 0, written_response_id_)); |
| for (int i = 0; i < kNumBlocks; ++i) { |
| - PushNextTask(NewRunnableMethod( |
| - this, &AppCacheResponseTest::ReadOneBlock, kNumBlocks - i)); |
| + PushNextTask(base::Bind(&AppCacheResponseTest::ReadOneBlock, |
| + base::Unretained(this), kNumBlocks - i)); |
| } |
| ScheduleNextTask(); |
| } |
| void ReadOneBlock(int block_number) { |
| - PushNextTask(NewRunnableMethod( |
| - this, &AppCacheResponseTest::VerifyOneBlock, block_number)); |
| + PushNextTask(base::Bind(&AppCacheResponseTest::VerifyOneBlock, |
| + base::Unretained(this), block_number)); |
| ReadResponseBody(new IOBuffer(kBlockSize), kBlockSize); |
| } |
| @@ -485,8 +486,8 @@ class AppCacheResponseTest : public testing::Test { |
| } |
| void ReadAllAtOnce() { |
| - PushNextTask(NewRunnableMethod( |
| - this, &AppCacheResponseTest::VerifyAllAtOnce)); |
| + PushNextTask(base::Bind(&AppCacheResponseTest::VerifyAllAtOnce, |
| + base::Unretained(this))); |
| reader_.reset(service_->storage()->CreateResponseReader( |
| GURL(), 0, written_response_id_)); |
| int big_size = kNumBlocks * kBlockSize; |
| @@ -509,8 +510,8 @@ class AppCacheResponseTest : public testing::Test { |
| } |
| void ReadRange() { |
| - PushNextTask(NewRunnableMethod( |
| - this, &AppCacheResponseTest::VerifyRange)); |
| + PushNextTask(base::Bind(&AppCacheResponseTest::VerifyRange, |
| + base::Unretained(this))); |
| reader_.reset(service_->storage()->CreateResponseReader( |
| GURL(), 0, written_response_id_)); |
| reader_->SetReadRange(kBlockSize, kBlockSize); |
| @@ -523,8 +524,8 @@ class AppCacheResponseTest : public testing::Test { |
| } |
| void ReadRangePartiallyBeyondEOF() { |
| - PushNextTask(NewRunnableMethod( |
| - this, &AppCacheResponseTest::VerifyRangeBeyondEOF)); |
| + PushNextTask(base::Bind(&AppCacheResponseTest::VerifyRangeBeyondEOF, |
| + base::Unretained(this))); |
| reader_.reset(service_->storage()->CreateResponseReader( |
| GURL(), 0, written_response_id_)); |
| reader_->SetReadRange(kBlockSize, kNumBlocks * kBlockSize); |
| @@ -553,10 +554,12 @@ class AppCacheResponseTest : public testing::Test { |
| // 2. Read and verify several blocks in similarly chaining reads. |
| // Push tasks in reverse order |
| - PushNextTaskAsImmediate(NewRunnableMethod( |
| - this, &AppCacheResponseTest::ReadInBlocksImmediately)); |
| - PushNextTaskAsImmediate(NewRunnableMethod( |
| - this, &AppCacheResponseTest::WriteOutBlocksImmediately)); |
| + PushNextTaskAsImmediate( |
| + base::Bind(&AppCacheResponseTest::ReadInBlocksImmediately, |
| + base::Unretained(this))); |
| + PushNextTaskAsImmediate( |
| + base::Bind(&AppCacheResponseTest::WriteOutBlocksImmediately, |
| + base::Unretained(this))); |
| // Get them going. |
| ScheduleNextTask(); |
| @@ -566,8 +569,9 @@ class AppCacheResponseTest : public testing::Test { |
| writer_.reset(service_->storage()->CreateResponseWriter(GURL(), 0)); |
| written_response_id_ = writer_->response_id(); |
| for (int i = 0; i < kNumBlocks; ++i) { |
| - PushNextTaskAsImmediate(NewRunnableMethod( |
| - this, &AppCacheResponseTest::WriteOneBlock, kNumBlocks - i)); |
| + PushNextTaskAsImmediate( |
| + base::Bind(&AppCacheResponseTest::WriteOneBlock, |
| + base::Unretained(this), kNumBlocks - i)); |
| } |
| ScheduleNextTask(); |
| } |
| @@ -577,16 +581,17 @@ class AppCacheResponseTest : public testing::Test { |
| reader_.reset(service_->storage()->CreateResponseReader( |
| GURL(), 0, written_response_id_)); |
| for (int i = 0; i < kNumBlocks; ++i) { |
| - PushNextTaskAsImmediate(NewRunnableMethod( |
| - this, &AppCacheResponseTest::ReadOneBlockImmediately, |
| + PushNextTaskAsImmediate( |
| + base::Bind(&AppCacheResponseTest::ReadOneBlockImmediately, |
| + base::Unretained(this), |
| kNumBlocks - i)); |
| } |
| ScheduleNextTask(); |
| } |
| void ReadOneBlockImmediately(int block_number) { |
| - PushNextTaskAsImmediate(NewRunnableMethod( |
| - this, &AppCacheResponseTest::VerifyOneBlock, block_number)); |
| + PushNextTaskAsImmediate(base::Bind(&AppCacheResponseTest::VerifyOneBlock, |
| + base::Unretained(this), block_number)); |
| ReadResponseBody(new IOBuffer(kBlockSize), kBlockSize); |
| } |
| @@ -602,10 +607,10 @@ class AppCacheResponseTest : public testing::Test { |
| should_delete_writer_in_completion_callback_ = true; |
| writer_deletion_count_down_ = kNumBlocks; |
| - PushNextTask(NewRunnableMethod( |
| - this, &AppCacheResponseTest::ReadInBlocks)); |
| - PushNextTask(NewRunnableMethod( |
| - this, &AppCacheResponseTest::WriteOutBlocks)); |
| + PushNextTask(base::Bind(&AppCacheResponseTest::ReadInBlocks, |
| + base::Unretained(this))); |
| + PushNextTask(base::Bind(&AppCacheResponseTest::WriteOutBlocks, |
| + base::Unretained(this))); |
| ScheduleNextTask(); |
| } |
| @@ -614,12 +619,12 @@ class AppCacheResponseTest : public testing::Test { |
| // 1. Write a few blocks normally. |
| // 2. Start a write, delete with it pending. |
| // 3. Start a read, delete with it pending. |
| - PushNextTask(NewRunnableMethod( |
| - this, &AppCacheResponseTest::ReadThenDelete)); |
| - PushNextTask(NewRunnableMethod( |
| - this, &AppCacheResponseTest::WriteThenDelete)); |
| - PushNextTask(NewRunnableMethod( |
| - this, &AppCacheResponseTest::WriteOutBlocks)); |
| + PushNextTask(base::Bind(&AppCacheResponseTest::ReadThenDelete, |
| + base::Unretained(this))); |
| + PushNextTask(base::Bind(&AppCacheResponseTest::WriteThenDelete, |
| + base::Unretained(this))); |
| + PushNextTask(base::Bind(&AppCacheResponseTest::WriteOutBlocks, |
| + base::Unretained(this))); |
| ScheduleNextTask(); |
| } |
| @@ -640,8 +645,9 @@ class AppCacheResponseTest : public testing::Test { |
| reader_.reset(); |
| // Wait a moment to verify no callbacks. |
| - MessageLoop::current()->PostDelayedTask(FROM_HERE, |
| - NewRunnableMethod(this, &AppCacheResponseTest::VerifyNoCallbacks), |
| + MessageLoop::current()->PostDelayedTask( |
| + FROM_HERE, base::Bind(&AppCacheResponseTest::VerifyNoCallbacks, |
| + base::Unretained(this)), |
| 10); |
| } |
| @@ -656,7 +662,7 @@ class AppCacheResponseTest : public testing::Test { |
| scoped_ptr<base::WaitableEvent> test_finished_event_; |
| scoped_ptr<MockStorageDelegate> storage_delegate_; |
| scoped_ptr<MockAppCacheService> service_; |
| - std::stack<std::pair<Task*, bool> > task_stack_; |
| + std::stack<std::pair<base::Closure, bool> > task_stack_; |
| scoped_ptr<AppCacheResponseReader> reader_; |
| scoped_refptr<HttpResponseInfoIOBuffer> read_info_buffer_; |
| @@ -718,7 +724,3 @@ TEST_F(AppCacheResponseTest, DeleteWithIOPending) { |
| } |
| } // namespace appcache |
| - |
| -// AppCacheResponseTest is expected to always live longer than the |
| -// runnable methods. This lets us call NewRunnableMethod on its instances. |
| -DISABLE_RUNNABLE_METHOD_REFCOUNT(appcache::AppCacheResponseTest); |