Index: chromeos/components/tether/ble_advertiser_unittest.cc |
diff --git a/chromeos/components/tether/ble_advertiser_unittest.cc b/chromeos/components/tether/ble_advertiser_unittest.cc |
index cbd4f4fc209403e7f848fe73c72f53b747f432ee..439afd3c1158de41f1b24de7661b5c30e7b366e0 100644 |
--- a/chromeos/components/tether/ble_advertiser_unittest.cc |
+++ b/chromeos/components/tether/ble_advertiser_unittest.cc |
@@ -112,6 +112,29 @@ std::vector<cryptauth::BeaconSeed> CreateFakeBeaconSeedsForDevice( |
class BleAdvertiserTest : public testing::Test { |
protected: |
+ class TestBleAdvertisementUnregisterHandler |
+ : public BleAdvertiser::BleAdvertisementUnregisterHandler { |
+ public: |
+ TestBleAdvertisementUnregisterHandler() |
+ : num_advertisements_unregistered_(0) {} |
+ ~TestBleAdvertisementUnregisterHandler() {} |
+ |
+ size_t num_advertisements_unregistered() { |
+ return num_advertisements_unregistered_; |
+ } |
+ |
+ // BleAdvertiser::BleAdvertisementUnregisterHandler: |
+ void OnAdvertisementUnregisterSuccess() override { |
+ num_advertisements_unregistered_++; |
+ } |
+ |
+ void OnAdvertisementUnregisterFailure( |
+ device::BluetoothAdvertisement::ErrorCode error_code) override {} |
+ |
+ private: |
+ size_t num_advertisements_unregistered_; |
+ }; |
+ |
BleAdvertiserTest() |
: fake_devices_(cryptauth::GenerateTestRemoteDevices(3)), |
fake_advertisements_(GenerateFakeAdvertisements()) {} |
@@ -132,6 +155,8 @@ class BleAdvertiserTest : public testing::Test { |
.WillByDefault( |
Invoke(this, &BleAdvertiserTest::OnAdapterRegisterAdvertisement)); |
+ test_unregister_handler_ = new TestBleAdvertisementUnregisterHandler(); |
+ |
mock_eid_generator_ = base::MakeUnique<cryptauth::MockEidGenerator>(); |
mock_seed_fetcher_ = |
@@ -154,7 +179,8 @@ class BleAdvertiserTest : public testing::Test { |
base::MakeUnique<std::string>(fake_public_key)); |
ble_advertiser_ = base::WrapUnique(new BleAdvertiser( |
- mock_adapter_, mock_eid_generator_.get(), mock_seed_fetcher_.get(), |
+ mock_adapter_, base::WrapUnique(test_unregister_handler_), |
+ mock_eid_generator_.get(), mock_seed_fetcher_.get(), |
mock_local_data_provider_.get())); |
} |
@@ -232,6 +258,7 @@ class BleAdvertiserTest : public testing::Test { |
scoped_refptr<StrictMock<MockBluetoothAdapterWithAdvertisements>> |
mock_adapter_; |
+ TestBleAdvertisementUnregisterHandler* test_unregister_handler_; |
std::unique_ptr<cryptauth::MockEidGenerator> mock_eid_generator_; |
std::unique_ptr<cryptauth::MockRemoteBeaconSeedFetcher> mock_seed_fetcher_; |
std::unique_ptr<MockLocalDeviceDataProvider> mock_local_data_provider_; |
@@ -348,6 +375,7 @@ TEST_F(BleAdvertiserTest, AdvertisementRegisteredSuccessfully) { |
// Now, unregister. |
EXPECT_TRUE(ble_advertiser_->StopAdvertisingToDevice(fake_devices_[0])); |
EXPECT_FALSE(individual_advertisements_.size()); |
+ EXPECT_EQ(1u, test_unregister_handler_->num_advertisements_unregistered()); |
} |
TEST_F(BleAdvertiserTest, AdvertisementRegisteredSuccessfully_TwoDevices) { |
@@ -386,7 +414,11 @@ TEST_F(BleAdvertiserTest, AdvertisementRegisteredSuccessfully_TwoDevices) { |
// Now, unregister. |
EXPECT_TRUE(ble_advertiser_->StopAdvertisingToDevice(fake_devices_[0])); |
+ EXPECT_EQ(1u, test_unregister_handler_->num_advertisements_unregistered()); |
+ |
EXPECT_TRUE(ble_advertiser_->StopAdvertisingToDevice(fake_devices_[1])); |
+ EXPECT_EQ(2u, test_unregister_handler_->num_advertisements_unregistered()); |
+ |
EXPECT_FALSE(individual_advertisements_.size()); |
} |
@@ -409,9 +441,14 @@ TEST_F(BleAdvertiserTest, TooManyDevicesRegistered) { |
// Should fail on the third device. |
EXPECT_FALSE(ble_advertiser_->StartAdvertisingToDevice(fake_devices_[2])); |
- // Now, unregister one; registering the third device should succeed at this |
- // point. |
+ // Now, stop advertising to one; registering the third device should succeed |
+ // at this point. |
EXPECT_TRUE(ble_advertiser_->StopAdvertisingToDevice(fake_devices_[0])); |
+ |
+ // Because the advertisement was never registered to begin with, it also |
+ // should never have been unregistered. |
+ EXPECT_EQ(0u, test_unregister_handler_->num_advertisements_unregistered()); |
+ |
EXPECT_TRUE(ble_advertiser_->StartAdvertisingToDevice(fake_devices_[2])); |
} |
@@ -475,6 +512,7 @@ TEST_F(BleAdvertiserTest, AdvertisementReleased) { |
// Now, unregister. |
EXPECT_TRUE(ble_advertiser_->StopAdvertisingToDevice(fake_devices_[0])); |
+ EXPECT_EQ(1u, test_unregister_handler_->num_advertisements_unregistered()); |
EXPECT_FALSE(individual_advertisements_.size()); |
} |