Index: webkit/dom_storage/dom_storage_task_runner.cc |
=================================================================== |
--- webkit/dom_storage/dom_storage_task_runner.cc (revision 127613) |
+++ webkit/dom_storage/dom_storage_task_runner.cc (working copy) |
@@ -40,30 +40,17 @@ |
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), |
sequenced_worker_pool_(sequenced_worker_pool), |
- sequence_token_(sequence_token) { |
+ primary_sequence_token_(primary_sequence_token), |
+ commit_sequence_token_(commit_sequence_token) { |
} |
DomStorageWorkerPoolTaskRunner::~DomStorageWorkerPoolTaskRunner() { |
@@ -77,10 +64,8 @@ |
// 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, |
+ primary_sequence_token_, from_here, task, |
base::SequencedWorkerPool::SKIP_ON_SHUTDOWN); |
} |
// Post a task to call this->PostTask() after the delay. |
@@ -91,8 +76,31 @@ |
delay); |
} |
-// MockDomStorageTaskRunner |
+bool DomStorageWorkerPoolTaskRunner::PostShutdownBlockingTask( |
+ const tracked_objects::Location& from_here, |
+ SequenceID sequence_id, |
+ const base::Closure& task) { |
+ base::SequencedWorkerPool::SequenceToken token; |
+ switch (sequence_id) { |
+ case PRIMARY_SEQUENCE: |
+ token = primary_sequence_token_; |
+ break; |
+ case COMMIT_SEQUENCE: |
+ token = commit_sequence_token_; |
+ break; |
+ default: |
+ NOTREACHED(); |
+ } |
+ return sequenced_worker_pool_->PostSequencedWorkerTaskWithShutdownBehavior( |
+ token, from_here, task, |
+ base::SequencedWorkerPool::BLOCK_SHUTDOWN); |
+} |
+// MockDomStorageTaskRunner, there is no distinction between |
+// shutdown blocking or the commit sequence vs the read sequence |
+// in our mock, all tasks are scheduled on the provided message |
+// loop. And delay values are all squashed to zero. |
+ |
MockDomStorageTaskRunner::MockDomStorageTaskRunner( |
base::MessageLoopProxy* message_loop) |
: DomStorageTaskRunner(message_loop) { |
@@ -102,9 +110,16 @@ |
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()); |
} |
+bool MockDomStorageTaskRunner::PostShutdownBlockingTask( |
+ const tracked_objects::Location& from_here, |
+ SequenceID sequence_id, |
+ const base::Closure& task) { |
+ return DomStorageTaskRunner::PostDelayedTask( |
+ from_here, task, base::TimeDelta()); |
+} |
+ |
} // namespace dom_storage |