Index: components/password_manager/core/browser/log_router_unittest.cc |
diff --git a/components/password_manager/core/browser/log_router_unittest.cc b/components/password_manager/core/browser/log_router_unittest.cc |
index b8909988c1378e83563e890ab565c86db2062d4a..6c02dae565de1d0b8f53a32eeadfb4eaf721be3c 100644 |
--- a/components/password_manager/core/browser/log_router_unittest.cc |
+++ b/components/password_manager/core/browser/log_router_unittest.cc |
@@ -24,12 +24,18 @@ class MockLogReceiver : public PasswordManagerLogger { |
MOCK_METHOD1(LogSavePasswordProgress, void(const std::string&)); |
}; |
+class MockClient : public StubPasswordManagerClient { |
+ public: |
+ MOCK_METHOD1(OnLogRouterAvailabilityChanged, void(bool)); |
+}; |
+ |
} // namespace |
class LogRouterTest : public testing::Test { |
protected: |
testing::StrictMock<MockLogReceiver> receiver_; |
testing::StrictMock<MockLogReceiver> receiver2_; |
+ testing::StrictMock<MockClient> client_; |
}; |
TEST_F(LogRouterTest, ProcessLog_NoReceiver) { |
@@ -93,4 +99,59 @@ TEST_F(LogRouterTest, ProcessLog_TwoReceiversNoUpdateAfterUnregistering) { |
router.UnregisterReceiver(&receiver2_); |
} |
+TEST_F(LogRouterTest, RegisterClient_NoReceivers) { |
+ LogRouter router; |
+ EXPECT_FALSE(router.RegisterClient(&client_)); |
+ router.UnregisterClient(&client_); |
+} |
+ |
+TEST_F(LogRouterTest, RegisterClient_OneReceiverBeforeClient) { |
+ LogRouter router; |
+ // First register a receiver. |
+ EXPECT_EQ(std::string(), router.RegisterReceiver(&receiver_)); |
+ // The client should be told the LogRouter has some receivers. |
+ EXPECT_TRUE(router.RegisterClient(&client_)); |
+ // Now unregister the reciever. The client should be told the LogRouter has no |
+ // receivers. |
+ EXPECT_CALL(client_, OnLogRouterAvailabilityChanged(false)).Times(1); |
+ router.UnregisterReceiver(&receiver_); |
+ router.UnregisterClient(&client_); |
+} |
+ |
+TEST_F(LogRouterTest, RegisterClient_OneClientBeforeReceiver) { |
+ LogRouter router; |
+ // First register a client; the client should be told the LogRouter has no |
+ // receivers. |
+ EXPECT_FALSE(router.RegisterClient(&client_)); |
+ // Now register the receiver. The client should be notified. |
+ EXPECT_CALL(client_, OnLogRouterAvailabilityChanged(true)).Times(1); |
+ EXPECT_EQ(std::string(), router.RegisterReceiver(&receiver_)); |
+ // Now unregister the client. |
+ router.UnregisterClient(&client_); |
+ // Now unregister the reciever. The client should not hear about it. |
+ EXPECT_CALL(client_, OnLogRouterAvailabilityChanged(_)).Times(0); |
+ router.UnregisterReceiver(&receiver_); |
+} |
+ |
+TEST_F(LogRouterTest, RegisterClient_OneClientTwoReceivers) { |
+ LogRouter router; |
+ // First register a client; the client should be told the LogRouter has no |
+ // receivers. |
+ EXPECT_FALSE(router.RegisterClient(&client_)); |
+ // Now register the 1st receiver. The client should be notified. |
+ EXPECT_CALL(client_, OnLogRouterAvailabilityChanged(true)).Times(1); |
+ EXPECT_EQ(std::string(), router.RegisterReceiver(&receiver_)); |
+ // Now register the 2nd receiver. The client should not be notified. |
+ EXPECT_CALL(client_, OnLogRouterAvailabilityChanged(true)).Times(0); |
+ EXPECT_EQ(std::string(), router.RegisterReceiver(&receiver2_)); |
+ // Now unregister the 1st reciever. The client should not hear about it. |
+ EXPECT_CALL(client_, OnLogRouterAvailabilityChanged(false)).Times(0); |
+ router.UnregisterReceiver(&receiver_); |
+ // Now unregister the 2nd reciever. The client should hear about it. |
+ EXPECT_CALL(client_, OnLogRouterAvailabilityChanged(false)).Times(1); |
+ router.UnregisterReceiver(&receiver2_); |
+ // Now unregister the client. |
+ router.UnregisterClient(&client_); |
+} |
+ |
} // namespace password_manager |