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

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
« no previous file with comments | « webkit/dom_storage/dom_storage_task_runner.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « 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