diff options
-rw-r--r-- | chrome/browser/extensions/api/dial/dial_registry.h | 1 | ||||
-rw-r--r-- | chrome/browser/extensions/api/dial/dial_registry_unittest.cc | 51 |
2 files changed, 52 insertions, 0 deletions
diff --git a/chrome/browser/extensions/api/dial/dial_registry.h b/chrome/browser/extensions/api/dial/dial_registry.h index 60fe38e..9be88f4 100644 --- a/chrome/browser/extensions/api/dial/dial_registry.h +++ b/chrome/browser/extensions/api/dial/dial_registry.h @@ -179,6 +179,7 @@ class DialRegistry : public DialService::Observer, FRIEND_TEST_ALL_PREFIXES(DialRegistryTest, TestNoDevicesDiscovered); FRIEND_TEST_ALL_PREFIXES(DialRegistryTest, TestDevicesDiscovered); FRIEND_TEST_ALL_PREFIXES(DialRegistryTest, TestDeviceExpires); + FRIEND_TEST_ALL_PREFIXES(DialRegistryTest, TestExpiredDeviceIsRediscovered); FRIEND_TEST_ALL_PREFIXES(DialRegistryTest, TestRemovingListenerDoesNotClearList); FRIEND_TEST_ALL_PREFIXES(DialRegistryTest, TestNetworkEventConnectionLost); diff --git a/chrome/browser/extensions/api/dial/dial_registry_unittest.cc b/chrome/browser/extensions/api/dial/dial_registry_unittest.cc index 5a595d3..ba39270 100644 --- a/chrome/browser/extensions/api/dial/dial_registry_unittest.cc +++ b/chrome/browser/extensions/api/dial/dial_registry_unittest.cc @@ -198,6 +198,57 @@ TEST_F(DialRegistryTest, TestDeviceExpires) { registry_->OnListenerRemoved(); } +TEST_F(DialRegistryTest, TestExpiredDeviceIsRediscovered) { + std::vector<Time> discovery_times; + discovery_times.push_back(Time::Now()); + discovery_times.push_back(discovery_times[0] + TimeDelta::FromSeconds(30)); + discovery_times.push_back(discovery_times[1] + TimeDelta::FromSeconds(30)); + + DialDeviceData rediscovered_device("first", + GURL("http://127.0.0.1/dd.xml"), + discovery_times[2]); + + SetListenerExpectations(); + + // TODO(mfoltz): Convert other tests to use InSequence to make expectations + // more obvious. + InSequence s; + + EXPECT_CALL(registry_->mock_service(), Discover()); + EXPECT_CALL(mock_observer_, OnDialDeviceEvent(empty_list_)); + EXPECT_CALL(mock_observer_, OnDialDeviceEvent(list_with_first_device_)); + + EXPECT_CALL(registry_->mock_service(), Discover()); + EXPECT_CALL(mock_observer_, OnDialDeviceEvent(list_with_first_device_)); + EXPECT_CALL(mock_observer_, OnDialDeviceEvent(empty_list_)); + + EXPECT_CALL(registry_->mock_service(), Discover()); + EXPECT_CALL(mock_observer_, OnDialDeviceEvent(empty_list_)); + EXPECT_CALL(mock_observer_, OnDialDeviceEvent(list_with_first_device_)); + + registry_->time_ = discovery_times[0]; + registry_->OnListenerAdded(); + registry_->OnDiscoveryRequest(NULL); + registry_->OnDeviceDiscovered(NULL, first_device_); + registry_->OnDiscoveryFinished(NULL); + + // Will expire "first" device as it is not discovered this time. + registry_->time_ = discovery_times[1]; + registry_->DoDiscovery(); + registry_->OnDiscoveryRequest(NULL); + registry_->OnDiscoveryFinished(NULL); + + // "first" device is rediscovered 30 seconds later. We pass a device object + // with a newer discovery time so it is not pruned immediately. + registry_->time_ = discovery_times[2]; + registry_->DoDiscovery(); + registry_->OnDiscoveryRequest(NULL); + registry_->OnDeviceDiscovered(NULL, rediscovered_device); + registry_->OnDiscoveryFinished(NULL); + + registry_->OnListenerRemoved(); +} + TEST_F(DialRegistryTest, TestRemovingListenerDoesNotClearList) { EXPECT_CALL(registry_->mock_service(), AddObserver(A<DialService::Observer*>())) |