Index: webkit/dom_storage/dom_storage_task_runner.cc |
=================================================================== |
--- webkit/dom_storage/dom_storage_task_runner.cc (revision 127736) |
+++ webkit/dom_storage/dom_storage_task_runner.cc (working copy) |
@@ -13,57 +13,31 @@ |
// DomStorageTaskRunner |
-DomStorageTaskRunner::DomStorageTaskRunner( |
- base::MessageLoopProxy* message_loop) |
- : message_loop_(message_loop) { |
-} |
- |
-DomStorageTaskRunner::~DomStorageTaskRunner() { |
-} |
- |
bool DomStorageTaskRunner::PostDelayedTask( |
const tracked_objects::Location& from_here, |
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, |
int64 delay_ms) { |
return PostDelayedTask( |
from_here, task, base::TimeDelta::FromMilliseconds(delay_ms)); |
} |
bool DomStorageTaskRunner::RunsTasksOnCurrentThread() const { |
+ // TODO(michaeln): make this method useful once SequencedWorkerPool |
+ // can check which sequence the current thread is processing. |
return true; |
} |
-bool DomStorageTaskRunner::PostNonNestableDelayedTask( |
- const tracked_objects::Location& from_here, |
- const base::Closure& task, |
- base::TimeDelta delay) { |
- return PostDelayedTask(from_here, task, delay); |
-} |
- |
-bool DomStorageTaskRunner::PostNonNestableDelayedTask( |
- const tracked_objects::Location& from_here, |
- const base::Closure& task, |
- int64 delay_ms) { |
- return PostDelayedTask( |
- from_here, task, base::TimeDelta::FromMilliseconds(delay_ms)); |
-} |
- |
// DomStorageWorkerPoolTaskRunner |
DomStorageWorkerPoolTaskRunner::DomStorageWorkerPoolTaskRunner( |
base::SequencedWorkerPool* sequenced_worker_pool, |
- base::SequencedWorkerPool::SequenceToken sequence_token, |
+ base::SequencedWorkerPool::SequenceToken primary_sequence_token, |
+ base::SequencedWorkerPool::SequenceToken commit_sequence_token, |
base::MessageLoopProxy* delayed_task_loop) |
- : DomStorageTaskRunner(delayed_task_loop), |
+ : message_loop_(delayed_task_loop), |
sequenced_worker_pool_(sequenced_worker_pool), |
- sequence_token_(sequence_token) { |
+ primary_sequence_token_(primary_sequence_token), |
+ commit_sequence_token_(commit_sequence_token) { |
} |
DomStorageWorkerPoolTaskRunner::~DomStorageWorkerPoolTaskRunner() { |
@@ -75,12 +49,10 @@ |
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. |
+ // 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, |
+ primary_sequence_token_, from_here, task, |
base::SequencedWorkerPool::SKIP_ON_SHUTDOWN); |
} |
// Post a task to call this->PostTask() after the delay. |
@@ -91,20 +63,44 @@ |
delay); |
} |
+bool DomStorageWorkerPoolTaskRunner::PostShutdownBlockingTask( |
+ const tracked_objects::Location& from_here, |
+ SequenceID sequence_id, |
+ const base::Closure& task) { |
+ base::SequencedWorkerPool::SequenceToken token; |
+ if (sequence_id == PRIMARY_SEQUENCE) { |
+ token = primary_sequence_token_; |
+ } else { |
+ DCHECK_EQ(COMMIT_SEQUENCE, sequence_id); |
+ token = commit_sequence_token_; |
+ } |
+ return sequenced_worker_pool_->PostSequencedWorkerTaskWithShutdownBehavior( |
+ token, from_here, task, |
+ base::SequencedWorkerPool::BLOCK_SHUTDOWN); |
+} |
+ |
// MockDomStorageTaskRunner |
MockDomStorageTaskRunner::MockDomStorageTaskRunner( |
base::MessageLoopProxy* message_loop) |
- : DomStorageTaskRunner(message_loop) { |
+ : message_loop_(message_loop) { |
} |
+MockDomStorageTaskRunner::~MockDomStorageTaskRunner() { |
+} |
+ |
bool MockDomStorageTaskRunner::PostDelayedTask( |
const tracked_objects::Location& from_here, |
const base::Closure& task, |
base::TimeDelta delay) { |
- // Squash all delays to zero in our mock. |
- return DomStorageTaskRunner::PostDelayedTask( |
- from_here, task, base::TimeDelta()); |
+ return message_loop_->PostTask(from_here, task); |
} |
+bool MockDomStorageTaskRunner::PostShutdownBlockingTask( |
+ const tracked_objects::Location& from_here, |
+ SequenceID sequence_id, |
+ const base::Closure& task) { |
+ return message_loop_->PostTask(from_here, task); |
+} |
+ |
} // namespace dom_storage |