| 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();
|
| - }
|
| +
|
| 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);
|
|
|