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

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 127221)
+++ webkit/dom_storage/dom_storage_task_runner.cc (working copy)
@@ -64,6 +64,10 @@
: DomStorageTaskRunner(delayed_task_loop),
sequenced_worker_pool_(sequenced_worker_pool),
sequence_token_(sequence_token) {
+
+ // TODO: have ctor argument for this
+ commit_sequence_token_ =
+ sequenced_worker_pool->GetNamedSequenceToken("dom_storage_commit");
}
DomStorageWorkerPoolTaskRunner::~DomStorageWorkerPoolTaskRunner() {
@@ -77,8 +81,7 @@
// 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.
+ // Nominally, tasks are posted that can be skipped during shutdown.
return sequenced_worker_pool_->PostSequencedWorkerTaskWithShutdownBehavior(
sequence_token_, from_here, task,
base::SequencedWorkerPool::SKIP_ON_SHUTDOWN);
@@ -91,8 +94,27 @@
delay);
}
-// MockDomStorageTaskRunner
+bool DomStorageWorkerPoolTaskRunner::PostShutdownBlockingTask(
benm (inactive) 2012/03/19 14:22:53 Maybe rather than having two methods have one that
michaeln 2012/03/19 16:04:42 sgtm... PostShutdownBlockingTask(sequence_id, ...)
+ const tracked_objects::Location& from_here,
+ const base::Closure& task) {
+ return sequenced_worker_pool_->PostSequencedWorkerTaskWithShutdownBehavior(
+ sequence_token_, from_here, task,
+ base::SequencedWorkerPool::BLOCK_SHUTDOWN);
+}
+bool DomStorageWorkerPoolTaskRunner::PostShutdownBlockingCommitTask(
+ const tracked_objects::Location& from_here,
+ const base::Closure& task) {
+ return sequenced_worker_pool_->PostSequencedWorkerTaskWithShutdownBehavior(
+ commit_sequence_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 +124,20 @@
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,
+ const base::Closure& task) {
+ return PostTask(from_here, task);
+}
+
+bool MockDomStorageTaskRunner::PostShutdownBlockingCommitTask(
+ const tracked_objects::Location& from_here,
+ const base::Closure& task) {
+ return PostTask(from_here, task);
+}
+
} // namespace dom_storage
« webkit/dom_storage/dom_storage_area.cc ('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