Commit 7cffceee authored by fdoray's avatar fdoray Committed by Commit bot

Remove calls to IsRunningSequenceOnCurrentThread() from dom_storage_task_runner.cc

SequencedWorkerPool is being migrated to base/task_scheduler and there
is no equivalent to IsRunningSequenceOnCurrentThread() in
base/task_scheduler.

Developers should use SequenceChecker to verify that tasks run
sequentially. Note: SequenceChecker::CalledOnValidSequence
is a no-op in non-DCHECK builds.

BUG=622400

Review-Url: https://codereview.chromium.org/2317253007
Cr-Commit-Position: refs/heads/master@{#418554}
parent 1366b031
......@@ -346,7 +346,7 @@ void DOMStorageArea::Shutdown() {
}
void DOMStorageArea::OnMemoryDump(base::trace_event::ProcessMemoryDump* pmd) {
DCHECK(task_runner_->IsRunningOnPrimarySequence());
task_runner_->AssertIsRunningOnPrimarySequence();
if (!is_initial_import_done_)
return;
......@@ -435,7 +435,7 @@ DOMStorageArea::CommitBatch* DOMStorageArea::CreateCommitBatchIfNeeded() {
}
void DOMStorageArea::PopulateCommitBatchValues() {
DCHECK(task_runner_->IsRunningOnPrimarySequence());
task_runner_->AssertIsRunningOnPrimarySequence();
for (auto& key_value : commit_batch_->changed_values)
key_value.second = map_->GetItem(key_value.first);
}
......@@ -492,7 +492,7 @@ void DOMStorageArea::PostCommitTask() {
// This method executes on the primary sequence, we schedule
// a task for immediate execution on the commit sequence.
DCHECK(task_runner_->IsRunningOnPrimarySequence());
task_runner_->AssertIsRunningOnPrimarySequence();
bool success = task_runner_->PostShutdownBlockingTask(
FROM_HERE,
DOMStorageTaskRunner::COMMIT_SEQUENCE,
......@@ -504,7 +504,7 @@ void DOMStorageArea::PostCommitTask() {
void DOMStorageArea::CommitChanges(const CommitBatch* commit_batch) {
// This method executes on the commit sequence.
DCHECK(task_runner_->IsRunningOnCommitSequence());
task_runner_->AssertIsRunningOnCommitSequence();
backing_->CommitChanges(commit_batch->clear_all_first,
commit_batch->changed_values);
// TODO(michaeln): what if CommitChanges returns false (e.g., we're trying to
......@@ -516,7 +516,7 @@ void DOMStorageArea::CommitChanges(const CommitBatch* commit_batch) {
void DOMStorageArea::OnCommitComplete() {
// We're back on the primary sequence in this method.
DCHECK(task_runner_->IsRunningOnPrimarySequence());
task_runner_->AssertIsRunningOnPrimarySequence();
--commit_batches_in_flight_;
if (is_shutdown_)
return;
......@@ -530,7 +530,7 @@ void DOMStorageArea::OnCommitComplete() {
void DOMStorageArea::ShutdownInCommitSequence() {
// This method executes on the commit sequence.
DCHECK(task_runner_->IsRunningOnCommitSequence());
task_runner_->AssertIsRunningOnCommitSequence();
DCHECK(backing_.get());
if (commit_batch_) {
// Commit any changes that accrued prior to the timer firing.
......
......@@ -240,7 +240,8 @@ void DOMStorageContextImpl::Flush() {
}
void DOMStorageContextImpl::Shutdown() {
DCHECK(!task_runner_ || task_runner_->IsRunningOnPrimarySequence());
if (task_runner_)
task_runner_->AssertIsRunningOnPrimarySequence();
is_shutdown_ = true;
StorageNamespaceMap::const_iterator it = namespaces_.begin();
for (; it != namespaces_.end(); ++it)
......
......@@ -184,7 +184,7 @@ DOMStorageNamespace::UsageStatistics DOMStorageNamespace::GetUsageStatistics()
void DOMStorageNamespace::OnMemoryDump(
base::trace_event::ProcessMemoryDump* pmd) {
DCHECK(task_runner_->IsRunningOnPrimarySequence());
task_runner_->AssertIsRunningOnPrimarySequence();
for (const auto& it : areas_)
it.second.area_->OnMemoryDump(pmd);
}
......
......@@ -7,16 +7,11 @@
#include "base/bind.h"
#include "base/bind_helpers.h"
#include "base/location.h"
#include "base/logging.h"
#include "base/tracked_objects.h"
namespace content {
// DOMStorageTaskRunner
bool DOMStorageTaskRunner::RunsTasksOnCurrentThread() const {
return IsRunningOnSequence(PRIMARY_SEQUENCE);
}
// DOMStorageWorkerPoolTaskRunner
DOMStorageWorkerPoolTaskRunner::DOMStorageWorkerPoolTaskRunner(
......@@ -28,11 +23,18 @@ DOMStorageWorkerPoolTaskRunner::DOMStorageWorkerPoolTaskRunner(
sequenced_worker_pool_(sequenced_worker_pool),
primary_sequence_token_(primary_sequence_token),
commit_sequence_token_(commit_sequence_token) {
primary_sequence_checker_.DetachFromSequence();
commit_sequence_checker_.DetachFromSequence();
}
DOMStorageWorkerPoolTaskRunner::~DOMStorageWorkerPoolTaskRunner() {
}
bool DOMStorageWorkerPoolTaskRunner::RunsTasksOnCurrentThread() const {
// It is valid for an implementation to always return true.
return true;
}
bool DOMStorageWorkerPoolTaskRunner::PostDelayedTask(
const tracked_objects::Location& from_here,
const base::Closure& task,
......@@ -62,10 +64,12 @@ bool DOMStorageWorkerPoolTaskRunner::PostShutdownBlockingTask(
base::SequencedWorkerPool::BLOCK_SHUTDOWN);
}
bool DOMStorageWorkerPoolTaskRunner::IsRunningOnSequence(
SequenceID sequence_id) const {
return sequenced_worker_pool_->IsRunningSequenceOnCurrentThread(
IDtoToken(sequence_id));
void DOMStorageWorkerPoolTaskRunner::AssertIsRunningOnPrimarySequence() const {
DCHECK(primary_sequence_checker_.CalledOnValidSequence());
}
void DOMStorageWorkerPoolTaskRunner::AssertIsRunningOnCommitSequence() const {
DCHECK(commit_sequence_checker_.CalledOnValidSequence());
}
scoped_refptr<base::SequencedTaskRunner>
......@@ -91,6 +95,10 @@ MockDOMStorageTaskRunner::MockDOMStorageTaskRunner(
MockDOMStorageTaskRunner::~MockDOMStorageTaskRunner() {
}
bool MockDOMStorageTaskRunner::RunsTasksOnCurrentThread() const {
return task_runner_->RunsTasksOnCurrentThread();
}
bool MockDOMStorageTaskRunner::PostDelayedTask(
const tracked_objects::Location& from_here,
const base::Closure& task,
......@@ -105,8 +113,12 @@ bool MockDOMStorageTaskRunner::PostShutdownBlockingTask(
return task_runner_->PostTask(from_here, task);
}
bool MockDOMStorageTaskRunner::IsRunningOnSequence(SequenceID) const {
return task_runner_->RunsTasksOnCurrentThread();
void MockDOMStorageTaskRunner::AssertIsRunningOnPrimarySequence() const {
DCHECK(RunsTasksOnCurrentThread());
}
void MockDOMStorageTaskRunner::AssertIsRunningOnCommitSequence() const {
DCHECK(RunsTasksOnCurrentThread());
}
scoped_refptr<base::SequencedTaskRunner>
......
......@@ -6,6 +6,7 @@
#define CONTENT_BROWSER_DOM_STORAGE_DOM_STORAGE_TASK_RUNNER_H_
#include "base/memory/ref_counted.h"
#include "base/sequence_checker.h"
#include "base/sequenced_task_runner.h"
#include "base/single_thread_task_runner.h"
#include "base/threading/sequenced_worker_pool.h"
......@@ -47,18 +48,8 @@ class CONTENT_EXPORT DOMStorageTaskRunner
SequenceID sequence_id,
const base::Closure& task) = 0;
// The TaskRunner override returns true if the current thread is running
// on the primary sequence.
bool RunsTasksOnCurrentThread() const override;
// Returns true if the current thread is running on the given |sequence_id|.
virtual bool IsRunningOnSequence(SequenceID sequence_id) const = 0;
bool IsRunningOnPrimarySequence() const {
return IsRunningOnSequence(PRIMARY_SEQUENCE);
}
bool IsRunningOnCommitSequence() const {
return IsRunningOnSequence(COMMIT_SEQUENCE);
}
virtual void AssertIsRunningOnPrimarySequence() const = 0;
virtual void AssertIsRunningOnCommitSequence() const = 0;
virtual scoped_refptr<base::SequencedTaskRunner> GetSequencedTaskRunner(
SequenceID sequence_id) = 0;
......@@ -79,6 +70,8 @@ class CONTENT_EXPORT DOMStorageWorkerPoolTaskRunner :
base::SequencedWorkerPool::SequenceToken commit_sequence_token,
base::SingleThreadTaskRunner* delayed_task_task_runner);
bool RunsTasksOnCurrentThread() const override;
bool PostDelayedTask(const tracked_objects::Location& from_here,
const base::Closure& task,
base::TimeDelta delay) override;
......@@ -87,7 +80,8 @@ class CONTENT_EXPORT DOMStorageWorkerPoolTaskRunner :
SequenceID sequence_id,
const base::Closure& task) override;
bool IsRunningOnSequence(SequenceID sequence_id) const override;
void AssertIsRunningOnPrimarySequence() const override;
void AssertIsRunningOnCommitSequence() const override;
scoped_refptr<base::SequencedTaskRunner> GetSequencedTaskRunner(
SequenceID sequence_id) override;
......@@ -102,7 +96,9 @@ class CONTENT_EXPORT DOMStorageWorkerPoolTaskRunner :
const scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
const scoped_refptr<base::SequencedWorkerPool> sequenced_worker_pool_;
base::SequencedWorkerPool::SequenceToken primary_sequence_token_;
base::SequenceChecker primary_sequence_checker_;
base::SequencedWorkerPool::SequenceToken commit_sequence_token_;
base::SequenceChecker commit_sequence_checker_;
};
// A derived class used in unit tests that ignores all delays so
......@@ -115,6 +111,8 @@ class CONTENT_EXPORT MockDOMStorageTaskRunner :
public:
explicit MockDOMStorageTaskRunner(base::SingleThreadTaskRunner* task_runner);
bool RunsTasksOnCurrentThread() const override;
bool PostDelayedTask(const tracked_objects::Location& from_here,
const base::Closure& task,
base::TimeDelta delay) override;
......@@ -123,7 +121,8 @@ class CONTENT_EXPORT MockDOMStorageTaskRunner :
SequenceID sequence_id,
const base::Closure& task) override;
bool IsRunningOnSequence(SequenceID sequence_id) const override;
void AssertIsRunningOnPrimarySequence() const override;
void AssertIsRunningOnCommitSequence() const override;
scoped_refptr<base::SequencedTaskRunner> GetSequencedTaskRunner(
SequenceID sequence_id) override;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment