Make sure timer is destroyed on the same thread callback is scheduled on.

PiperOrigin-RevId: 912325093
This commit is contained in:
Francis Tsui
2026-05-07 22:23:49 -07:00
committed by Copybara-Service
parent 313efed9c9
commit fc0fb02fee
16 changed files with 77 additions and 101 deletions
@@ -24,7 +24,6 @@
#include "absl/strings/string_view.h"
#include "internal/base/file_path.h"
#include "internal/platform/implementation/device_info.h"
#include "internal/platform/task_runner.h"
#include "sharing/internal/api/app_info.h"
#include "sharing/internal/api/bluetooth_adapter.h"
#include "sharing/internal/api/fast_init_ble_beacon.h"
@@ -71,7 +70,6 @@ class MockSharingPlatform : public SharingPlatform {
MOCK_METHOD(PreferenceManager&, GetPreferenceManager, (), (override));
MOCK_METHOD(AccountManager&, GetAccountManager, (), (override));
MOCK_METHOD(TaskRunner&, GetDefaultTaskRunner, (), (override));
MOCK_METHOD(nearby::api::DeviceInfo&, GetDeviceInfo, (), (override));
MOCK_METHOD(std::unique_ptr<PublicCertificateDatabase>,
CreatePublicCertificateDatabase, (const FilePath& database_path),
-2
View File
@@ -23,7 +23,6 @@
#include "absl/strings/string_view.h"
#include "internal/base/file_path.h"
#include "internal/platform/implementation/device_info.h"
#include "internal/platform/task_runner.h"
#include "sharing/internal/api/app_info.h"
#include "sharing/internal/api/bluetooth_adapter.h"
#include "sharing/internal/api/fast_init_ble_beacon.h"
@@ -64,7 +63,6 @@ class SharingPlatform {
virtual PreferenceManager& GetPreferenceManager() = 0;
virtual AccountManager& GetAccountManager() = 0;
virtual TaskRunner& GetDefaultTaskRunner() = 0;
virtual nearby::api::DeviceInfo& GetDeviceInfo() = 0;
virtual std::unique_ptr<PublicCertificateDatabase>
CreatePublicCertificateDatabase(const FilePath& database_path) = 0;
-3
View File
@@ -49,9 +49,6 @@ class Context {
// count of tasks running at the same time.
virtual std::unique_ptr<TaskRunner> CreateConcurrentTaskRunner(
uint32_t concurrent_count) const = 0;
// Provides the API to retrieve TaskRunner to run a task globally.
virtual TaskRunner* GetTaskRunner() = 0;
};
} // namespace nearby
-4
View File
@@ -70,8 +70,4 @@ std::unique_ptr<TaskRunner> ContextImpl::CreateConcurrentTaskRunner(
return task_runner;
}
TaskRunner* ContextImpl::GetTaskRunner() {
return &platform_.GetDefaultTaskRunner();
}
} // namespace nearby
-1
View File
@@ -43,7 +43,6 @@ class ContextImpl : public Context {
std::unique_ptr<TaskRunner> CreateSequencedTaskRunner() const override;
std::unique_ptr<TaskRunner> CreateConcurrentTaskRunner(
uint32_t concurrent_count) const override;
TaskRunner* GetTaskRunner() override;
private:
nearby::sharing::api::SharingPlatform& platform_;
+1 -4
View File
@@ -38,8 +38,7 @@ FakeContext::FakeContext()
fake_connectivity_manager_(std::make_unique<FakeConnectivityManager>()),
fake_bluetooth_adapter_(std::make_unique<FakeBluetoothAdapter>()),
fake_fast_initiation_manager_(
std::make_unique<FakeFastInitiationManager>()),
executor_(std::make_unique<FakeTaskRunner>(fake_clock_.get(), 5)) {}
std::make_unique<FakeFastInitiationManager>()) {}
Clock* FakeContext::GetClock() const { return fake_clock_.get(); }
@@ -70,6 +69,4 @@ std::unique_ptr<TaskRunner> FakeContext::CreateConcurrentTaskRunner(
return std::make_unique<FakeTaskRunner>(fake_clock_.get(), concurrent_count);
}
TaskRunner* FakeContext::GetTaskRunner() { return executor_.get(); }
} // namespace nearby
-5
View File
@@ -47,7 +47,6 @@ class FakeContext : public Context {
std::unique_ptr<TaskRunner> CreateSequencedTaskRunner() const override;
std::unique_ptr<TaskRunner> CreateConcurrentTaskRunner(
uint32_t concurrent_count) const override;
TaskRunner* GetTaskRunner() override;
FakeClock* fake_clock() const { return fake_clock_.get(); }
FakeConnectivityManager* fake_connectivity_manager() const {
@@ -59,9 +58,6 @@ class FakeContext : public Context {
FakeFastInitiationManager* fake_fast_initiation_manager() const {
return fake_fast_initiation_manager_.get();
}
FakeTaskRunner* fake_task_runner() const {
return executor_.get();
}
FakeTaskRunner* last_sequenced_task_runner() const {
return last_sequenced_task_runner_;
@@ -72,7 +68,6 @@ class FakeContext : public Context {
std::unique_ptr<FakeConnectivityManager> fake_connectivity_manager_;
std::unique_ptr<FakeBluetoothAdapter> fake_bluetooth_adapter_;
std::unique_ptr<FakeFastInitiationManager> fake_fast_initiation_manager_;
std::unique_ptr<FakeTaskRunner> executor_;
mutable FakeTaskRunner* last_sequenced_task_runner_ = nullptr;
};
@@ -15,9 +15,6 @@
#include "sharing/internal/test/fake_context.h"
#include "gtest/gtest.h"
#include "absl/synchronization/notification.h"
#include "absl/time/time.h"
#include "internal/platform/task_runner.h"
namespace nearby {
namespace {
@@ -31,18 +28,5 @@ TEST(FakeContext, TestAccessMockContext) {
EXPECT_NE(context.CreateConcurrentTaskRunner(5), nullptr);
}
TEST(FakeContext, ExecuteTask) {
FakeContext context;
absl::Notification notification;
bool is_called = false;
context.GetTaskRunner()->PostTask([&]() {
is_called = true;
notification.Notify();
});
EXPECT_TRUE(notification.WaitForNotificationWithTimeout(absl::Seconds(1)));
EXPECT_TRUE(is_called);
}
} // namespace
} // namespace nearby
+2 -2
View File
@@ -423,8 +423,8 @@ void NearbyConnectionsManagerImpl::Connect(
// Setup transfer manager.
if (IsTransportTypeFlagsSet(transport_type, TransportType::kHighQuality)) {
transfer_managers_[endpoint_id] =
std::make_unique<TransferManager>(context_, endpoint_id);
transfer_managers_[endpoint_id] = std::make_unique<TransferManager>(
connections_callback_task_runner_, endpoint_id);
}
}
+3 -2
View File
@@ -259,8 +259,9 @@ NearbySharingServiceImpl::NearbySharingServiceImpl(
nearby_fast_initiation_(
NearbyFastInitiationImpl::Factory::Create(context_)),
settings_(std::make_unique<NearbyShareSettings>(
context_, context_->GetClock(), device_info_, preference_manager_,
local_device_data_manager_.get(), &analytics_recorder_)),
service_thread_.get(), context_->GetClock(), device_info_,
preference_manager_, local_device_data_manager_.get(),
&analytics_recorder_)),
service_extension_(std::make_unique<NearbySharingServiceExtension>()),
file_handler_(sharing_platform),
app_info_(sharing_platform.CreateAppInfo()),
+8 -7
View File
@@ -22,17 +22,18 @@
#include <string>
#include <utility>
#include "absl/base/nullability.h"
#include "absl/strings/string_view.h"
#include "absl/synchronization/mutex.h"
#include "absl/time/time.h"
#include "internal/platform/clock.h"
#include "internal/platform/implementation/device_info.h"
#include "internal/platform/task_runner.h"
#include "proto/sharing_enums.pb.h"
#include "sharing/analytics/analytics_recorder.h"
#include "sharing/common/nearby_share_enums.h"
#include "sharing/common/nearby_share_prefs.h"
#include "sharing/internal/api/preference_manager.h"
#include "sharing/internal/public/context.h"
#include "sharing/internal/public/logging.h"
#include "sharing/internal/public/pref_names.h"
#include "sharing/local_device_data/nearby_share_local_device_data_manager.h"
@@ -70,12 +71,12 @@ ShowNotificationStatus GetNotificationStatus(
} // namespace
NearbyShareSettings::NearbyShareSettings(
Context* context, nearby::Clock* clock,
TaskRunner* absl_nonnull task_runner, nearby::Clock* absl_nonnull clock,
nearby::api::DeviceInfo& device_info, PreferenceManager& preference_manager,
NearbyShareLocalDeviceDataManager* local_device_data_manager,
analytics::AnalyticsRecorder* analytics_recorder)
: context_(context),
clock_(clock),
: task_runner_(*task_runner),
clock_(*clock),
device_info_(device_info),
preference_manager_(preference_manager),
local_device_data_manager_(local_device_data_manager),
@@ -143,7 +144,7 @@ void NearbyShareSettings::StartVisibilityTimer(
LOG(INFO) << __func__
<< ": start visibility timer. expiration=" << expiration;
visibility_expiration_timer_ = std::make_unique<ThreadTimer>(
*context_->GetTaskRunner(), "nearby_share_settings_visibility_timer",
task_runner_, "nearby_share_settings_visibility_timer",
expiration, [this]() {
LOG(INFO) << __func__ << ": visibility timer expired.";
proto::DeviceVisibility visibility;
@@ -164,7 +165,7 @@ void NearbyShareSettings::RestoreFallbackVisibility() {
static_cast<int>(prefs::kDefaultFallbackVisibility));
fallback_visibility_ = static_cast<DeviceVisibility>(fallback_visibility);
int64_t now_seconds = absl::ToUnixSeconds(clock_->Now());
int64_t now_seconds = absl::ToUnixSeconds(clock_.Now());
int64_t remaining_seconds = expiration_seconds - now_seconds;
int64_t diff = kMaxVisibilityExpirationSeconds - remaining_seconds;
LOG(INFO) << __func__ << ": diff=" << diff << ", now=" << now_seconds
@@ -276,7 +277,7 @@ void NearbyShareSettings::SetVisibility(DeviceVisibility visibility,
visibility_expiration_timer_.reset();
SetFallbackVisibility(last_visibility);
absl::Time now = clock_->Now();
absl::Time now = clock_.Now();
if (expiration != absl::ZeroDuration()) {
VLOG(1) << __func__ << ": temporary visibility timer starts.";
absl::Time fallback_visibility_timestamp = now + expiration;
+5 -4
View File
@@ -23,6 +23,7 @@
#include <vector>
#include "location/nearby/sharing/lib/sync/sync_binding_prefs.pb.h"
#include "absl/base/nullability.h"
#include "absl/base/thread_annotations.h"
#include "absl/strings/string_view.h"
#include "absl/synchronization/mutex.h"
@@ -30,11 +31,11 @@
#include "internal/base/observer_list.h"
#include "internal/platform/clock.h"
#include "internal/platform/implementation/device_info.h"
#include "internal/platform/task_runner.h"
#include "proto/sharing_enums.pb.h"
#include "sharing/analytics/analytics_recorder.h"
#include "sharing/common/nearby_share_enums.h"
#include "sharing/internal/api/preference_manager.h"
#include "sharing/internal/public/context.h"
#include "sharing/internal/public/logging.h"
#include "sharing/local_device_data/nearby_share_local_device_data_manager.h"
#include "sharing/proto/settings_observer_data.pb.h"
@@ -139,7 +140,7 @@ class NearbyShareSettings
};
NearbyShareSettings(
Context* context, nearby::Clock* clock,
TaskRunner* absl_nonnull task_runner, nearby::Clock* absl_nonnull clock,
nearby::api::DeviceInfo& device_info,
nearby::sharing::api::PreferenceManager& preference_manager,
NearbyShareLocalDeviceDataManager* local_device_data_manager,
@@ -224,8 +225,8 @@ class NearbyShareSettings
// Make sure thread safe to access Nearby settings
mutable absl::Mutex mutex_;
Context* context_;
nearby::Clock* const clock_;
TaskRunner& task_runner_;
nearby::Clock& clock_;
nearby::api::DeviceInfo& device_info_;
nearby::sharing::api::PreferenceManager& preference_manager_;
NearbyShareLocalDeviceDataManager* const local_device_data_manager_;
+20 -16
View File
@@ -29,12 +29,12 @@
#include "absl/time/clock.h"
#include "absl/time/time.h"
#include "internal/base/files.h"
#include "internal/test/fake_clock.h"
#include "internal/test/fake_device_info.h"
#include "internal/test/fake_task_runner.h"
#include "sharing/common/nearby_share_enums.h"
#include "sharing/common/nearby_share_prefs.h"
#include "sharing/internal/public/pref_names.h"
#include "sharing/internal/test/fake_context.h"
#include "sharing/internal/test/fake_preference_manager.h"
#include "sharing/local_device_data/fake_nearby_share_local_device_data_manager.h"
#include "sharing/proto/enums.pb.h"
@@ -120,11 +120,12 @@ class FakeNearbyShareSettingsObserver : public NearbyShareSettings::Observer {
class NearbyShareSettingsTest : public ::testing::Test {
public:
NearbyShareSettingsTest()
: local_device_data_manager_(kDefaultDeviceName) {
: local_device_data_manager_(kDefaultDeviceName),
fake_task_runner_(&fake_clock_, /*count=*/1) {
prefs::RegisterNearbySharingPrefs(preference_manager_);
nearby_share_settings_ = std::make_unique<NearbyShareSettings>(
&context_, context_.GetClock(), fake_device_info_, preference_manager_,
&local_device_data_manager_);
&fake_task_runner_, &fake_clock_, fake_device_info_,
preference_manager_, &local_device_data_manager_);
nearby_share_settings_->AddSettingsObserver(&observer_);
}
@@ -147,11 +148,11 @@ class NearbyShareSettingsTest : public ::testing::Test {
// Waits for running tasks to complete.
void Flush() {
absl::SleepFor(absl::Seconds(1));
context_.fake_task_runner()->SyncWithTimeout(absl::Milliseconds(200));
fake_task_runner_.SyncWithTimeout(absl::Milliseconds(200));
}
void FastForward(absl::Duration duration) {
context_.fake_clock()->FastForward(duration);
fake_clock_.FastForward(duration);
}
bool Contains(std::vector<std::string> v, std::string val) {
@@ -164,8 +165,9 @@ class NearbyShareSettingsTest : public ::testing::Test {
protected:
nearby::FakeDeviceInfo fake_device_info_;
nearby::FakePreferenceManager preference_manager_;
FakeContext context_;
FakeNearbyShareLocalDeviceDataManager local_device_data_manager_;
FakeClock fake_clock_;
FakeTaskRunner fake_task_runner_;
FakeNearbyShareSettingsObserver observer_;
std::unique_ptr<NearbyShareSettings> nearby_share_settings_;
};
@@ -301,7 +303,7 @@ TEST_F(NearbyShareSettingsTest,
// Set our initial visibility to self share.
settings()->SetVisibility(DeviceVisibility::DEVICE_VISIBILITY_SELF_SHARE);
// Set everyone mode temporarily.
absl::Time now = context_.GetClock()->Now();
absl::Time now = fake_clock_.Now();
settings()->SetVisibility(
DeviceVisibility::DEVICE_VISIBILITY_EVERYONE,
absl::Seconds(prefs::kDefaultMaxVisibilityExpirationSeconds));
@@ -357,7 +359,7 @@ TEST_F(NearbyShareSettingsTest, TemporaryVisibilityIsCorrect) {
DeviceVisibility::DEVICE_VISIBILITY_UNSPECIFIED);
EXPECT_EQ(fallback_visibility.fallback_time, absl::UnixEpoch());
// Transition to temporary everyone mode.
absl::Time now = context_.GetClock()->Now();
absl::Time now = fake_clock_.Now();
settings()->SetVisibility(
DeviceVisibility::DEVICE_VISIBILITY_EVERYONE,
absl::Seconds(prefs::kDefaultMaxVisibilityExpirationSeconds));
@@ -378,7 +380,7 @@ TEST_F(NearbyShareSettingsTest, SetVisibilityWithExpirationTooLong) {
absl::Hours(1));
// Expiration capped at 10minutes.
absl::Time expected_fallback_time =
context_.GetClock()->Now() + absl::Minutes(10);
fake_clock_.Now() + absl::Minutes(10);
NearbyShareSettings::FallbackVisibilityInfo fallback_visibility =
settings()->GetFallbackVisibility();
// default visibility was hidden.
@@ -420,7 +422,8 @@ TEST_F(NearbyShareSettingsTest, SetSyncBindingPerfs_Success) {
TEST(NearbyShareVisibilityTest, RestoresFallbackVisibility_ExpiredTimer) {
// Create Nearby Share settings dependencies.
FakeContext context;
FakeClock fake_clock;
FakeTaskRunner fake_task_runner(&fake_clock, /*count=*/1);
FakeDeviceInfo fake_device_info;
FakePreferenceManager preference_manager;
FakeNearbyShareLocalDeviceDataManager local_device_data_manager(
@@ -432,13 +435,13 @@ TEST(NearbyShareVisibilityTest, RestoresFallbackVisibility_ExpiredTimer) {
// Set expiration to 10 seconds ago.
preference_manager.SetInteger(
PrefNames::kVisibilityExpirationSeconds,
absl::ToUnixSeconds(context.GetClock()->Now() - absl::Seconds(10)));
absl::ToUnixSeconds(fake_clock.Now() - absl::Seconds(10)));
// Set fallback visibility to self share.
preference_manager.SetInteger(
PrefNames::kFallbackVisibility,
static_cast<int>(DeviceVisibility::DEVICE_VISIBILITY_SELF_SHARE));
// Create a Nearby Share settings instance.
NearbyShareSettings settings(&context, context.GetClock(), fake_device_info,
NearbyShareSettings settings(&fake_task_runner, &fake_clock, fake_device_info,
preference_manager, &local_device_data_manager);
// Make sure we restore the correct visibility.
@@ -448,7 +451,8 @@ TEST(NearbyShareVisibilityTest, RestoresFallbackVisibility_ExpiredTimer) {
TEST(NearbyShareVisibilityTest, RestoresFallbackVisibility_FutureTimer) {
// Create Nearby Share settings dependencies.
FakeContext context;
FakeClock fake_clock;
FakeTaskRunner fake_task_runner(&fake_clock, /*count=*/1);
FakeDeviceInfo fake_device_info;
FakePreferenceManager preference_manager;
FakeNearbyShareLocalDeviceDataManager local_device_data_manager(
@@ -460,13 +464,13 @@ TEST(NearbyShareVisibilityTest, RestoresFallbackVisibility_FutureTimer) {
// Set expiration to 10 seconds in the future.
preference_manager.SetInteger(
PrefNames::kVisibilityExpirationSeconds,
absl::ToUnixSeconds(context.GetClock()->Now() + absl::Seconds(10)));
absl::ToUnixSeconds(fake_clock.Now() + absl::Seconds(10)));
// Set fallback visibility to self share.
preference_manager.SetInteger(
PrefNames::kFallbackVisibility,
static_cast<int>(DeviceVisibility::DEVICE_VISIBILITY_SELF_SHARE));
// Create a Nearby Share settings instance.
NearbyShareSettings settings(&context, context.GetClock(), fake_device_info,
NearbyShareSettings settings(&fake_task_runner, &fake_clock, fake_device_info,
preference_manager, &local_device_data_manager);
// Make sure we restore the correct visibility.
+8 -9
View File
@@ -19,10 +19,10 @@
#include <string>
#include <vector>
#include "absl/base/nullability.h"
#include "absl/strings/string_view.h"
#include "absl/synchronization/mutex.h"
#include "absl/time/time.h"
#include "sharing/internal/public/context.h"
#include "internal/platform/task_runner.h"
#include "sharing/internal/public/logging.h"
#include "sharing/nearby_connections_types.h"
#include "sharing/thread_timer.h"
@@ -43,9 +43,9 @@ bool IsHighQualityMedium(Medium medium) {
} // namespace
TransferManager::TransferManager(Context* context,
TransferManager::TransferManager(TaskRunner* absl_nonnull runner,
absl::string_view endpoint_id)
: context_(context), endpoint_id_(endpoint_id) {}
: runner_(*runner), endpoint_id_(endpoint_id) {}
TransferManager::~TransferManager() {
absl::MutexLock lock(mutex_);
@@ -101,8 +101,8 @@ bool TransferManager::StartTransfer() {
}
timeout_timer_ = std::make_unique<ThreadTimer>(
*context_->GetTaskRunner(), "transfer_manager_timeout_timer",
kMediumUpgradeTimeout, [this]() {
runner_, "transfer_manager_timeout_timer", kMediumUpgradeTimeout,
[this]() {
absl::MutexLock lock(mutex_);
LOG(INFO) << "Timed out for endpoint " << endpoint_id_ << " after "
@@ -113,8 +113,7 @@ bool TransferManager::StartTransfer() {
LOG(INFO) << "Attempting to upgrade the bandwidth for endpoint " +
endpoint_id_ + ". Large payloads will be delayed" +
" until either bandwidth is upgraded or a timeout of "
<< (kMediumUpgradeTimeout / absl::Milliseconds(1))
<< " milliseconds is reached";
<< kMediumUpgradeTimeout << " is reached";
return true;
}
@@ -132,6 +131,7 @@ bool TransferManager::CancelTransfer() {
}
void TransferManager::StopWaitingForHighQualityMedium() {
timeout_timer_.reset();
is_waiting_for_high_quality_medium_ = false;
for (const auto& task : pending_tasks_) {
@@ -140,7 +140,6 @@ void TransferManager::StopWaitingForHighQualityMedium() {
}
pending_tasks_.clear();
timeout_timer_.reset();
}
} // namespace sharing
+5 -3
View File
@@ -20,11 +20,12 @@
#include <string>
#include <vector>
#include "absl/base/nullability.h"
#include "absl/base/thread_annotations.h"
#include "absl/strings/string_view.h"
#include "absl/synchronization/mutex.h"
#include "absl/time/time.h"
#include "sharing/internal/public/context.h"
#include "internal/platform/task_runner.h"
#include "sharing/nearby_connections_types.h"
#include "sharing/thread_timer.h"
@@ -39,7 +40,8 @@ class TransferManager {
// Used to wait for the medium upgrade.
static constexpr absl::Duration kMediumUpgradeTimeout = absl::Seconds(10);
TransferManager(Context* context, absl::string_view endpoint_id);
TransferManager(TaskRunner* absl_nonnull runner,
absl::string_view endpoint_id);
~TransferManager();
@@ -52,7 +54,7 @@ class TransferManager {
private:
void StopWaitingForHighQualityMedium() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mutex_);
Context* context_;
TaskRunner& runner_;
std::string endpoint_id_;
absl::Mutex mutex_;
bool is_waiting_for_high_quality_medium_ ABSL_GUARDED_BY(mutex_) = true;
+25 -21
View File
@@ -21,7 +21,7 @@
#include "absl/synchronization/notification.h"
#include "absl/time/time.h"
#include "internal/test/fake_clock.h"
#include "sharing/internal/test/fake_context.h"
#include "internal/test/fake_task_runner.h"
#include "sharing/nearby_connections_types.h"
namespace nearby {
@@ -32,11 +32,12 @@ constexpr absl::string_view kEndpointId = "endpoint";
constexpr absl::Duration kNotificationTimeout = absl::Milliseconds(200);
TEST(TransferManager, MediumUpgradeSuccess) {
FakeContext context;
FakeClock fake_clock;
FakeTaskRunner executor(&fake_clock, /*concurrent_count=*/1);
absl::Notification notification;
bool is_called = false;
TransferManager transfer_manager{&context, kEndpointId};
TransferManager transfer_manager{&executor, kEndpointId};
transfer_manager.Send([&]() {
is_called = true;
notification.Notify();
@@ -53,11 +54,12 @@ TEST(TransferManager, MediumUpgradeSuccess) {
}
TEST(TransferManager, SendAfterMediumUpgradeSuccess) {
FakeContext context;
FakeClock fake_clock;
FakeTaskRunner executor(&fake_clock, /*concurrent_count=*/1);
absl::Notification notification;
bool is_called = false;
TransferManager transfer_manager{&context, kEndpointId};
TransferManager transfer_manager{&executor, kEndpointId};
transfer_manager.Send([&]() {
is_called = true;
notification.Notify();
@@ -75,11 +77,12 @@ TEST(TransferManager, SendAfterMediumUpgradeSuccess) {
}
TEST(TransferManager, MediumUpgradeFailed) {
FakeContext context;
FakeClock fake_clock;
FakeTaskRunner executor(&fake_clock, /*concurrent_count=*/1);
absl::Notification notification;
bool is_called = false;
TransferManager transfer_manager{&context, kEndpointId};
TransferManager transfer_manager{&executor, kEndpointId};
transfer_manager.Send([&]() {
is_called = true;
notification.Notify();
@@ -94,11 +97,12 @@ TEST(TransferManager, MediumUpgradeFailed) {
}
TEST(TransferManager, MediumUpgradeTimeout) {
FakeContext context;
FakeClock fake_clock;
FakeTaskRunner executor(&fake_clock, /*concurrent_count=*/1);
absl::Notification notification;
bool is_called = false;
TransferManager transfer_manager{&context, kEndpointId};
TransferManager transfer_manager{&executor, kEndpointId};
transfer_manager.Send([&]() {
is_called = true;
notification.Notify();
@@ -106,8 +110,7 @@ TEST(TransferManager, MediumUpgradeTimeout) {
ASSERT_FALSE(is_called);
ASSERT_TRUE(transfer_manager.StartTransfer());
FakeClock* clock = static_cast<FakeClock*>(context.GetClock());
clock->FastForward(TransferManager::kMediumUpgradeTimeout);
fake_clock.FastForward(TransferManager::kMediumUpgradeTimeout);
ASSERT_TRUE(
notification.WaitForNotificationWithTimeout(kNotificationTimeout));
@@ -115,11 +118,12 @@ TEST(TransferManager, MediumUpgradeTimeout) {
}
TEST(TransferManager, CancelStartedTransfer) {
FakeContext context;
FakeClock fake_clock;
FakeTaskRunner executor(&fake_clock, /*concurrent_count=*/1);
absl::Notification notification;
bool is_called = false;
TransferManager transfer_manager{&context, kEndpointId};
TransferManager transfer_manager{&executor, kEndpointId};
transfer_manager.Send([&]() {
is_called = true;
notification.Notify();
@@ -127,8 +131,7 @@ TEST(TransferManager, CancelStartedTransfer) {
ASSERT_FALSE(is_called);
ASSERT_TRUE(transfer_manager.StartTransfer());
FakeClock* clock = static_cast<FakeClock*>(context.GetClock());
clock->FastForward(absl::Seconds(5));
fake_clock.FastForward(absl::Seconds(5));
ASSERT_TRUE(transfer_manager.CancelTransfer());
ASSERT_FALSE(
@@ -137,11 +140,12 @@ TEST(TransferManager, CancelStartedTransfer) {
}
TEST(TransferManager, CancelTimedOutMediumUpgrade) {
FakeContext context;
FakeClock fake_clock;
FakeTaskRunner executor(&fake_clock, /*concurrent_count=*/1);
absl::Notification notification;
bool is_called = false;
TransferManager transfer_manager{&context, kEndpointId};
TransferManager transfer_manager{&executor, kEndpointId};
transfer_manager.Send([&]() {
is_called = true;
notification.Notify();
@@ -149,8 +153,7 @@ TEST(TransferManager, CancelTimedOutMediumUpgrade) {
ASSERT_FALSE(is_called);
ASSERT_TRUE(transfer_manager.StartTransfer());
FakeClock* clock = static_cast<FakeClock*>(context.GetClock());
clock->FastForward(TransferManager::kMediumUpgradeTimeout);
fake_clock.FastForward(TransferManager::kMediumUpgradeTimeout);
ASSERT_TRUE(
notification.WaitForNotificationWithTimeout(kNotificationTimeout));
@@ -159,11 +162,12 @@ TEST(TransferManager, CancelTimedOutMediumUpgrade) {
}
TEST(TransferManager, MediumUpgradeBeforeStartTransfer) {
FakeContext context;
FakeClock fake_clock;
FakeTaskRunner executor(&fake_clock, /*concurrent_count=*/1);
absl::Notification notification;
bool is_called = false;
TransferManager transfer_manager{&context, kEndpointId};
TransferManager transfer_manager{&executor, kEndpointId};
transfer_manager.Send([&]() {
is_called = true;
notification.Notify();