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