Commit 6f65b277 authored by Josh Nohle's avatar Josh Nohle Committed by Commit Bot

[DeviceSync v2] Process feature setter queue before invoking callback

See analogous change to the device notifier at crrev/c/1888734/2..3.

Bug: 951969
Change-Id: I771130dc97718c24b2ea5292086fd80e89ec45ea
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1890001
Auto-Submit: Josh Nohle <nohle@chromium.org>
Commit-Queue: Kyle Horimoto <khorimoto@chromium.org>
Reviewed-by: default avatarKyle Horimoto <khorimoto@chromium.org>
Cr-Commit-Position: refs/heads/master@{#710968}
parent 4e6d3500
......@@ -285,14 +285,16 @@ void CryptAuthFeatureStatusSetterImpl::FinishAttempt(
base::Optional<NetworkRequestError> error) {
DCHECK(!pending_requests_.empty());
Request current_request = std::move(pending_requests_.front());
pending_requests_.pop();
if (error) {
std::move(pending_requests_.front().error_callback).Run(*error);
std::move(current_request.error_callback).Run(*error);
} else {
PA_LOG(VERBOSE) << "SetFeatureStatus attempt succeeded.";
std::move(pending_requests_.front().success_callback).Run();
std::move(current_request.success_callback).Run();
}
pending_requests_.pop();
SetState(State::kIdle);
ProcessRequestQueue();
}
......
......@@ -198,27 +198,35 @@ class DeviceSyncCryptAuthFeatureStatusSetterImplTest
RequestAction request_action,
base::Optional<NetworkRequestError> error = base::nullopt) {
ASSERT_TRUE(!batch_set_feature_statuses_requests_.empty());
cryptauthv2::BatchSetFeatureStatusesRequest current_request =
std::move(batch_set_feature_statuses_requests_.front());
batch_set_feature_statuses_requests_.pop();
CryptAuthClient::BatchSetFeatureStatusesCallback current_success_callback =
std::move(batch_set_feature_statuses_success_callbacks_.front());
batch_set_feature_statuses_success_callbacks_.pop();
CryptAuthClient::ErrorCallback current_failure_callback =
std::move(batch_set_feature_statuses_failure_callbacks_.front());
batch_set_feature_statuses_failure_callbacks_.pop();
EXPECT_EQ(expected_request.SerializeAsString(),
batch_set_feature_statuses_requests_.front().SerializeAsString());
current_request.SerializeAsString());
switch (request_action) {
case RequestAction::kSucceed:
std::move(batch_set_feature_statuses_success_callbacks_.front())
std::move(current_success_callback)
.Run(cryptauthv2::BatchSetFeatureStatusesResponse());
break;
case RequestAction::kFail:
ASSERT_TRUE(error);
std::move(batch_set_feature_statuses_failure_callbacks_.front())
.Run(*error);
std::move(current_failure_callback).Run(*error);
break;
case RequestAction::kTimeout:
mock_timer_->Fire();
break;
}
batch_set_feature_statuses_requests_.pop();
batch_set_feature_statuses_success_callbacks_.pop();
batch_set_feature_statuses_failure_callbacks_.pop();
}
void VerifyNumberOfClientAppMetadataFetchAttempts(size_t num_attempts) {
......
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