libweave: only base::Bind captureless lambdas
The new libchrome provides base::Bind support for lambdas but
it causes a compile error when the lambda expression has captures.
Bind those arguments explicitly where they exist.
BUG=b:37434548
TEST=unit tests
Change-Id: I7fc1137585d0d2aa8973a60de21f7b6e467f400e
Reviewed-on: https://chromium-review.googlesource.com/1058335
Commit-Ready: Eric Caruso <ejcaruso@chromium.org>
Tested-by: Eric Caruso <ejcaruso@chromium.org>
Reviewed-by: Dan Erat <derat@chromium.org>
diff --git a/src/commands/command_manager_unittest.cc b/src/commands/command_manager_unittest.cc
index 0c890a9..8faa97f 100644
--- a/src/commands/command_manager_unittest.cc
+++ b/src/commands/command_manager_unittest.cc
@@ -94,8 +94,8 @@
TEST(CommandManager, UpdateCommandVisibility) {
CommandManager manager;
int update_count = 0;
- auto on_command_change = [&update_count]() { update_count++; };
- manager.AddCommandDefChanged(base::Bind(on_command_change));
+ auto on_command_change = [](int* update_count) { (*update_count)++; };
+ manager.AddCommandDefChanged(base::Bind(on_command_change, &update_count));
auto json = CreateDictionaryValue(R"({
'foo': {
diff --git a/src/device_registration_info_unittest.cc b/src/device_registration_info_unittest.cc
index 03755d9..3ac7ed1 100644
--- a/src/device_registration_info_unittest.cc
+++ b/src/device_registration_info_unittest.cc
@@ -171,14 +171,15 @@
bool RefreshAccessToken(ErrorPtr* error) const {
bool succeeded = false;
- auto callback = [&succeeded, &error](ErrorPtr in_error) {
- if (error) {
- *error = std::move(in_error);
+ auto callback = [](bool* succeeded, ErrorPtr* out_error,
+ ErrorPtr in_error) {
+ if (out_error) {
+ *out_error = std::move(in_error);
return;
}
- succeeded = true;
+ *succeeded = true;
};
- dev_reg_->RefreshAccessToken(base::Bind(callback));
+ dev_reg_->RefreshAccessToken(base::Bind(callback, &succeeded, error));
return succeeded;
}
@@ -338,15 +339,15 @@
})));
bool succeeded = false;
- auto callback = [&succeeded](const base::DictionaryValue& info,
- ErrorPtr error) {
+ auto callback = [](bool* succeeded, const base::DictionaryValue& info,
+ ErrorPtr error) {
EXPECT_FALSE(error);
std::string id;
EXPECT_TRUE(info.GetString("id", &id));
EXPECT_EQ(test_data::kDeviceId, id);
- succeeded = true;
+ *succeeded = true;
};
- dev_reg_->GetDeviceInfo(base::Bind(callback));
+ dev_reg_->GetDeviceInfo(base::Bind(callback, &succeeded));
EXPECT_TRUE(succeeded);
}
@@ -485,19 +486,24 @@
bool done = false;
dev_reg_->RegisterDevice(
- test_data::kClaimTicketId, base::Bind([this, &done](ErrorPtr error) {
- EXPECT_FALSE(error);
- done = true;
- task_runner_.Break();
- EXPECT_EQ(GcdState::kConnecting, GetGcdState());
+ test_data::kClaimTicketId,
+ base::Bind(
+ [](DeviceRegistrationInfo* dev_reg,
+ provider::test::FakeTaskRunner* task_runner, bool* done,
+ ErrorPtr error) {
+ EXPECT_FALSE(error);
+ *done = true;
+ task_runner->Break();
+ EXPECT_EQ(GcdState::kConnecting, dev_reg->GetGcdState());
- // Validate the device info saved to storage...
- EXPECT_EQ(test_data::kDeviceId, dev_reg_->GetSettings().cloud_id);
- EXPECT_EQ(test_data::kRefreshToken,
- dev_reg_->GetSettings().refresh_token);
- EXPECT_EQ(test_data::kRobotAccountEmail,
- dev_reg_->GetSettings().robot_account);
- }));
+ // Validate the device info saved to storage...
+ EXPECT_EQ(test_data::kDeviceId, dev_reg->GetSettings().cloud_id);
+ EXPECT_EQ(test_data::kRefreshToken,
+ dev_reg->GetSettings().refresh_token);
+ EXPECT_EQ(test_data::kRobotAccountEmail,
+ dev_reg->GetSettings().robot_account);
+ },
+ dev_reg_.get(), &task_runner_, &done));
task_runner_.Run();
EXPECT_TRUE(done);
}
diff --git a/src/notification/xmpp_iq_stanza_handler_unittest.cc b/src/notification/xmpp_iq_stanza_handler_unittest.cc
index 052b7c5..35f78b0 100644
--- a/src/notification/xmpp_iq_stanza_handler_unittest.cc
+++ b/src/notification/xmpp_iq_stanza_handler_unittest.cc
@@ -159,12 +159,12 @@
TEST_F(IqStanzaHandlerTest, RequestTimeout) {
bool called = false;
- auto on_timeout = [&called]() { called = true; };
+ auto on_timeout = [](bool* called) { *called = true; };
EXPECT_CALL(mock_xmpp_channel_, SendMessage(_)).Times(1);
EXPECT_FALSE(called);
iq_stanza_handler_.SendRequest("set", "", "", "<body/>", {},
- base::Bind(on_timeout));
+ base::Bind(on_timeout, &called));
task_runner_.Run();
EXPECT_TRUE(called);
}
diff --git a/src/states/state_change_queue_unittest.cc b/src/states/state_change_queue_unittest.cc
index 9f26071..2e7c36a 100644
--- a/src/states/state_change_queue_unittest.cc
+++ b/src/states/state_change_queue_unittest.cc
@@ -151,10 +151,10 @@
TEST_F(StateChangeQueueTest, ImmediateStateChangeNotification) {
// When queue is empty, registering a new callback will trigger it.
bool called = false;
- auto callback = [&called](StateChangeQueueInterface::UpdateID id) {
- called = true;
+ auto callback = [](bool* called, StateChangeQueueInterface::UpdateID id) {
+ *called = true;
};
- queue_->AddOnStateUpdatedCallback(base::Bind(callback));
+ queue_->AddOnStateUpdatedCallback(base::Bind(callback, &called));
EXPECT_TRUE(called);
}
diff --git a/src/streams_unittest.cc b/src/streams_unittest.cc
index fba6ca5..f35b1ff 100644
--- a/src/streams_unittest.cc
+++ b/src/streams_unittest.cc
@@ -24,11 +24,13 @@
bool done = false;
auto callback = base::Bind(
- [&test_data, &done, &destination](size_t size, ErrorPtr error) {
+ [](std::vector<uint8_t>* test_data, bool* done, MemoryStream* destination,
+ size_t size, ErrorPtr error) {
EXPECT_FALSE(error);
- done = true;
- EXPECT_EQ(test_data, destination.GetData());
- });
+ *done = true;
+ EXPECT_EQ(*test_data, destination->GetData());
+ },
+ &test_data, &done, &destination);
StreamCopier copier{&source, &destination};
copier.Copy(callback);
diff --git a/src/weave_unittest.cc b/src/weave_unittest.cc
index d7855df..29f804e 100644
--- a/src/weave_unittest.cc
+++ b/src/weave_unittest.cc
@@ -272,13 +272,18 @@
void NotifyNetworkChanged(provider::Network::State state,
base::TimeDelta delay) {
- auto task = [this, state] {
- EXPECT_CALL(network_, GetConnectionState()).WillRepeatedly(Return(state));
- for (const auto& cb : network_callbacks_)
+ auto task = [](provider::test::MockNetwork* network,
+ std::vector<provider::Network::ConnectionChangedCallback>*
+ network_callbacks,
+ provider::Network::State state) {
+ EXPECT_CALL(*network, GetConnectionState()).WillRepeatedly(Return(state));
+ for (const auto& cb : *network_callbacks)
cb.Run();
};
- task_runner_.PostDelayedTask(FROM_HERE, base::Bind(task), delay);
+ task_runner_.PostDelayedTask(
+ FROM_HERE, base::Bind(task, &network_, &network_callbacks_, state),
+ delay);
}
std::map<std::string, provider::HttpServer::RequestHandlerCallback>
@@ -369,12 +374,16 @@
InitDnsSdPublishing(true, "DB");
bool done = false;
- device_->Register("TICKET_ID", base::Bind([this, &done](ErrorPtr error) {
- EXPECT_FALSE(error);
- done = true;
- task_runner_.Break();
- EXPECT_EQ("CLOUD_ID", device_->GetSettings().cloud_id);
- }));
+ device_->Register("TICKET_ID",
+ base::Bind(
+ [](provider::test::FakeTaskRunner* task_runner,
+ weave::Device* device, bool* done, ErrorPtr error) {
+ EXPECT_FALSE(error);
+ *done = true;
+ task_runner->Break();
+ EXPECT_EQ("CLOUD_ID", device->GetSettings().cloud_id);
+ },
+ &task_runner_, device_.get(), &done));
task_runner_.Run();
EXPECT_TRUE(done);
}