Commit b9350ee9 authored by Mark Pilgrim's avatar Mark Pilgrim Committed by Commit Bot

Migrate startup_complete_callback to OnceCallback

Bug: 714018
Change-Id: I9ecc53ebb303b1c08ca4f21f9b948fdbfa02598c
Reviewed-on: https://chromium-review.googlesource.com/1104387Reviewed-by: default avatarJohn Abd-El-Malek <jam@chromium.org>
Commit-Queue: Mark Pilgrim <pilgrim@chromium.org>
Cr-Commit-Position: refs/heads/master@{#568198}
parent 5cc93793
...@@ -834,10 +834,11 @@ void BrowserMainLoop::CreateStartupTasks() { ...@@ -834,10 +834,11 @@ void BrowserMainLoop::CreateStartupTasks() {
DCHECK(!startup_task_runner_); DCHECK(!startup_task_runner_);
#if defined(OS_ANDROID) #if defined(OS_ANDROID)
startup_task_runner_ = std::make_unique<StartupTaskRunner>( startup_task_runner_ = std::make_unique<StartupTaskRunner>(
base::Bind(&BrowserStartupComplete), base::ThreadTaskRunnerHandle::Get()); base::BindOnce(&BrowserStartupComplete),
base::ThreadTaskRunnerHandle::Get());
#else #else
startup_task_runner_ = std::make_unique<StartupTaskRunner>( startup_task_runner_ = std::make_unique<StartupTaskRunner>(
base::Callback<void(int)>(), base::ThreadTaskRunnerHandle::Get()); base::OnceCallback<void(int)>(), base::ThreadTaskRunnerHandle::Get());
#endif #endif
StartupTask pre_create_threads = StartupTask pre_create_threads =
base::Bind(&BrowserMainLoop::PreCreateThreads, base::Unretained(this)); base::Bind(&BrowserMainLoop::PreCreateThreads, base::Unretained(this));
......
...@@ -10,9 +10,10 @@ ...@@ -10,9 +10,10 @@
namespace content { namespace content {
StartupTaskRunner::StartupTaskRunner( StartupTaskRunner::StartupTaskRunner(
base::Callback<void(int)> const startup_complete_callback, base::OnceCallback<void(int)> startup_complete_callback,
scoped_refptr<base::SingleThreadTaskRunner> proxy) scoped_refptr<base::SingleThreadTaskRunner> proxy)
: startup_complete_callback_(startup_complete_callback), proxy_(proxy) {} : startup_complete_callback_(std::move(startup_complete_callback)),
proxy_(proxy) {}
StartupTaskRunner::~StartupTaskRunner() {} StartupTaskRunner::~StartupTaskRunner() {}
...@@ -25,9 +26,7 @@ void StartupTaskRunner::StartRunningTasksAsync() { ...@@ -25,9 +26,7 @@ void StartupTaskRunner::StartRunningTasksAsync() {
int result = 0; int result = 0;
if (task_list_.empty()) { if (task_list_.empty()) {
if (!startup_complete_callback_.is_null()) { if (!startup_complete_callback_.is_null()) {
startup_complete_callback_.Run(result); std::move(startup_complete_callback_).Run(result);
// Clear the callback to prevent it being called a second time
startup_complete_callback_.Reset();
} }
} else { } else {
const base::Closure next_task = const base::Closure next_task =
...@@ -46,9 +45,7 @@ void StartupTaskRunner::RunAllTasksNow() { ...@@ -46,9 +45,7 @@ void StartupTaskRunner::RunAllTasksNow() {
} }
task_list_.clear(); task_list_.clear();
if (!startup_complete_callback_.is_null()) { if (!startup_complete_callback_.is_null()) {
startup_complete_callback_.Run(result); std::move(startup_complete_callback_).Run(result);
// Clear the callback to prevent it being called a second time
startup_complete_callback_.Reset();
} }
} }
...@@ -67,9 +64,7 @@ void StartupTaskRunner::WrappedTask() { ...@@ -67,9 +64,7 @@ void StartupTaskRunner::WrappedTask() {
} }
if (task_list_.empty()) { if (task_list_.empty()) {
if (!startup_complete_callback_.is_null()) { if (!startup_complete_callback_.is_null()) {
startup_complete_callback_.Run(result); std::move(startup_complete_callback_).Run(result);
// Clear the callback to prevent it being called a second time
startup_complete_callback_.Reset();
} }
} else { } else {
const base::Closure next_task = const base::Closure next_task =
......
...@@ -37,7 +37,7 @@ class CONTENT_EXPORT StartupTaskRunner { ...@@ -37,7 +37,7 @@ class CONTENT_EXPORT StartupTaskRunner {
public: public:
// Constructor: Note that |startup_complete_callback| is optional. If it is // Constructor: Note that |startup_complete_callback| is optional. If it is
// not null it will be called once all the startup tasks have run. // not null it will be called once all the startup tasks have run.
StartupTaskRunner(base::Callback<void(int)> startup_complete_callback, StartupTaskRunner(base::OnceCallback<void(int)> startup_complete_callback,
scoped_refptr<base::SingleThreadTaskRunner> proxy); scoped_refptr<base::SingleThreadTaskRunner> proxy);
~StartupTaskRunner(); ~StartupTaskRunner();
...@@ -57,7 +57,7 @@ class CONTENT_EXPORT StartupTaskRunner { ...@@ -57,7 +57,7 @@ class CONTENT_EXPORT StartupTaskRunner {
std::list<StartupTask> task_list_; std::list<StartupTask> task_list_;
void WrappedTask(); void WrappedTask();
base::Callback<void(int)> startup_complete_callback_; base::OnceCallback<void(int)> startup_complete_callback_;
scoped_refptr<base::SingleThreadTaskRunner> proxy_; scoped_refptr<base::SingleThreadTaskRunner> proxy_;
DISALLOW_COPY_AND_ASSIGN(StartupTaskRunner); DISALLOW_COPY_AND_ASSIGN(StartupTaskRunner);
......
...@@ -116,7 +116,7 @@ TEST_F(StartupTaskRunnerTest, SynchronousExecution) { ...@@ -116,7 +116,7 @@ TEST_F(StartupTaskRunnerTest, SynchronousExecution) {
EXPECT_CALL(mock_runner, PostDelayedTask(_, _)).Times(0); EXPECT_CALL(mock_runner, PostDelayedTask(_, _)).Times(0);
EXPECT_CALL(mock_runner, PostNonNestableDelayedTask(_, _)).Times(0); EXPECT_CALL(mock_runner, PostNonNestableDelayedTask(_, _)).Times(0);
StartupTaskRunner runner(base::Bind(&Observer), proxy); StartupTaskRunner runner(base::BindOnce(&Observer), proxy);
StartupTask task1 = StartupTask task1 =
base::Bind(&StartupTaskRunnerTest::Task1, base::Unretained(this)); base::Bind(&StartupTaskRunnerTest::Task1, base::Unretained(this));
...@@ -154,7 +154,7 @@ TEST_F(StartupTaskRunnerTest, NullObserver) { ...@@ -154,7 +154,7 @@ TEST_F(StartupTaskRunnerTest, NullObserver) {
EXPECT_CALL(mock_runner, PostDelayedTask(_, _)).Times(0); EXPECT_CALL(mock_runner, PostDelayedTask(_, _)).Times(0);
EXPECT_CALL(mock_runner, PostNonNestableDelayedTask(_, _)).Times(0); EXPECT_CALL(mock_runner, PostNonNestableDelayedTask(_, _)).Times(0);
StartupTaskRunner runner(base::Callback<void(int)>(), proxy); StartupTaskRunner runner(base::OnceCallback<void(int)>(), proxy);
StartupTask task1 = StartupTask task1 =
base::Bind(&StartupTaskRunnerTest::Task1, base::Unretained(this)); base::Bind(&StartupTaskRunnerTest::Task1, base::Unretained(this));
...@@ -189,7 +189,7 @@ TEST_F(StartupTaskRunnerTest, SynchronousExecutionFailedTask) { ...@@ -189,7 +189,7 @@ TEST_F(StartupTaskRunnerTest, SynchronousExecutionFailedTask) {
EXPECT_CALL(mock_runner, PostDelayedTask(_, _)).Times(0); EXPECT_CALL(mock_runner, PostDelayedTask(_, _)).Times(0);
EXPECT_CALL(mock_runner, PostNonNestableDelayedTask(_, _)).Times(0); EXPECT_CALL(mock_runner, PostNonNestableDelayedTask(_, _)).Times(0);
StartupTaskRunner runner(base::Bind(&Observer), proxy); StartupTaskRunner runner(base::BindOnce(&Observer), proxy);
StartupTask task3 = StartupTask task3 =
base::Bind(&StartupTaskRunnerTest::FailingTask, base::Unretained(this)); base::Bind(&StartupTaskRunnerTest::FailingTask, base::Unretained(this));
...@@ -230,7 +230,7 @@ TEST_F(StartupTaskRunnerTest, AsynchronousExecution) { ...@@ -230,7 +230,7 @@ TEST_F(StartupTaskRunnerTest, AsynchronousExecution) {
.Times(testing::Between(2, 3)) .Times(testing::Between(2, 3))
.WillRepeatedly(testing::Return(true)); .WillRepeatedly(testing::Return(true));
StartupTaskRunner runner(base::Bind(&Observer), proxy); StartupTaskRunner runner(base::BindOnce(&Observer), proxy);
StartupTask task1 = StartupTask task1 =
base::Bind(&StartupTaskRunnerTest::Task1, base::Unretained(this)); base::Bind(&StartupTaskRunnerTest::Task1, base::Unretained(this));
...@@ -276,7 +276,7 @@ TEST_F(StartupTaskRunnerTest, AsynchronousExecutionFailedTask) { ...@@ -276,7 +276,7 @@ TEST_F(StartupTaskRunnerTest, AsynchronousExecutionFailedTask) {
.Times(testing::Between(1, 2)) .Times(testing::Between(1, 2))
.WillRepeatedly(testing::Return(true)); .WillRepeatedly(testing::Return(true));
StartupTaskRunner runner(base::Bind(&Observer), proxy); StartupTaskRunner runner(base::BindOnce(&Observer), proxy);
StartupTask task3 = StartupTask task3 =
base::Bind(&StartupTaskRunnerTest::FailingTask, base::Unretained(this)); base::Bind(&StartupTaskRunnerTest::FailingTask, base::Unretained(this));
......
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