Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(443)

Unified Diff: webkit/dom_storage/dom_storage_task_runner.cc

Issue 9718029: DomStorage commit task sequencing. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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
« webkit/dom_storage/dom_storage_task_runner.h ('K') | « webkit/dom_storage/dom_storage_task_runner.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698