| 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
|
|
|