| Index: webkit/dom_storage/dom_storage_task_runner.cc
|
| ===================================================================
|
| --- webkit/dom_storage/dom_storage_task_runner.cc (revision 126447)
|
| +++ webkit/dom_storage/dom_storage_task_runner.cc (working copy)
|
| @@ -21,47 +21,53 @@
|
| DomStorageTaskRunner::~DomStorageTaskRunner() {
|
| }
|
|
|
| -bool DomStorageTaskRunner::PostTask(
|
| +bool DomStorageTaskRunner::PostDelayedTask(
|
| const tracked_objects::Location& from_here,
|
| - const base::Closure& task) {
|
| - return message_loop_->PostTask(from_here, task);
|
| + const base::Closure& task,
|
| + base::TimeDelta delay) {
|
| + return message_loop_->PostDelayedTask(from_here, task, delay);
|
| }
|
|
|
| bool DomStorageTaskRunner::PostDelayedTask(
|
| const tracked_objects::Location& from_here,
|
| const base::Closure& task,
|
| - base::TimeDelta delay) {
|
| - return message_loop_->PostDelayedTask(from_here, task, delay);
|
| + int64 delay_ms) {
|
| + return PostDelayedTask(
|
| + from_here, task, base::TimeDelta::FromMilliseconds(delay_ms));
|
| }
|
|
|
| +bool DomStorageTaskRunner::RunsTasksOnCurrentThread() const {
|
| + return true;
|
| +}
|
| +
|
| // DomStorageWorkerPoolTaskRunner
|
|
|
| DomStorageWorkerPoolTaskRunner::DomStorageWorkerPoolTaskRunner(
|
| base::SequencedWorkerPool* sequenced_worker_pool,
|
| + base::SequencedWorkerPool::SequenceToken sequence_token,
|
| base::MessageLoopProxy* delayed_task_loop)
|
| : DomStorageTaskRunner(delayed_task_loop),
|
| sequenced_worker_pool_(sequenced_worker_pool),
|
| - sequence_token_(
|
| - sequenced_worker_pool->GetNamedSequenceToken("dom_storage_token")) {
|
| + sequence_token_(sequence_token) {
|
| }
|
|
|
| DomStorageWorkerPoolTaskRunner::~DomStorageWorkerPoolTaskRunner() {
|
| }
|
|
|
| -bool DomStorageWorkerPoolTaskRunner::PostTask(
|
| - const tracked_objects::Location& from_here,
|
| - const base::Closure& 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);
|
| -}
|
| -
|
| bool DomStorageWorkerPoolTaskRunner::PostDelayedTask(
|
| const tracked_objects::Location& from_here,
|
| const base::Closure& task,
|
| base::TimeDelta delay) {
|
| + // Note base::TaskRunner implements PostTask in terms of PostDelayedTask
|
| + // with a delay of zero, we detect that usage and avoid the unecessary
|
| + // trip thru the message_loop.
|
| + if (delay == base::TimeDelta()) {
|
| + // 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);
|
| + }
|
| // Post a task to call this->PostTask() after the delay.
|
| return message_loop_->PostDelayedTask(
|
| FROM_HERE,
|
| @@ -81,8 +87,9 @@
|
| const tracked_objects::Location& from_here,
|
| const base::Closure& task,
|
| base::TimeDelta delay) {
|
| - // Don't wait in unit tests.
|
| - return PostTask(from_here, task);
|
| + // Squash all delays to zero in our mock.
|
| + return DomStorageTaskRunner::PostDelayedTask(
|
| + from_here, task, base::TimeDelta());
|
| }
|
|
|
| } // namespace dom_storage
|
|
|