Chromium Code Reviews| Index: webkit/dom_storage/dom_storage_task_runner.cc |
| diff --git a/webkit/dom_storage/dom_storage_task_runner.cc b/webkit/dom_storage/dom_storage_task_runner.cc |
| index 6a1afb5a123f29bba0d3ab8440df06753d4c41df..4a4b67401682c3857f9b5ebff3b231e928cad583 100644 |
| --- a/webkit/dom_storage/dom_storage_task_runner.cc |
| +++ b/webkit/dom_storage/dom_storage_task_runner.cc |
| @@ -20,17 +20,18 @@ DomStorageTaskRunner::DomStorageTaskRunner( |
| DomStorageTaskRunner::~DomStorageTaskRunner() { |
| } |
| -void DomStorageTaskRunner::PostTask( |
| +bool DomStorageTaskRunner::PostTask( |
| const tracked_objects::Location& from_here, |
| const base::Closure& task) { |
| - message_loop_->PostTask(from_here, task); |
| + return message_loop_->PostTask(from_here, task); |
| } |
| -void DomStorageTaskRunner::PostDelayedTask( |
| +bool DomStorageTaskRunner::PostDelayedTask( |
| const tracked_objects::Location& from_here, |
| const base::Closure& task, |
| base::TimeDelta delay) { |
| - message_loop_->PostDelayedTask(from_here, task, delay.InMilliseconds()); |
| + return message_loop_->PostDelayedTask(from_here, task, |
| + delay.InMilliseconds()); |
| } |
| // DomStorageWorkerPoolTaskRunner |
| @@ -47,25 +48,41 @@ DomStorageWorkerPoolTaskRunner::DomStorageWorkerPoolTaskRunner( |
| DomStorageWorkerPoolTaskRunner::~DomStorageWorkerPoolTaskRunner() { |
| } |
| -void DomStorageWorkerPoolTaskRunner::PostTask( |
| +bool DomStorageWorkerPoolTaskRunner::PostTask( |
| const tracked_objects::Location& from_here, |
| const base::Closure& task) { |
| - // TODO(michaeln): Do all tasks need to be run prior to shutdown? |
| - // Maybe make better use of the SHUTDOWN_BEHAVIOR. |
| - sequenced_worker_pool_->PostSequencedWorkerTask( |
| - sequence_token_, from_here, task); |
| + // We can skip on shutdown as the destructor of DomStorageArea will ensure |
| + // that any remaining data is committed to disk. |
| + return sequenced_worker_pool_->PostSequencedWorkerTaskWithShutdownBehavior( |
| + sequence_token_, from_here, task, |
| + base::SequencedWorkerPool::SKIP_ON_SHUTDOWN); |
| } |
| -void DomStorageWorkerPoolTaskRunner::PostDelayedTask( |
| +bool DomStorageWorkerPoolTaskRunner::PostDelayedTask( |
| const tracked_objects::Location& from_here, |
| const base::Closure& task, |
| base::TimeDelta delay) { |
| // Post a task to call this->PostTask() after the delay. |
| - message_loop_->PostDelayedTask( |
| + return message_loop_->PostDelayedTask( |
| FROM_HERE, |
| - base::Bind(&DomStorageWorkerPoolTaskRunner::PostTask, this, |
| - from_here, task), |
| + base::Bind(base::IgnoreResult(&DomStorageWorkerPoolTaskRunner::PostTask), |
| + this, from_here, task), |
| delay.InMilliseconds()); |
| } |
| +// MockDomStorageTaskRunner |
| + |
| +MockDomStorageTaskRunner::MockDomStorageTaskRunner( |
| + base::MessageLoopProxy* message_loop) |
| + : DomStorageTaskRunner(message_loop) { |
| +} |
| + |
| +bool MockDomStorageTaskRunner::PostDelayedTask( |
| + const tracked_objects::Location& from_here, |
| + const base::Closure& task, |
| + base::TimeDelta delay) { |
| + // Don't wait in unit tests. |
|
michaeln
2012/02/24 19:29:52
indent of off here and the next line
benm (inactive)
2012/02/27 10:39:27
Done.
|
| + return PostTask(from_here, task); |
| +} |
| + |
| } // namespace dom_storage |