update_engine: libchrome deprecated Bind/Callback APIs
.. as uprev'ed libchrome does not support this.
Currently CrOS libchrome maintains a patch to support code that still
utilizes the deprecated Bind/Callbacks.
BUG=b:272116782
TEST=FEATURES=test emerge-$B update_engine
Change-Id: I3d462abc054556458157ee79684170a677ad5694
Reviewed-on: https://chromium-review.googlesource.com/c/aosp/platform/system/update_engine/+/4315196
Auto-Submit: Jae Hoon Kim <kimjae@chromium.org>
Reviewed-by: Yuanpeng Ni <yuanpengni@chromium.org>
Tested-by: Jae Hoon Kim <kimjae@chromium.org>
Reviewed-by: Qijiang Yūki Ishii <fqj@google.com>
Commit-Queue: Yuanpeng Ni <yuanpengni@chromium.org>
diff --git a/client_library/client_dbus.cc b/client_library/client_dbus.cc
index b3b4287..18b2693 100644
--- a/client_library/client_dbus.cc
+++ b/client_library/client_dbus.cc
@@ -231,10 +231,10 @@
}
proxy_->RegisterStatusUpdateAdvancedSignalHandler(
- base::Bind(&DBusUpdateEngineClient::RunStatusUpdateHandlers,
- base::Unretained(this)),
- base::Bind(&DBusUpdateEngineClient::DBusStatusHandlersRegistered,
- base::Unretained(this)));
+ base::BindRepeating(&DBusUpdateEngineClient::RunStatusUpdateHandlers,
+ base::Unretained(this)),
+ base::BindOnce(&DBusUpdateEngineClient::DBusStatusHandlersRegistered,
+ base::Unretained(this)));
dbus_handler_registered_ = true;
diff --git a/common/cpu_limiter.cc b/common/cpu_limiter.cc
index b67107c..d2ab0d0 100644
--- a/common/cpu_limiter.cc
+++ b/common/cpu_limiter.cc
@@ -47,7 +47,7 @@
}
manage_shares_id_ = brillo::MessageLoop::current()->PostDelayedTask(
FROM_HERE,
- base::Bind(&CPULimiter::StopLimiterCallback, base::Unretained(this)),
+ base::BindOnce(&CPULimiter::StopLimiterCallback, base::Unretained(this)),
base::Hours(2));
SetCpuShares(CpuShares::kLow);
}
diff --git a/common/file_fetcher.cc b/common/file_fetcher.cc
index 96d0d91..140f293 100644
--- a/common/file_fetcher.cc
+++ b/common/file_fetcher.cc
@@ -127,8 +127,8 @@
ongoing_read_ = stream_->ReadAsync(
buffer_.data(),
bytes_to_read,
- base::Bind(&FileFetcher::OnReadDoneCallback, base::Unretained(this)),
- base::Bind(&FileFetcher::OnReadErrorCallback, base::Unretained(this)),
+ base::BindOnce(&FileFetcher::OnReadDoneCallback, base::Unretained(this)),
+ base::BindOnce(&FileFetcher::OnReadErrorCallback, base::Unretained(this)),
nullptr);
if (!ongoing_read_) {
diff --git a/common/mock_http_fetcher.cc b/common/mock_http_fetcher.cc
index 41d95c8..9b91a9f 100644
--- a/common/mock_http_fetcher.cc
+++ b/common/mock_http_fetcher.cc
@@ -65,7 +65,8 @@
CHECK(MessageLoop::current());
timeout_id_ = MessageLoop::current()->PostDelayedTask(
FROM_HERE,
- base::Bind(&MockHttpFetcher::TimeoutCallback, base::Unretained(this)),
+ base::BindOnce(&MockHttpFetcher::TimeoutCallback,
+ base::Unretained(this)),
base::Milliseconds(10));
}
diff --git a/common/subprocess.cc b/common/subprocess.cc
index 89d5b3a..bf8c5b5 100644
--- a/common/subprocess.cc
+++ b/common/subprocess.cc
@@ -98,7 +98,7 @@
}
proc->SetCloseUnusedFileDescriptors(true);
proc->RedirectUsingPipe(STDOUT_FILENO, false);
- proc->SetPreExecCallback(base::Bind(&SetupChild, env, flags));
+ proc->SetPreExecCallback(base::BindOnce(&SetupChild, env, flags));
LOG(INFO) << "Running \"" << base::JoinString(cmd, " ") << "\"";
return proc->Start();
@@ -193,7 +193,8 @@
CHECK(process_reaper_.WatchForChild(
FROM_HERE,
pid,
- base::Bind(&Subprocess::ChildExitedCallback, base::Unretained(this))));
+ base::BindOnce(&Subprocess::ChildExitedCallback,
+ base::Unretained(this))));
record->stdout_fd = record->proc.GetPipe(STDOUT_FILENO);
// Capture the subprocess output. Make our end of the pipe non-blocking.
diff --git a/cros/daemon_chromeos.cc b/cros/daemon_chromeos.cc
index d37fda5..51bed34 100644
--- a/cros/daemon_chromeos.cc
+++ b/cros/daemon_chromeos.cc
@@ -52,8 +52,8 @@
dbus_adaptor_.reset(new UpdateEngineAdaptor());
SystemState::Get()->update_attempter()->AddObserver(dbus_adaptor_.get());
- dbus_adaptor_->RegisterAsync(
- base::Bind(&DaemonChromeOS::OnDBusRegistered, base::Unretained(this)));
+ dbus_adaptor_->RegisterAsync(base::BindOnce(&DaemonChromeOS::OnDBusRegistered,
+ base::Unretained(this)));
LOG(INFO) << "Waiting for DBus object to be registered.";
return EX_OK;
}
diff --git a/cros/dbus_service.cc b/cros/dbus_service.cc
index 668ba3a..28e1088 100644
--- a/cros/dbus_service.cc
+++ b/cros/dbus_service.cc
@@ -17,6 +17,7 @@
#include "update_engine/cros/dbus_service.h"
#include <string>
+#include <utility>
#include <vector>
#include <update_engine/dbus-constants.h>
@@ -231,9 +232,9 @@
dbus::ObjectPath(update_engine::kUpdateEngineServicePath)) {}
void UpdateEngineAdaptor::RegisterAsync(
- const base::Callback<void(bool)>& completion_callback) {
+ base::OnceCallback<void(bool)> completion_callback) {
RegisterWithDBusObject(&dbus_object_);
- dbus_object_.RegisterAsync(completion_callback);
+ dbus_object_.RegisterAsync(std::move(completion_callback));
}
bool UpdateEngineAdaptor::RequestOwnership() {
diff --git a/cros/dbus_service.h b/cros/dbus_service.h
index 73b6a88..c2023d9 100644
--- a/cros/dbus_service.h
+++ b/cros/dbus_service.h
@@ -191,7 +191,7 @@
// Register the DBus object with the update engine service asynchronously.
// Calls |copmletion_callback| when done passing a boolean indicating if the
// registration succeeded.
- void RegisterAsync(const base::Callback<void(bool)>& completion_callback);
+ void RegisterAsync(base::OnceCallback<void(bool)> completion_callback);
// Takes ownership of the well-known DBus name and returns whether it
// succeeded.
diff --git a/cros/dbus_test_utils.h b/cros/dbus_test_utils.h
index a6abbf9..06657c5 100644
--- a/cros/dbus_test_utils.h
+++ b/cros/dbus_test_utils.h
@@ -50,19 +50,21 @@
// Returns whether the signal handler is registered.
bool IsHandlerRegistered() const { return signal_callback_ != nullptr; }
- const base::Callback<T>& signal_callback() { return *signal_callback_.get(); }
+ const base::RepeatingCallback<T>& signal_callback() {
+ return *signal_callback_.get();
+ }
void GrabCallbacks(
- const base::Callback<T>& signal_callback,
+ const base::RepeatingCallback<T>& signal_callback,
dbus::ObjectProxy::OnConnectedCallback* on_connected_callback) {
- signal_callback_.reset(new base::Callback<T>(signal_callback));
+ signal_callback_.reset(new base::RepeatingCallback<T>(signal_callback));
on_connected_callback_.reset(new dbus::ObjectProxy::OnConnectedCallback(
std::move(*on_connected_callback)));
// Notify from the main loop that the callback was connected.
callback_connected_task_ = brillo::MessageLoop::current()->PostTask(
FROM_HERE,
- base::Bind(&MockSignalHandler<T>::OnCallbackConnected,
- base::Unretained(this)));
+ base::BindOnce(&MockSignalHandler<T>::OnCallbackConnected,
+ base::Unretained(this)));
}
private:
@@ -74,7 +76,7 @@
brillo::MessageLoop::TaskId callback_connected_task_{
brillo::MessageLoop::kTaskIdNull};
- std::unique_ptr<base::Callback<T>> signal_callback_;
+ std::unique_ptr<base::RepeatingCallback<T>> signal_callback_;
std::unique_ptr<dbus::ObjectProxy::OnConnectedCallback>
on_connected_callback_;
};
diff --git a/cros/download_action_chromeos_unittest.cc b/cros/download_action_chromeos_unittest.cc
index c56f306..052f1a1 100644
--- a/cros/download_action_chromeos_unittest.cc
+++ b/cros/download_action_chromeos_unittest.cc
@@ -199,7 +199,7 @@
loop.PostTask(
FROM_HERE,
- base::Bind(&StartProcessorInRunLoop, &processor, http_fetcher_ptr));
+ base::BindOnce(&StartProcessorInRunLoop, &processor, http_fetcher_ptr));
loop.Run();
EXPECT_FALSE(loop.PendingTasks());
@@ -330,7 +330,7 @@
loop.PostTask(
FROM_HERE,
- base::Bind(
+ base::BindOnce(
[](ActionProcessor* processor) { processor->StartProcessing(); },
base::Unretained(&processor)));
loop.Run();
@@ -387,7 +387,7 @@
processor.EnqueueAction(std::move(download_action));
loop.PostTask(FROM_HERE,
- base::Bind(&TerminateEarlyTestStarter, &processor));
+ base::BindOnce(&TerminateEarlyTestStarter, &processor));
loop.Run();
EXPECT_FALSE(loop.PendingTasks());
}
@@ -497,7 +497,7 @@
loop.PostTask(
FROM_HERE,
- base::Bind(
+ base::BindOnce(
[](ActionProcessor* processor) { processor->StartProcessing(); },
base::Unretained(&processor)));
loop.Run();
@@ -577,7 +577,7 @@
loop_.PostTask(
FROM_HERE,
- base::Bind(
+ base::BindOnce(
[](P2PDownloadActionTest* action_test, HttpFetcher* http_fetcher) {
action_test->processor_.StartProcessing();
http_fetcher->SetOffset(action_test->start_at_offset_);
@@ -742,7 +742,7 @@
loop_.PostTask(
FROM_HERE,
- base::Bind(
+ base::BindOnce(
[](ActionProcessor* processor) { processor->StartProcessing(); },
base::Unretained(&processor_)));
loop_.Run();
diff --git a/cros/fake_p2p_manager.h b/cros/fake_p2p_manager.h
index e8399d0..38d0df9 100644
--- a/cros/fake_p2p_manager.h
+++ b/cros/fake_p2p_manager.h
@@ -18,6 +18,7 @@
#define UPDATE_ENGINE_CROS_FAKE_P2P_MANAGER_H_
#include <string>
+#include <utility>
#include "update_engine/cros/p2p_manager.h"
@@ -50,7 +51,7 @@
size_t minimum_size,
base::TimeDelta max_time_to_wait,
LookupCallback callback) override {
- callback.Run(lookup_url_for_file_result_);
+ std::move(callback).Run(lookup_url_for_file_result_);
}
bool FileShare(const std::string& file_id, size_t expected_size) override {
diff --git a/cros/install_action_test.cc b/cros/install_action_test.cc
index 58d3985..1ec9940 100644
--- a/cros/install_action_test.cc
+++ b/cros/install_action_test.cc
@@ -155,7 +155,7 @@
loop_.PostTask(
FROM_HERE,
- base::Bind(
+ base::BindOnce(
[](ActionProcessor* processor) { processor->StartProcessing(); },
base::Unretained(&processor_)));
loop_.Run();
@@ -186,7 +186,7 @@
loop_.PostTask(
FROM_HERE,
- base::Bind(
+ base::BindOnce(
[](ActionProcessor* processor) { processor->StartProcessing(); },
base::Unretained(&processor_)));
loop_.Run();
@@ -217,7 +217,7 @@
loop_.PostTask(
FROM_HERE,
- base::Bind(
+ base::BindOnce(
[](ActionProcessor* processor) { processor->StartProcessing(); },
base::Unretained(&processor_)));
loop_.Run();
@@ -251,7 +251,7 @@
loop_.PostTask(
FROM_HERE,
- base::Bind(
+ base::BindOnce(
[](ActionProcessor* processor) { processor->StartProcessing(); },
base::Unretained(&processor_)));
loop_.Run();
diff --git a/cros/omaha_request_action.cc b/cros/omaha_request_action.cc
index cc42934..a97408b 100644
--- a/cros/omaha_request_action.cc
+++ b/cros/omaha_request_action.cc
@@ -906,8 +906,8 @@
file_id,
minimum_size,
kMaxP2PNetworkWaitTime,
- base::Bind(&OmahaRequestAction::OnLookupPayloadViaP2PCompleted,
- base::Unretained(this)));
+ base::BindOnce(&OmahaRequestAction::OnLookupPayloadViaP2PCompleted,
+ base::Unretained(this)));
}
}
diff --git a/cros/omaha_request_action_unittest.cc b/cros/omaha_request_action_unittest.cc
index c57066b..2007cab 100644
--- a/cros/omaha_request_action_unittest.cc
+++ b/cros/omaha_request_action_unittest.cc
@@ -590,7 +590,7 @@
tuc_params_.expected_download_error_code))
.Times(tuc_params_.ping_only ? 0 : 1);
- loop_.PostTask(base::Bind(
+ loop_.PostTask(base::BindOnce(
[](ActionProcessor* processor) { processor->StartProcessing(); },
base::Unretained(&processor)));
loop_.Run();
@@ -616,7 +616,7 @@
processor.set_delegate(&delegate_);
processor.EnqueueAction(std::move(action));
- loop_.PostTask(base::Bind(
+ loop_.PostTask(base::BindOnce(
[](ActionProcessor* processor) { processor->StartProcessing(); },
base::Unretained(&processor)));
loop_.Run();
@@ -1588,7 +1588,7 @@
processor.set_delegate(&delegate_);
processor.EnqueueAction(std::move(action));
- loop_.PostTask(base::Bind(
+ loop_.PostTask(base::BindOnce(
[](ActionProcessor* processor) { processor->StartProcessing(); },
base::Unretained(&processor)));
loop_.Run();
@@ -1721,7 +1721,7 @@
processor.set_delegate(&delegate);
processor.EnqueueAction(std::move(action));
- loop_.PostTask(base::Bind(&TerminateTransferTestStarter, &processor));
+ loop_.PostTask(base::BindOnce(&TerminateTransferTestStarter, &processor));
loop_.Run();
EXPECT_FALSE(loop_.PendingTasks());
}
diff --git a/cros/p2p_manager.cc b/cros/p2p_manager.cc
index aaa72cc..76a2cd8 100644
--- a/cros/p2p_manager.cc
+++ b/cros/p2p_manager.cc
@@ -57,7 +57,6 @@
#include "update_engine/update_manager/p2p_enabled_policy.h"
#include "update_engine/update_manager/update_manager.h"
-using base::Bind;
using base::FilePath;
using base::StringPrintf;
using base::Time;
@@ -374,7 +373,7 @@
class LookupData {
public:
explicit LookupData(P2PManager::LookupCallback callback)
- : callback_(callback) {}
+ : callback_(std::move(callback)) {}
~LookupData() {
if (timeout_task_ != MessageLoop::kTaskIdNull)
@@ -405,7 +404,7 @@
if (timeout > TimeDelta()) {
timeout_task_ = MessageLoop::current()->PostDelayedTask(
FROM_HERE,
- Bind(&LookupData::OnTimeout, base::Unretained(this)),
+ base::BindOnce(&LookupData::OnTimeout, base::Unretained(this)),
timeout);
}
}
@@ -414,8 +413,8 @@
void ReportErrorAndDeleteInIdle() {
MessageLoop::current()->PostTask(
FROM_HERE,
- Bind(&LookupData::OnIdleForReportErrorAndDelete,
- base::Unretained(this)));
+ base::BindOnce(&LookupData::OnIdleForReportErrorAndDelete,
+ base::Unretained(this)));
}
void OnIdleForReportErrorAndDelete() {
@@ -425,7 +424,7 @@
void IssueCallback(const string& url) {
if (!callback_.is_null())
- callback_.Run(url);
+ std::move(callback_).Run(url);
}
void ReportError() {
@@ -488,7 +487,7 @@
size_t minimum_size,
TimeDelta max_time_to_wait,
LookupCallback callback) {
- LookupData* lookup_data = new LookupData(callback);
+ LookupData* lookup_data = new LookupData(std::move(callback));
string file_id_with_ext = file_id + "." + file_extension_;
vector<string> args =
configuration_->GetP2PClientArgs(file_id_with_ext, minimum_size);
@@ -695,7 +694,8 @@
update_manager_->PolicyRequest(
std::make_unique<P2PEnabledChangedPolicy>(),
policy_data_,
- Bind(&P2PManagerImpl::OnEnabledStatusChange, base::Unretained(this)));
+ base::BindOnce(&P2PManagerImpl::OnEnabledStatusChange,
+ base::Unretained(this)));
waiting_for_enabled_status_change_ = true;
}
diff --git a/cros/p2p_manager.h b/cros/p2p_manager.h
index 889731d..14e4ca4 100644
--- a/cros/p2p_manager.h
+++ b/cros/p2p_manager.h
@@ -59,7 +59,7 @@
// The type for the callback used in LookupUrlForFile().
// If the lookup failed, |url| is empty.
- typedef base::Callback<void(const std::string& url)> LookupCallback;
+ typedef base::OnceCallback<void(const std::string& url)> LookupCallback;
// Use the device policy specified by |device_policy|. If this is
// null, then no device policy is used.
diff --git a/cros/p2p_manager_unittest.cc b/cros/p2p_manager_unittest.cc
index bd275a6..dc99471 100644
--- a/cros/p2p_manager_unittest.cc
+++ b/cros/p2p_manager_unittest.cc
@@ -505,31 +505,31 @@
"fooX",
42,
TimeDelta(),
- base::Bind(ExpectUrl, "http://1.2.3.4/fooX.cros_au_42"));
+ base::BindOnce(ExpectUrl, "http://1.2.3.4/fooX.cros_au_42"));
loop_.Run();
// Emulate p2p-client returning invalid URL.
test_conf_->SetP2PClientCommand({"echo", "not_a_valid_url"});
manager_->LookupUrlForFile(
- "foobar", 42, TimeDelta(), base::Bind(ExpectUrl, ""));
+ "foobar", 42, TimeDelta(), base::BindOnce(ExpectUrl, ""));
loop_.Run();
// Emulate p2p-client conveying failure.
test_conf_->SetP2PClientCommand({"false"});
manager_->LookupUrlForFile(
- "foobar", 42, TimeDelta(), base::Bind(ExpectUrl, ""));
+ "foobar", 42, TimeDelta(), base::BindOnce(ExpectUrl, ""));
loop_.Run();
// Emulate p2p-client not existing.
test_conf_->SetP2PClientCommand({"/path/to/non/existent/helper/program"});
manager_->LookupUrlForFile(
- "foobar", 42, TimeDelta(), base::Bind(ExpectUrl, ""));
+ "foobar", 42, TimeDelta(), base::BindOnce(ExpectUrl, ""));
loop_.Run();
// Emulate p2p-client crashing.
test_conf_->SetP2PClientCommand({"sh", "-c", "kill -SEGV $$"});
manager_->LookupUrlForFile(
- "foobar", 42, TimeDelta(), base::Bind(ExpectUrl, ""));
+ "foobar", 42, TimeDelta(), base::BindOnce(ExpectUrl, ""));
loop_.Run();
// Emulate p2p-client exceeding its timeout.
@@ -547,7 +547,7 @@
"echo http://1.2.3.4/; "
"wait"});
manager_->LookupUrlForFile(
- "foobar", 42, base::Milliseconds(500), base::Bind(ExpectUrl, ""));
+ "foobar", 42, base::Milliseconds(500), base::BindOnce(ExpectUrl, ""));
loop_.Run();
}
diff --git a/cros/update_attempter.cc b/cros/update_attempter.cc
index bfb410a..184f945 100644
--- a/cros/update_attempter.cc
+++ b/cros/update_attempter.cc
@@ -72,8 +72,6 @@
#include "update_engine/update_manager/update_manager.h"
#include "update_engine/update_status_utils.h"
-using base::Bind;
-using base::Callback;
using base::FilePath;
using base::Time;
using base::TimeDelta;
@@ -218,8 +216,8 @@
SystemState::Get()->update_manager()->PolicyRequest(
std::make_unique<UpdateCheckAllowedPolicy>(),
policy_data_, // Do not move because we don't want transfer of ownership.
- base::Bind(&UpdateAttempter::OnUpdateScheduled,
- weak_ptr_factory_.GetWeakPtr()));
+ base::BindOnce(&UpdateAttempter::OnUpdateScheduled,
+ weak_ptr_factory_.GetWeakPtr()));
waiting_for_scheduled_check_ = true;
return true;
@@ -239,20 +237,21 @@
// Update boot flags after delay.
MessageLoop::current()->PostDelayedTask(
FROM_HERE,
- base::Bind(&ActionProcessor::StartProcessing,
- base::Unretained(&aux_processor_)),
+ base::BindOnce(&ActionProcessor::StartProcessing,
+ base::Unretained(&aux_processor_)),
base::Seconds(60));
// Broadcast the update engine status on startup to ensure consistent system
// state on crashes.
- MessageLoop::current()->PostTask(FROM_HERE,
- base::Bind(&UpdateAttempter::BroadcastStatus,
- weak_ptr_factory_.GetWeakPtr()));
+ MessageLoop::current()->PostTask(
+ FROM_HERE,
+ base::BindOnce(&UpdateAttempter::BroadcastStatus,
+ weak_ptr_factory_.GetWeakPtr()));
MessageLoop::current()->PostTask(
FROM_HERE,
- base::Bind(&UpdateAttempter::UpdateEngineStarted,
- weak_ptr_factory_.GetWeakPtr()));
+ base::BindOnce(&UpdateAttempter::UpdateEngineStarted,
+ weak_ptr_factory_.GetWeakPtr()));
return true;
}
@@ -2033,8 +2032,9 @@
LOG(INFO) << "Scheduling an action processor start.";
MessageLoop::current()->PostTask(
FROM_HERE,
- Bind([](ActionProcessor* processor) { processor->StartProcessing(); },
- base::Unretained(processor_.get())));
+ base::BindOnce(
+ [](ActionProcessor* processor) { processor->StartProcessing(); },
+ base::Unretained(processor_.get())));
}
void UpdateAttempter::DisableDeltaUpdateIfNeeded() {
diff --git a/cros/update_attempter.h b/cros/update_attempter.h
index ef4c409..609804b 100644
--- a/cros/update_attempter.h
+++ b/cros/update_attempter.h
@@ -267,7 +267,7 @@
// Note that only one callback can be set, so effectively at most one client
// can be notified.
virtual void set_forced_update_pending_callback(
- base::Callback<void(bool, bool)>* callback) {
+ base::RepeatingCallback<void(bool, bool)>* callback) {
forced_update_pending_callback_.reset(callback);
}
@@ -639,7 +639,7 @@
// cleared by an update attempt (false). The second argument indicates whether
// this is an interactive update, and its value is significant iff the first
// argument is true.
- std::unique_ptr<base::Callback<void(bool, bool)>>
+ std::unique_ptr<base::RepeatingCallback<void(bool, bool)>>
forced_update_pending_callback_;
// The |app_version| and |omaha_url| parameters received during the latest
diff --git a/cros/update_attempter_unittest.cc b/cros/update_attempter_unittest.cc
index b1c74d0..df3ee25 100644
--- a/cros/update_attempter_unittest.cc
+++ b/cros/update_attempter_unittest.cc
@@ -27,6 +27,7 @@
#include <base/files/file_util.h>
#include <base/files/scoped_temp_dir.h>
+#include <base/functional/callback_helpers.h>
#include <base/logging.h>
#include <base/task/single_thread_task_executor.h>
#include <brillo/message_loops/base_message_loop.h>
@@ -239,7 +240,7 @@
certificate_checker_->Init();
attempter_.set_forced_update_pending_callback(
- new base::Callback<void(bool, bool)>(base::Bind([](bool, bool) {})));
+ new base::RepeatingCallback<void(bool, bool)>(base::DoNothing()));
// Finish initializing the attempter.
attempter_.Init();
@@ -408,8 +409,8 @@
void UpdateAttempterTest::ScheduleQuitMainLoop() {
loop_.PostTask(
FROM_HERE,
- base::Bind([](brillo::BaseMessageLoop* loop) { loop->BreakLoop(); },
- base::Unretained(&loop_)));
+ base::BindOnce([](brillo::BaseMessageLoop* loop) { loop->BreakLoop(); },
+ base::Unretained(&loop_)));
}
void UpdateAttempterTest::SessionIdTestChange() {
@@ -422,8 +423,8 @@
TEST_F(UpdateAttempterTest, SessionIdTestChange) {
loop_.PostTask(FROM_HERE,
- base::Bind(&UpdateAttempterTest::SessionIdTestChange,
- base::Unretained(this)));
+ base::BindOnce(&UpdateAttempterTest::SessionIdTestChange,
+ base::Unretained(this)));
loop_.Run();
}
@@ -451,8 +452,9 @@
TEST_F(UpdateAttempterTest, SessionIdTestEnforceEmptyStrPingOmaha) {
loop_.PostTask(
FROM_HERE,
- base::Bind(&UpdateAttempterTest::SessionIdTestEnforceEmptyStrPingOmaha,
- base::Unretained(this)));
+ base::BindOnce(
+ &UpdateAttempterTest::SessionIdTestEnforceEmptyStrPingOmaha,
+ base::Unretained(this)));
loop_.Run();
}
@@ -478,8 +480,8 @@
TEST_F(UpdateAttempterTest, SessionIdTestConsistencyInUpdateFlow) {
loop_.PostTask(
FROM_HERE,
- base::Bind(&UpdateAttempterTest::SessionIdTestConsistencyInUpdateFlow,
- base::Unretained(this)));
+ base::BindOnce(&UpdateAttempterTest::SessionIdTestConsistencyInUpdateFlow,
+ base::Unretained(this)));
loop_.Run();
}
@@ -505,9 +507,10 @@
}
TEST_F(UpdateAttempterTest, SessionIdTestInDownloadAction) {
- loop_.PostTask(FROM_HERE,
- base::Bind(&UpdateAttempterTest::SessionIdTestInDownloadAction,
- base::Unretained(this)));
+ loop_.PostTask(
+ FROM_HERE,
+ base::BindOnce(&UpdateAttempterTest::SessionIdTestInDownloadAction,
+ base::Unretained(this)));
loop_.Run();
}
@@ -812,8 +815,8 @@
attempter_.Update({});
loop_.PostTask(FROM_HERE,
- base::Bind(&UpdateAttempterTest::UpdateTestVerify,
- base::Unretained(this)));
+ base::BindOnce(&UpdateAttempterTest::UpdateTestVerify,
+ base::Unretained(this)));
}
void UpdateAttempterTest::UpdateTestVerify() {
@@ -870,8 +873,8 @@
EXPECT_TRUE(attempter_.Rollback(true));
loop_.PostTask(FROM_HERE,
- base::Bind(&UpdateAttempterTest::RollbackTestVerify,
- base::Unretained(this)));
+ base::BindOnce(&UpdateAttempterTest::RollbackTestVerify,
+ base::Unretained(this)));
} else {
EXPECT_FALSE(attempter_.Rollback(true));
loop_.BreakLoop();
@@ -894,28 +897,28 @@
TEST_F(UpdateAttempterTest, RollbackTest) {
loop_.PostTask(FROM_HERE,
- base::Bind(&UpdateAttempterTest::RollbackTestStart,
- base::Unretained(this),
- false,
- true));
+ base::BindOnce(&UpdateAttempterTest::RollbackTestStart,
+ base::Unretained(this),
+ false,
+ true));
loop_.Run();
}
TEST_F(UpdateAttempterTest, InvalidSlotRollbackTest) {
loop_.PostTask(FROM_HERE,
- base::Bind(&UpdateAttempterTest::RollbackTestStart,
- base::Unretained(this),
- false,
- false));
+ base::BindOnce(&UpdateAttempterTest::RollbackTestStart,
+ base::Unretained(this),
+ false,
+ false));
loop_.Run();
}
TEST_F(UpdateAttempterTest, EnterpriseRollbackTest) {
loop_.PostTask(FROM_HERE,
- base::Bind(&UpdateAttempterTest::RollbackTestStart,
- base::Unretained(this),
- true,
- true));
+ base::BindOnce(&UpdateAttempterTest::RollbackTestStart,
+ base::Unretained(this),
+ true,
+ true));
loop_.Run();
}
@@ -935,8 +938,8 @@
// testing, which is more permissive than we want to handle here.
attempter_.DisableScheduleUpdates();
loop_.PostTask(FROM_HERE,
- base::Bind(&UpdateAttempterTest::PingOmahaTestStart,
- base::Unretained(this)));
+ base::BindOnce(&UpdateAttempterTest::PingOmahaTestStart,
+ base::Unretained(this)));
brillo::MessageLoopRunMaxIterations(&loop_, 100);
EXPECT_EQ(UpdateStatus::UPDATED_NEED_REBOOT, attempter_.status());
EXPECT_TRUE(attempter_.WasScheduleUpdatesCalled());
@@ -998,8 +1001,8 @@
TEST_F(UpdateAttempterTest, P2PNotEnabled) {
loop_.PostTask(FROM_HERE,
- base::Bind(&UpdateAttempterTest::P2PNotEnabledStart,
- base::Unretained(this)));
+ base::BindOnce(&UpdateAttempterTest::P2PNotEnabledStart,
+ base::Unretained(this)));
loop_.Run();
}
@@ -1017,9 +1020,10 @@
}
TEST_F(UpdateAttempterTest, P2PEnabledStartingFails) {
- loop_.PostTask(FROM_HERE,
- base::Bind(&UpdateAttempterTest::P2PEnabledStartingFailsStart,
- base::Unretained(this)));
+ loop_.PostTask(
+ FROM_HERE,
+ base::BindOnce(&UpdateAttempterTest::P2PEnabledStartingFailsStart,
+ base::Unretained(this)));
loop_.Run();
}
@@ -1041,8 +1045,8 @@
TEST_F(UpdateAttempterTest, P2PEnabledHousekeepingFails) {
loop_.PostTask(
FROM_HERE,
- base::Bind(&UpdateAttempterTest::P2PEnabledHousekeepingFailsStart,
- base::Unretained(this)));
+ base::BindOnce(&UpdateAttempterTest::P2PEnabledHousekeepingFailsStart,
+ base::Unretained(this)));
loop_.Run();
}
@@ -1063,8 +1067,8 @@
TEST_F(UpdateAttempterTest, P2PEnabled) {
loop_.PostTask(FROM_HERE,
- base::Bind(&UpdateAttempterTest::P2PEnabledStart,
- base::Unretained(this)));
+ base::BindOnce(&UpdateAttempterTest::P2PEnabledStart,
+ base::Unretained(this)));
loop_.Run();
}
@@ -1084,9 +1088,10 @@
}
TEST_F(UpdateAttempterTest, P2PEnabledInteractive) {
- loop_.PostTask(FROM_HERE,
- base::Bind(&UpdateAttempterTest::P2PEnabledInteractiveStart,
- base::Unretained(this)));
+ loop_.PostTask(
+ FROM_HERE,
+ base::BindOnce(&UpdateAttempterTest::P2PEnabledInteractiveStart,
+ base::Unretained(this)));
loop_.Run();
}
@@ -1109,8 +1114,8 @@
TEST_F(UpdateAttempterTest, ReadScatterFactorFromPolicy) {
loop_.PostTask(
FROM_HERE,
- base::Bind(&UpdateAttempterTest::ReadScatterFactorFromPolicyTestStart,
- base::Unretained(this)));
+ base::BindOnce(&UpdateAttempterTest::ReadScatterFactorFromPolicyTestStart,
+ base::Unretained(this)));
loop_.Run();
}
@@ -1139,8 +1144,8 @@
TEST_F(UpdateAttempterTest, DecrementUpdateCheckCountTest) {
loop_.PostTask(
FROM_HERE,
- base::Bind(&UpdateAttempterTest::DecrementUpdateCheckCountTestStart,
- base::Unretained(this)));
+ base::BindOnce(&UpdateAttempterTest::DecrementUpdateCheckCountTestStart,
+ base::Unretained(this)));
loop_.Run();
}
@@ -1193,7 +1198,7 @@
TEST_F(UpdateAttempterTest, NoScatteringDoneDuringManualUpdateTestStart) {
loop_.PostTask(
FROM_HERE,
- base::Bind(
+ base::BindOnce(
&UpdateAttempterTest::NoScatteringDoneDuringManualUpdateTestStart,
base::Unretained(this)));
loop_.Run();
@@ -1262,7 +1267,7 @@
TEST_F(UpdateAttempterTest, StagingSetsPrefsAndTurnsOffScattering) {
loop_.PostTask(
FROM_HERE,
- base::Bind(
+ base::BindOnce(
&UpdateAttempterTest::StagingSetsPrefsAndTurnsOffScatteringStart,
base::Unretained(this)));
loop_.Run();
@@ -1319,9 +1324,10 @@
}
TEST_F(UpdateAttempterTest, StagingOffIfInteractive) {
- loop_.PostTask(FROM_HERE,
- base::Bind(&UpdateAttempterTest::StagingOffIfInteractiveStart,
- base::Unretained(this)));
+ loop_.PostTask(
+ FROM_HERE,
+ base::BindOnce(&UpdateAttempterTest::StagingOffIfInteractiveStart,
+ base::Unretained(this)));
loop_.Run();
}
@@ -1338,8 +1344,8 @@
TEST_F(UpdateAttempterTest, StagingOffIfOobe) {
loop_.PostTask(FROM_HERE,
- base::Bind(&UpdateAttempterTest::StagingOffIfOobeStart,
- base::Unretained(this)));
+ base::BindOnce(&UpdateAttempterTest::StagingOffIfOobeStart,
+ base::Unretained(this)));
loop_.Run();
}
@@ -1823,32 +1829,35 @@
}
TEST_F(UpdateAttempterTest, ResetRollbackHappenedOobe) {
- loop_.PostTask(FROM_HERE,
- base::Bind(&UpdateAttempterTest::ResetRollbackHappenedStart,
- base::Unretained(this),
- /*is_consumer=*/false,
- /*is_policy_loaded=*/false,
- /*expected_reset=*/false));
+ loop_.PostTask(
+ FROM_HERE,
+ base::BindOnce(&UpdateAttempterTest::ResetRollbackHappenedStart,
+ base::Unretained(this),
+ /*is_consumer=*/false,
+ /*is_policy_loaded=*/false,
+ /*expected_reset=*/false));
loop_.Run();
}
TEST_F(UpdateAttempterTest, ResetRollbackHappenedConsumer) {
- loop_.PostTask(FROM_HERE,
- base::Bind(&UpdateAttempterTest::ResetRollbackHappenedStart,
- base::Unretained(this),
- /*is_consumer=*/true,
- /*is_policy_loaded=*/false,
- /*expected_reset=*/true));
+ loop_.PostTask(
+ FROM_HERE,
+ base::BindOnce(&UpdateAttempterTest::ResetRollbackHappenedStart,
+ base::Unretained(this),
+ /*is_consumer=*/true,
+ /*is_policy_loaded=*/false,
+ /*expected_reset=*/true));
loop_.Run();
}
TEST_F(UpdateAttempterTest, ResetRollbackHappenedEnterprise) {
- loop_.PostTask(FROM_HERE,
- base::Bind(&UpdateAttempterTest::ResetRollbackHappenedStart,
- base::Unretained(this),
- /*is_consumer=*/false,
- /*is_policy_loaded=*/true,
- /*expected_reset=*/true));
+ loop_.PostTask(
+ FROM_HERE,
+ base::BindOnce(&UpdateAttempterTest::ResetRollbackHappenedStart,
+ base::Unretained(this),
+ /*is_consumer=*/false,
+ /*is_policy_loaded=*/true,
+ /*expected_reset=*/true));
loop_.Run();
}
diff --git a/cros/update_engine_client.cc b/cros/update_engine_client.cc
index 7b10cf4..6f8b9a8 100644
--- a/cros/update_engine_client.cc
+++ b/cros/update_engine_client.cc
@@ -91,8 +91,8 @@
// of the ProcessFlags method after the Daemon initialization is done.
base::SingleThreadTaskRunner::GetCurrentDefault()->PostTask(
FROM_HERE,
- base::Bind(&UpdateEngineClient::ProcessFlagsAndExit,
- base::Unretained(this)));
+ base::BindOnce(&UpdateEngineClient::ProcessFlagsAndExit,
+ base::Unretained(this)));
return EX_OK;
}
diff --git a/libcurl_http_fetcher.cc b/libcurl_http_fetcher.cc
index 754739c..ab70712 100644
--- a/libcurl_http_fetcher.cc
+++ b/libcurl_http_fetcher.cc
@@ -326,9 +326,9 @@
void LibcurlHttpFetcher::BeginTransfer(const string& url) {
CHECK(!transfer_in_progress_);
url_ = url;
- auto closure =
- base::Bind(&LibcurlHttpFetcher::ProxiesResolved, base::Unretained(this));
- ResolveProxiesForUrl(url_, closure);
+ ResolveProxiesForUrl(url_,
+ base::BindOnce(&LibcurlHttpFetcher::ProxiesResolved,
+ base::Unretained(this)));
}
void LibcurlHttpFetcher::ProxiesResolved() {
@@ -457,8 +457,8 @@
#endif
MessageLoop::current()->PostDelayedTask(
FROM_HERE,
- base::Bind(&LibcurlHttpFetcher::CurlPerformOnce,
- base::Unretained(this)),
+ base::BindOnce(&LibcurlHttpFetcher::CurlPerformOnce,
+ base::Unretained(this)),
base::Seconds(1));
return;
}
@@ -511,8 +511,8 @@
no_network_retry_count_++;
retry_task_id_ = MessageLoop::current()->PostDelayedTask(
FROM_HERE,
- base::Bind(&LibcurlHttpFetcher::RetryTimeoutCallback,
- base::Unretained(this)),
+ base::BindOnce(&LibcurlHttpFetcher::RetryTimeoutCallback,
+ base::Unretained(this)),
kNoNetworkRetryTime);
LOG(INFO) << "No HTTP response, retry " << no_network_retry_count_;
} else if ((!sent_byte_ && !IsHttpResponseSuccess()) ||
@@ -537,8 +537,8 @@
LOG(INFO) << "Retrying with next proxy setting";
retry_task_id_ = MessageLoop::current()->PostTask(
FROM_HERE,
- base::Bind(&LibcurlHttpFetcher::RetryTimeoutCallback,
- base::Unretained(this)));
+ base::BindOnce(&LibcurlHttpFetcher::RetryTimeoutCallback,
+ base::Unretained(this)));
} else {
// Out of proxies. Give up.
LOG(INFO) << "No further proxies, indicating transfer complete";
@@ -577,8 +577,8 @@
LOG(INFO) << "Restarting transfer to download the remaining bytes";
retry_task_id_ = MessageLoop::current()->PostDelayedTask(
FROM_HERE,
- base::Bind(&LibcurlHttpFetcher::RetryTimeoutCallback,
- base::Unretained(this)),
+ base::BindOnce(&LibcurlHttpFetcher::RetryTimeoutCallback,
+ base::Unretained(this)),
retry_time_);
} else {
LOG(INFO) << "Transfer completed (" << http_response_code_ << "), "
@@ -757,8 +757,8 @@
<< " seconds.";
timeout_id_ = MessageLoop::current()->PostDelayedTask(
FROM_HERE,
- base::Bind(&LibcurlHttpFetcher::TimeoutCallback,
- base::Unretained(this)),
+ base::BindOnce(&LibcurlHttpFetcher::TimeoutCallback,
+ base::Unretained(this)),
idle_time_);
}
}
@@ -779,7 +779,8 @@
// be called back.
timeout_id_ = MessageLoop::current()->PostDelayedTask(
FROM_HERE,
- base::Bind(&LibcurlHttpFetcher::TimeoutCallback, base::Unretained(this)),
+ base::BindOnce(&LibcurlHttpFetcher::TimeoutCallback,
+ base::Unretained(this)),
idle_time_);
// CurlPerformOnce() may call CleanUp(), so we need to schedule our callback
diff --git a/payload_consumer/filesystem_verifier_action.cc b/payload_consumer/filesystem_verifier_action.cc
index 418a09a..3e6ddf6 100644
--- a/payload_consumer/filesystem_verifier_action.cc
+++ b/payload_consumer/filesystem_verifier_action.cc
@@ -194,10 +194,10 @@
bool read_async_ok = src_stream_->ReadAsync(
buffer_.data(),
bytes_to_read,
- base::Bind(&FilesystemVerifierAction::OnReadDoneCallback,
- base::Unretained(this)),
- base::Bind(&FilesystemVerifierAction::OnReadErrorCallback,
- base::Unretained(this)),
+ base::BindOnce(&FilesystemVerifierAction::OnReadDoneCallback,
+ base::Unretained(this)),
+ base::BindOnce(&FilesystemVerifierAction::OnReadErrorCallback,
+ base::Unretained(this)),
nullptr);
if (!read_async_ok) {
diff --git a/payload_consumer/filesystem_verifier_action_unittest.cc b/payload_consumer/filesystem_verifier_action_unittest.cc
index 2304e4c..1589afe 100644
--- a/payload_consumer/filesystem_verifier_action_unittest.cc
+++ b/payload_consumer/filesystem_verifier_action_unittest.cc
@@ -145,7 +145,7 @@
processor_.set_delegate(&delegate);
loop_.PostTask(FROM_HERE,
- base::Bind(
+ base::BindOnce(
[](ActionProcessor* processor, bool terminate_early) {
processor->StartProcessing();
if (terminate_early) {
@@ -313,7 +313,7 @@
loop_.PostTask(
FROM_HERE,
- base::Bind(
+ base::BindOnce(
[](ActionProcessor* processor) { processor->StartProcessing(); },
base::Unretained(&processor_)));
loop_.Run();
diff --git a/payload_consumer/postinstall_runner_action_unittest.cc b/payload_consumer/postinstall_runner_action_unittest.cc
index c1b0922..935cc06 100644
--- a/payload_consumer/postinstall_runner_action_unittest.cc
+++ b/payload_consumer/postinstall_runner_action_unittest.cc
@@ -125,16 +125,16 @@
// is ready by redirecting its input to /dev/zero.
loop_.PostDelayedTask(
FROM_HERE,
- base::Bind(&PostinstallRunnerActionTest::SuspendRunningAction,
- base::Unretained(this)),
+ base::BindOnce(&PostinstallRunnerActionTest::SuspendRunningAction,
+ base::Unretained(this)),
base::Milliseconds(100));
} else {
postinstall_action_->SuspendAction();
// Schedule to be resumed in a little bit.
loop_.PostDelayedTask(
FROM_HERE,
- base::Bind(&PostinstallRunnerActionTest::ResumeRunningAction,
- base::Unretained(this)),
+ base::BindOnce(&PostinstallRunnerActionTest::ResumeRunningAction,
+ base::Unretained(this)),
base::Milliseconds(100));
}
}
@@ -144,8 +144,8 @@
// Wait for the postinstall command to run.
loop_.PostDelayedTask(
FROM_HERE,
- base::Bind(&PostinstallRunnerActionTest::CancelWhenStarted,
- base::Unretained(this)),
+ base::BindOnce(&PostinstallRunnerActionTest::CancelWhenStarted,
+ base::Unretained(this)),
base::Milliseconds(10));
} else {
CHECK(processor_);
@@ -153,7 +153,7 @@
// doesn't leak memory, do not directly call |StopProcessing()|.
loop_.PostDelayedTask(
FROM_HERE,
- base::Bind(
+ base::BindOnce(
[](ActionProcessor* processor) { processor->StopProcessing(); },
base::Unretained(processor_)),
base::Milliseconds(100));
@@ -227,7 +227,7 @@
loop_.PostTask(
FROM_HERE,
- base::Bind(
+ base::BindOnce(
[](ActionProcessor* processor) { processor->StartProcessing(); },
base::Unretained(&processor)));
loop_.Run();
@@ -423,9 +423,10 @@
ScopedLoopbackDeviceBinder loop(postinstall_image_, false, nullptr);
// We need to wait for the child to run and setup its signal handler.
- loop_.PostTask(FROM_HERE,
- base::Bind(&PostinstallRunnerActionTest::SuspendRunningAction,
- base::Unretained(this)));
+ loop_.PostTask(
+ FROM_HERE,
+ base::BindOnce(&PostinstallRunnerActionTest::SuspendRunningAction,
+ base::Unretained(this)));
RunPostinstallAction(loop.dev(), "bin/postinst_suspend", false, false, false);
// postinst_suspend returns 0 only if it was suspended at some point.
EXPECT_EQ(ErrorCode::kSuccess, processor_delegate_.code_);
diff --git a/update_manager/evaluation_context.cc b/update_manager/evaluation_context.cc
index fa19161..ec0734c 100644
--- a/update_manager/evaluation_context.cc
+++ b/update_manager/evaluation_context.cc
@@ -31,8 +31,6 @@
#include "update_engine/common/system_state.h"
#include "update_engine/common/utils.h"
-using base::Callback;
-using base::Closure;
using base::Time;
using base::TimeDelta;
using brillo::MessageLoop;
@@ -79,7 +77,7 @@
RemoveObserversAndTimeout();
}
-unique_ptr<Closure> EvaluationContext::RemoveObserversAndTimeout() {
+unique_ptr<base::OnceClosure> EvaluationContext::RemoveObserversAndTimeout() {
for (auto& it : value_cache_) {
if (it.first->GetMode() == kVariableModeAsync)
it.first->RemoveObserver(this);
@@ -119,10 +117,10 @@
void EvaluationContext::OnValueChangedOrTimeout() {
// Copy the callback handle locally, allowing it to be reassigned.
- unique_ptr<Closure> callback = RemoveObserversAndTimeout();
+ unique_ptr<base::OnceClosure> callback = RemoveObserversAndTimeout();
if (callback.get())
- callback->Run();
+ std::move(*callback).Run();
}
bool EvaluationContext::IsWallclockTimeGreaterThan(Time timestamp) {
@@ -158,7 +156,7 @@
is_expired_ = false;
}
-bool EvaluationContext::RunOnValueChangeOrTimeout(Closure callback) {
+bool EvaluationContext::RunOnValueChangeOrTimeout(base::OnceClosure callback) {
// Check that the method was not called more than once.
if (callback_.get()) {
LOG(ERROR) << "RunOnValueChangeOrTimeout called more than once.";
@@ -208,7 +206,7 @@
timeout = expiration;
// Store the reevaluation callback.
- callback_.reset(new Closure(std::move(callback)));
+ callback_.reset(new base::OnceClosure(std::move(callback)));
// Schedule a timeout event, if one is set.
if (!timeout.is_max()) {
@@ -216,8 +214,8 @@
<< chromeos_update_engine::utils::FormatTimeDelta(timeout);
timeout_event_ = MessageLoop::current()->PostDelayedTask(
FROM_HERE,
- base::Bind(&EvaluationContext::OnTimeout,
- weak_ptr_factory_.GetWeakPtr()),
+ base::BindOnce(&EvaluationContext::OnTimeout,
+ weak_ptr_factory_.GetWeakPtr()),
timeout);
}
diff --git a/update_manager/evaluation_context.h b/update_manager/evaluation_context.h
index b8979ed..ff1f513 100644
--- a/update_manager/evaluation_context.h
+++ b/update_manager/evaluation_context.h
@@ -102,14 +102,14 @@
// expiration occurred, prior to re-evaluating the policy.
void ResetExpiration();
- // Schedules the passed |callback| closure to be called when a cached
+ // Schedules the passed `callback` closure to be called when a cached
// variable changes its value, a polling interval passes, or the context
// expiration occurs. If none of these events can happen, for example if
// there's no cached variable, this method returns false.
//
// Right before the passed closure is called the EvaluationContext is
// reset, removing all the non-const cached values.
- bool RunOnValueChangeOrTimeout(base::Closure callback);
+ bool RunOnValueChangeOrTimeout(base::OnceClosure callback);
// Returns a textual representation of the evaluation context,
// including the variables and their values. This is intended only
@@ -119,7 +119,7 @@
// Removes all the Observers callbacks and timeout events scheduled by
// RunOnValueChangeOrTimeout(). Also releases and returns the closure
// associated with these events. This method is idempotent.
- std::unique_ptr<base::Closure> RemoveObserversAndTimeout();
+ std::unique_ptr<base::OnceClosure> RemoveObserversAndTimeout();
private:
friend class UmEvaluationContextTest;
@@ -153,7 +153,7 @@
// timeout, or notifying about the evaluation context expiration. It is up to
// the caller to determine whether or not expiration occurred via
// is_expired().
- std::unique_ptr<base::Closure> callback_;
+ std::unique_ptr<base::OnceClosure> callback_;
// The TaskId returned by the message loop identifying the timeout callback.
// Used for canceling the timeout callback.
diff --git a/update_manager/evaluation_context_unittest.cc b/update_manager/evaluation_context_unittest.cc
index d23ef26..8abcb7f 100644
--- a/update_manager/evaluation_context_unittest.cc
+++ b/update_manager/evaluation_context_unittest.cc
@@ -31,8 +31,6 @@
#include "update_engine/update_manager/mock_variable.h"
#include "update_engine/update_manager/umtest_utils.h"
-using base::Bind;
-using base::Closure;
using base::Time;
using base::TimeDelta;
using brillo::MessageLoop;
@@ -67,7 +65,7 @@
// Runs |evaluation|; if the value pointed by |count_p| is greater than zero,
// decrement it and schedule a reevaluation; otherwise, writes true to |done_p|.
-void EvaluateRepeatedly(Closure evaluation,
+void EvaluateRepeatedly(base::RepeatingClosure evaluation,
shared_ptr<EvaluationContext> ec,
int* count_p,
bool* done_p) {
@@ -75,7 +73,8 @@
// Schedule reevaluation if needed.
if (*count_p > 0) {
- Closure closure = Bind(EvaluateRepeatedly, evaluation, ec, count_p, done_p);
+ base::RepeatingClosure closure = base::BindRepeating(
+ EvaluateRepeatedly, evaluation, ec, count_p, done_p);
ASSERT_TRUE(ec->RunOnValueChangeOrTimeout(closure))
<< "Failed to schedule reevaluation, count_p=" << *count_p;
(*count_p)--;
@@ -218,7 +217,8 @@
eval_ctx_->GetValue(&fake_async_var_);
bool value = false;
- EXPECT_TRUE(eval_ctx_->RunOnValueChangeOrTimeout(Bind(&SetTrue, &value)));
+ EXPECT_TRUE(
+ eval_ctx_->RunOnValueChangeOrTimeout(base::BindOnce(&SetTrue, &value)));
// Check that the scheduled callback isn't run until we signal a ValueChaged.
MessageLoopRunMaxIterations(MessageLoop::current(), 100);
EXPECT_FALSE(value);
@@ -237,8 +237,10 @@
eval_ctx_->GetValue(&fake_async_var_);
bool value = false;
- EXPECT_TRUE(eval_ctx_->RunOnValueChangeOrTimeout(Bind(&SetTrue, &value)));
- EXPECT_FALSE(eval_ctx_->RunOnValueChangeOrTimeout(Bind(&SetTrue, &value)));
+ EXPECT_TRUE(
+ eval_ctx_->RunOnValueChangeOrTimeout(base::BindOnce(&SetTrue, &value)));
+ EXPECT_FALSE(
+ eval_ctx_->RunOnValueChangeOrTimeout(base::BindOnce(&SetTrue, &value)));
// The scheduled event should still work.
fake_async_var_.NotifyValueChanged();
@@ -252,12 +254,14 @@
eval_ctx_->GetValue(&fake_poll_var_);
bool value = false;
- EXPECT_TRUE(eval_ctx_->RunOnValueChangeOrTimeout(Bind(&SetTrue, &value)));
+ EXPECT_TRUE(
+ eval_ctx_->RunOnValueChangeOrTimeout(base::BindOnce(&SetTrue, &value)));
// Check that the scheduled callback isn't run until the timeout occurs.
MessageLoopRunMaxIterations(MessageLoop::current(), 10);
EXPECT_FALSE(value);
- MessageLoopRunUntil(
- MessageLoop::current(), base::Seconds(10), Bind(&GetBoolean, &value));
+ MessageLoopRunUntil(MessageLoop::current(),
+ base::Seconds(10),
+ base::BindRepeating(&GetBoolean, &value));
EXPECT_TRUE(value);
}
@@ -268,12 +272,14 @@
eval_ctx_->GetValue(&fake_async_var_);
bool value = false;
- EXPECT_TRUE(eval_ctx_->RunOnValueChangeOrTimeout(Bind(&SetTrue, &value)));
+ EXPECT_TRUE(
+ eval_ctx_->RunOnValueChangeOrTimeout(base::BindOnce(&SetTrue, &value)));
// Check that the scheduled callback isn't run until the timeout occurs.
MessageLoopRunMaxIterations(MessageLoop::current(), 10);
EXPECT_FALSE(value);
- MessageLoopRunUntil(
- MessageLoop::current(), base::Seconds(10), Bind(&GetBoolean, &value));
+ MessageLoopRunUntil(MessageLoop::current(),
+ base::Seconds(10),
+ base::BindRepeating(&GetBoolean, &value));
EXPECT_TRUE(value);
// Ensure that we cannot reschedule an evaluation.
@@ -290,7 +296,8 @@
eval_ctx_->GetValue(&fake_async_var_);
bool value = false;
- EXPECT_TRUE(eval_ctx_->RunOnValueChangeOrTimeout(Bind(&SetTrue, &value)));
+ EXPECT_TRUE(
+ eval_ctx_->RunOnValueChangeOrTimeout(base::BindOnce(&SetTrue, &value)));
eval_ctx_ = nullptr;
// This should not trigger the callback since the EvaluationContext waiting
@@ -304,7 +311,8 @@
TEST_F(UmEvaluationContextTest,
RunOnValueChangeOrTimeoutReevaluatesRepeatedly) {
fake_poll_var_.reset(new string("Polled value"));
- Closure evaluation = Bind(ReadVar<string>, eval_ctx_, &fake_poll_var_);
+ base::RepeatingClosure evaluation =
+ base::BindRepeating(ReadVar<string>, eval_ctx_, &fake_poll_var_);
int num_reevaluations = 2;
bool done = false;
@@ -312,11 +320,12 @@
evaluation.Run();
// Schedule repeated reevaluations.
- Closure closure = Bind(
+ base::RepeatingClosure closure = base::BindRepeating(
EvaluateRepeatedly, evaluation, eval_ctx_, &num_reevaluations, &done);
ASSERT_TRUE(eval_ctx_->RunOnValueChangeOrTimeout(closure));
- MessageLoopRunUntil(
- MessageLoop::current(), base::Seconds(10), Bind(&GetBoolean, &done));
+ MessageLoopRunUntil(MessageLoop::current(),
+ base::Seconds(10),
+ base::BindRepeating(&GetBoolean, &done));
EXPECT_EQ(0, num_reevaluations);
}
@@ -339,14 +348,16 @@
fake_short_poll_var.reset(new string("Polled value"));
eval_ctx_->GetValue(&fake_short_poll_var);
bool value = false;
- EXPECT_TRUE(eval_ctx_->RunOnValueChangeOrTimeout(Bind(&SetTrue, &value)));
+ EXPECT_TRUE(
+ eval_ctx_->RunOnValueChangeOrTimeout(base::BindOnce(&SetTrue, &value)));
// Remove the last reference to the EvaluationContext and run the loop for
// 10 seconds to give time to the main loop to trigger the timeout Event (of 1
// second). Our callback should not be called because the EvaluationContext
// was removed before the timeout event is attended.
eval_ctx_ = nullptr;
- MessageLoopRunUntil(
- MessageLoop::current(), base::Seconds(10), Bind(&GetBoolean, &value));
+ MessageLoopRunUntil(MessageLoop::current(),
+ base::Seconds(10),
+ base::BindRepeating(&GetBoolean, &value));
EXPECT_FALSE(value);
}
diff --git a/update_manager/generic_variables.h b/update_manager/generic_variables.h
index d09e89d..b25a790 100644
--- a/update_manager/generic_variables.h
+++ b/update_manager/generic_variables.h
@@ -146,11 +146,12 @@
template <typename T>
class CallCopyVariable : public Variable<T> {
public:
- CallCopyVariable(const std::string& name, base::Callback<T(void)> func)
+ CallCopyVariable(const std::string& name,
+ base::RepeatingCallback<T(void)> func)
: Variable<T>(name, kVariableModePoll), func_(func) {}
CallCopyVariable(const std::string& name,
const base::TimeDelta poll_interval,
- base::Callback<T(void)> func)
+ base::RepeatingCallback<T(void)> func)
: Variable<T>(name, poll_interval), func_(func) {}
CallCopyVariable(const CallCopyVariable&) = delete;
CallCopyVariable& operator=(const CallCopyVariable&) = delete;
@@ -168,7 +169,7 @@
FRIEND_TEST(UmCallCopyVariableTest, SimpleTest);
// The function to be called, stored as a base::Callback.
- base::Callback<T(void)> func_;
+ base::RepeatingCallback<T(void)> func_;
};
// A Variable class to implement simple Async variables. It provides two methods
diff --git a/update_manager/generic_variables_unittest.cc b/update_manager/generic_variables_unittest.cc
index bfdcf89..f7edad1 100644
--- a/update_manager/generic_variables_unittest.cc
+++ b/update_manager/generic_variables_unittest.cc
@@ -121,8 +121,8 @@
ASSERT_FALSE(test_obj.copied_);
test_obj.val_ = 5;
- base::Callback<CopyConstructorTestClass(void)> cb =
- base::Bind(test_func, &test_obj);
+ base::RepeatingCallback<CopyConstructorTestClass(void)> cb =
+ base::BindRepeating(test_func, &test_obj);
CallCopyVariable<CopyConstructorTestClass> var("var", cb);
unique_ptr<const CopyConstructorTestClass> copy(
@@ -136,7 +136,7 @@
TEST_F(UmCallCopyVariableTest, NullTest) {
// Ensures that the variable returns null when the callback is null.
- base::Callback<bool(void)> cb;
+ base::RepeatingCallback<bool(void)> cb;
CallCopyVariable<bool> var("var", cb);
UmTestUtils::ExpectVariableNotSet(&var);
}
diff --git a/update_manager/policy_evaluator.cc b/update_manager/policy_evaluator.cc
index 62f6206..982d852 100644
--- a/update_manager/policy_evaluator.cc
+++ b/update_manager/policy_evaluator.cc
@@ -68,29 +68,29 @@
}
void PolicyEvaluator::ScheduleEvaluation(
- base::Callback<void(EvalStatus)> callback) {
- base::Closure eval_callback =
- base::Bind(&PolicyEvaluator::OnPolicyReadyToEvaluate,
- weak_ptr_factory_.GetWeakPtr(),
- std::move(callback));
- brillo::MessageLoop::current()->PostTask(FROM_HERE, eval_callback);
+ base::OnceCallback<void(EvalStatus)> callback) {
+ brillo::MessageLoop::current()->PostTask(
+ FROM_HERE,
+ base::BindOnce(&PolicyEvaluator::OnPolicyReadyToEvaluate,
+ weak_ptr_factory_.GetWeakPtr(),
+ std::move(callback)));
}
void PolicyEvaluator::OnPolicyReadyToEvaluate(
- base::Callback<void(EvalStatus)> callback) {
+ base::OnceCallback<void(EvalStatus)> callback) {
// Evaluate the policy.
EvalStatus status = Evaluate();
if (status != EvalStatus::kAskMeAgainLater) {
- callback.Run(status);
+ std::move(callback).Run(status);
Unregister();
return;
}
// Re-schedule the policy request based on used variables.
if (ec_->RunOnValueChangeOrTimeout(
- base::Bind(&PolicyEvaluator::OnPolicyReadyToEvaluate,
- weak_ptr_factory_.GetWeakPtr(),
- callback)))
+ base::BindOnce(&PolicyEvaluator::OnPolicyReadyToEvaluate,
+ weak_ptr_factory_.GetWeakPtr(),
+ std::move(callback))))
return; // Reevaluation scheduled successfully.
// Scheduling a reevaluation can fail because policy method didn't use any
@@ -99,7 +99,7 @@
// use of the scheduling interface.
LOG(ERROR) << "Failed to schedule a reevaluation of policy"
<< "; this is a bug.";
- callback.Run(status);
+ std::move(callback).Run(status);
Unregister();
}
diff --git a/update_manager/policy_evaluator.h b/update_manager/policy_evaluator.h
index 1bef2fe..dd4fd53 100644
--- a/update_manager/policy_evaluator.h
+++ b/update_manager/policy_evaluator.h
@@ -61,11 +61,11 @@
// Same as the above function but the asyncronous version. A call to this
// function returns immediately and an evalution is scheduled in the main
// message loop. The passed |callback| is called when the policy is evaluated.
- void ScheduleEvaluation(base::Callback<void(EvalStatus)> callback);
+ void ScheduleEvaluation(base::OnceCallback<void(EvalStatus)> callback);
private:
// Internal function to reschedule policy evaluation.
- void OnPolicyReadyToEvaluate(base::Callback<void(EvalStatus)> callback);
+ void OnPolicyReadyToEvaluate(base::OnceCallback<void(EvalStatus)> callback);
State* state_;
std::unique_ptr<EvaluationContext> ec_;
std::unique_ptr<PolicyInterface> policy_;
diff --git a/update_manager/real_device_policy_provider.cc b/update_manager/real_device_policy_provider.cc
index 403aa52..62c3ae8 100644
--- a/update_manager/real_device_policy_provider.cc
+++ b/update_manager/real_device_policy_provider.cc
@@ -62,10 +62,11 @@
// We also listen for signals from the session manager to force a device
// policy refresh.
session_manager_proxy_->RegisterPropertyChangeCompleteSignalHandler(
- base::Bind(&RealDevicePolicyProvider::OnPropertyChangedCompletedSignal,
- base::Unretained(this)),
- base::Bind(&RealDevicePolicyProvider::OnSignalConnected,
- base::Unretained(this)));
+ base::BindRepeating(
+ &RealDevicePolicyProvider::OnPropertyChangedCompletedSignal,
+ base::Unretained(this)),
+ base::BindOnce(&RealDevicePolicyProvider::OnSignalConnected,
+ base::Unretained(this)));
return true;
}
@@ -100,8 +101,9 @@
RefreshDevicePolicy();
scheduled_refresh_ = MessageLoop::current()->PostDelayedTask(
FROM_HERE,
- base::Bind(&RealDevicePolicyProvider::RefreshDevicePolicyAndReschedule,
- base::Unretained(this)),
+ base::BindOnce(
+ &RealDevicePolicyProvider::RefreshDevicePolicyAndReschedule,
+ base::Unretained(this)),
kDevicePolicyRefreshRateTime);
}
diff --git a/update_manager/real_shill_provider.cc b/update_manager/real_shill_provider.cc
index 1c2640a..317671e 100644
--- a/update_manager/real_shill_provider.cc
+++ b/update_manager/real_shill_provider.cc
@@ -39,10 +39,10 @@
// Subscribe to the manager's PropertyChanged signal.
manager_proxy->RegisterPropertyChangedSignalHandler(
- base::Bind(&RealShillProvider::OnManagerPropertyChanged,
- base::Unretained(this)),
- base::Bind(&RealShillProvider::OnSignalConnected,
- base::Unretained(this)));
+ base::BindRepeating(&RealShillProvider::OnManagerPropertyChanged,
+ base::Unretained(this)),
+ base::BindOnce(&RealShillProvider::OnSignalConnected,
+ base::Unretained(this)));
// Attempt to read initial connection status. Even if this fails because shill
// is not responding (e.g. it is down) we'll be notified via "PropertyChanged"
diff --git a/update_manager/real_system_provider.cc b/update_manager/real_system_provider.cc
index 45a317e..a0ceeda 100644
--- a/update_manager/real_system_provider.cc
+++ b/update_manager/real_system_provider.cc
@@ -54,7 +54,7 @@
public:
RetryPollVariable(const string& name,
const base::TimeDelta poll_interval,
- base::Callback<bool(T* res)> func)
+ base::RepeatingCallback<bool(T* res)> func)
: Variable<T>(name, poll_interval),
func_(func),
base_interval_(poll_interval) {
@@ -87,7 +87,7 @@
private:
// The function to be called, stored as a base::Callback.
- base::Callback<bool(T*)> func_;
+ base::RepeatingCallback<bool(T*)> func_;
// The desired polling interval when |func_| works and returns true.
base::TimeDelta base_interval_;
@@ -108,9 +108,10 @@
var_is_oobe_complete_.reset(new CallCopyVariable<bool>(
"is_oobe_complete",
- base::Bind(&chromeos_update_engine::HardwareInterface::IsOOBEComplete,
- base::Unretained(SystemState::Get()->hardware()),
- nullptr)));
+ base::BindRepeating(
+ &chromeos_update_engine::HardwareInterface::IsOOBEComplete,
+ base::Unretained(SystemState::Get()->hardware()),
+ nullptr)));
var_num_slots_.reset(new ConstCopyVariable<unsigned int>(
"num_slots", SystemState::Get()->boot_control()->GetNumSlots()));
@@ -118,8 +119,9 @@
var_kiosk_required_platform_version_.reset(new RetryPollVariable<string>(
"kiosk_required_platform_version",
base::Hours(5), // Same as Chrome's CWS poll.
- base::Bind(&RealSystemProvider::GetKioskAppRequiredPlatformVersion,
- base::Unretained(this))));
+ base::BindRepeating(
+ &RealSystemProvider::GetKioskAppRequiredPlatformVersion,
+ base::Unretained(this))));
var_chromeos_version_.reset(new ConstCopyVariable<base::Version>(
"chromeos_version",
@@ -130,14 +132,16 @@
var_is_resuming_from_hibernate_.reset(new CallCopyVariable<bool>(
"is_resuming_from_hibernate",
- base::Bind(&chromeos_update_engine::HibernateInterface::IsResuming,
- base::Unretained(SystemState::Get()->hibernate()))));
+ base::BindRepeating(
+ &chromeos_update_engine::HibernateInterface::IsResuming,
+ base::Unretained(SystemState::Get()->hibernate()))));
var_abort_resume_from_hibernate_.reset(new CallCopyVariable<bool>(
"abort_resume_from_hibernate",
- base::Bind(&chromeos_update_engine::HibernateInterface::AbortResume,
- base::Unretained(SystemState::Get()->hibernate()),
- "System update pending for too long")));
+ base::BindRepeating(
+ &chromeos_update_engine::HibernateInterface::AbortResume,
+ base::Unretained(SystemState::Get()->hibernate()),
+ "System update pending for too long")));
return true;
}
diff --git a/update_manager/real_updater_provider.cc b/update_manager/real_updater_provider.cc
index a2631b9..2794673 100644
--- a/update_manager/real_updater_provider.cc
+++ b/update_manager/real_updater_provider.cc
@@ -384,9 +384,10 @@
: UpdaterVariableBase<UpdateRequestStatus>::UpdaterVariableBase(
name, kVariableModeAsync) {
SystemState::Get()->update_attempter()->set_forced_update_pending_callback(
- new base::Callback<void(bool, bool)>( // NOLINT(readability/function)
- base::Bind(&ForcedUpdateRequestedVariable::Reset,
- base::Unretained(this))));
+ new base::RepeatingCallback<void(
+ bool, bool)>( // NOLINT(readability/function)
+ base::BindRepeating(&ForcedUpdateRequestedVariable::Reset,
+ base::Unretained(this))));
}
ForcedUpdateRequestedVariable(const ForcedUpdateRequestedVariable&) = delete;
ForcedUpdateRequestedVariable& operator=(
diff --git a/update_manager/update_manager.cc b/update_manager/update_manager.cc
index 166c58c..683975b 100644
--- a/update_manager/update_manager.cc
+++ b/update_manager/update_manager.cc
@@ -43,9 +43,10 @@
.Evaluate();
}
-void UpdateManager::PolicyRequest(std::unique_ptr<PolicyInterface> policy,
- std::shared_ptr<PolicyDataInterface> data,
- base::Callback<void(EvalStatus)> callback) {
+void UpdateManager::PolicyRequest(
+ std::unique_ptr<PolicyInterface> policy,
+ std::shared_ptr<PolicyDataInterface> data,
+ base::OnceCallback<void(EvalStatus)> callback) {
auto ec = std::make_unique<EvaluationContext>(evaluation_timeout_,
expiration_timeout_);
evaluators_.push_back(std::make_unique<PolicyEvaluator>(
diff --git a/update_manager/update_manager.h b/update_manager/update_manager.h
index a5d1ecb..7f12955 100644
--- a/update_manager/update_manager.h
+++ b/update_manager/update_manager.h
@@ -70,7 +70,7 @@
// with the EvalStatus::kAskMeAgainLater status (which indicates an error).
void PolicyRequest(std::unique_ptr<PolicyInterface> policy,
std::shared_ptr<PolicyDataInterface> data,
- base::Callback<void(EvalStatus)> callback);
+ base::OnceCallback<void(EvalStatus)> callback);
// Removes the |evaluator| from the internal list of |evaluators_|.
void Unregister(PolicyEvaluator* evaluator);
diff --git a/update_manager/update_manager_unittest.cc b/update_manager/update_manager_unittest.cc
index 16fe9bc..a2a04af 100644
--- a/update_manager/update_manager_unittest.cc
+++ b/update_manager/update_manager_unittest.cc
@@ -38,8 +38,6 @@
#include "update_engine/update_manager/fake_state.h"
#include "update_engine/update_manager/umtest_utils.h"
-using base::Bind;
-using base::Callback;
using base::Time;
using brillo::MessageLoop;
using brillo::MessageLoopRunMaxIterations;
@@ -213,11 +211,11 @@
// succeeds the first time, we ensure that the passed callback is called from
// the main loop in both cases even when we could evaluate it right now.
vector<EvalStatus> calls;
- Callback<void(EvalStatus)> callback = Bind(AccumulateCallsCallback, &calls);
+ auto callback = base::BindOnce(AccumulateCallsCallback, &calls);
umut_->PolicyRequest(std::make_unique<FailingPolicy>(),
std::make_shared<PolicyDataInterface>(),
- callback);
+ std::move(callback));
// The callback should wait until we run the main loop for it to be executed.
EXPECT_EQ(0U, calls.size());
MessageLoopRunMaxIterations(MessageLoop::current(), 100);
@@ -228,12 +226,12 @@
// Set up an async policy call to return immediately, then wait a little and
// ensure that the timeout event does not fire.
vector<EvalStatus> calls;
- Callback<void(EvalStatus)> callback = Bind(AccumulateCallsCallback, &calls);
+ auto callback = base::BindOnce(AccumulateCallsCallback, &calls);
int num_called = 0;
umut_->PolicyRequest(std::make_unique<FailingPolicy>(&num_called),
std::make_shared<PolicyDataInterface>(),
- callback);
+ std::move(callback));
// Run the main loop, ensure that policy was attempted once before deferring
// to the default.
MessageLoopRunMaxIterations(MessageLoop::current(), 100);
@@ -254,13 +252,14 @@
// that the default policy was not used (no callback) and that evaluation is
// reattempted.
vector<EvalStatus> calls;
- Callback<void(EvalStatus)> callback = Bind(AccumulateCallsCallback, &calls);
+ auto callback = base::BindOnce(AccumulateCallsCallback, &calls);
int num_called = 0;
auto policy = std::make_unique<DelayPolicy>(
0, fake_clock->GetWallclockTime() + base::Seconds(3), &num_called);
- umut_->PolicyRequest(
- std::move(policy), std::make_shared<PolicyDataInterface>(), callback);
+ umut_->PolicyRequest(std::move(policy),
+ std::make_shared<PolicyDataInterface>(),
+ std::move(callback));
// Run the main loop, ensure that policy was attempted once but the callback
// was not invoked.
MessageLoopRunMaxIterations(MessageLoop::current(), 100);
@@ -289,7 +288,7 @@
TEST_F(UmUpdateManagerTest, AsyncPolicyRequestIsAddedToList) {
umut_->PolicyRequest(std::make_unique<SimplePolicy>(),
std::make_shared<PolicyDataInterface>(),
- base::Bind([](EvalStatus) {}));
+ base::BindOnce([](EvalStatus) {}));
EXPECT_EQ(1, umut_->evaluators_.size());
MessageLoopRunMaxIterations(MessageLoop::current(), 10);
diff --git a/update_manager/update_time_restrictions_monitor.cc b/update_manager/update_time_restrictions_monitor.cc
index e5c8e90..c8dc31c 100644
--- a/update_manager/update_time_restrictions_monitor.cc
+++ b/update_manager/update_time_restrictions_monitor.cc
@@ -77,8 +77,8 @@
WaitForRestrictedIntervalStarts(*new_intervals);
const bool is_registered = evaluation_context_.RunOnValueChangeOrTimeout(
- base::Bind(&UpdateTimeRestrictionsMonitor::OnIntervalsChanged,
- base::Unretained(this)));
+ base::BindOnce(&UpdateTimeRestrictionsMonitor::OnIntervalsChanged,
+ base::Unretained(this)));
DCHECK(is_registered);
}
@@ -104,8 +104,9 @@
timeout_event_ = MessageLoop::current()->PostDelayedTask(
FROM_HERE,
- base::Bind(&UpdateTimeRestrictionsMonitor::HandleRestrictedIntervalStarts,
- weak_ptr_factory_.GetWeakPtr()),
+ base::BindOnce(
+ &UpdateTimeRestrictionsMonitor::HandleRestrictedIntervalStarts,
+ weak_ptr_factory_.GetWeakPtr()),
duration_till_start);
}
diff --git a/update_manager/variable.h b/update_manager/variable.h
index 313829d..bf4ec25 100644
--- a/update_manager/variable.h
+++ b/update_manager/variable.h
@@ -131,8 +131,8 @@
if (!observer_list_.empty()) {
brillo::MessageLoop::current()->PostTask(
FROM_HERE,
- base::Bind(&BaseVariable::OnValueChangedNotification,
- base::Unretained(this)));
+ base::BindOnce(&BaseVariable::OnValueChangedNotification,
+ base::Unretained(this)));
}
}