Index: chrome/browser/extensions/api/idle/idle_api_unittest.cc |
diff --git a/chrome/browser/extensions/api/idle/idle_api_unittest.cc b/chrome/browser/extensions/api/idle/idle_api_unittest.cc |
index 62a313384ebb4a5b948d53dc8633aaf7833f56a8..83c03cb54afd79f5ebad2fb5d447aec1267b9797 100644 |
--- a/chrome/browser/extensions/api/idle/idle_api_unittest.cc |
+++ b/chrome/browser/extensions/api/idle/idle_api_unittest.cc |
@@ -550,4 +550,30 @@ TEST_F(IdleTest, UnloadWhileListening) { |
content::Details<UnloadedExtensionInfo>(&details)); |
} |
+// Verifies that re-adding a listener after a state change doesn't immediately |
+// fire a change event. Regression test for http://crbug.com/366580. |
+TEST_F(IdleTest, ReAddListener) { |
+ idle_provider_->set_locked(false); |
+ |
+ { |
+ // Fire idle event. |
+ ScopedListen listen(idle_manager_, "test"); |
+ idle_provider_->set_idle_time(60); |
+ EXPECT_CALL(*event_delegate_, OnStateChanged("test", IDLE_STATE_IDLE)); |
+ idle_manager_->UpdateIdleState(); |
+ testing::Mock::VerifyAndClearExpectations(event_delegate_); |
+ } |
+ |
+ // Trigger active. |
+ idle_provider_->set_idle_time(0); |
+ idle_manager_->UpdateIdleState(); |
+ |
+ { |
+ // Nothing should have fired, the listener wasn't added until afterward. |
+ ScopedListen listen(idle_manager_, "test"); |
+ idle_manager_->UpdateIdleState(); |
+ testing::Mock::VerifyAndClearExpectations(event_delegate_); |
+ } |
+} |
+ |
} // namespace extensions |