summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/extensions/api/dial/dial_registry.h1
-rw-r--r--chrome/browser/extensions/api/dial/dial_registry_unittest.cc51
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*>()))