| Index: chrome/browser/password_manager/chrome_password_manager_client_unittest.cc
|
| diff --git a/chrome/browser/password_manager/chrome_password_manager_client_unittest.cc b/chrome/browser/password_manager/chrome_password_manager_client_unittest.cc
|
| index 7c41f7e3f56395b9eb903add4eaf392bf7ed25e0..8e5e10ddd91f404a0da8aa7a818e92735e593f20 100644
|
| --- a/chrome/browser/password_manager/chrome_password_manager_client_unittest.cc
|
| +++ b/chrome/browser/password_manager/chrome_password_manager_client_unittest.cc
|
| @@ -5,9 +5,11 @@
|
| #include "chrome/browser/password_manager/chrome_password_manager_client.h"
|
|
|
| #include "chrome/test/base/chrome_render_view_host_test_harness.h"
|
| +#include "components/autofill/content/common/autofill_messages.h"
|
| #include "components/password_manager/core/browser/password_manager_logger.h"
|
| #include "content/public/browser/browser_context.h"
|
| #include "content/public/browser/web_contents.h"
|
| +#include "content/public/test/mock_render_process_host.h"
|
| #include "testing/gmock/include/gmock/gmock.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| @@ -35,7 +37,12 @@ class ChromePasswordManagerClientTest : public ChromeRenderViewHostTestHarness {
|
| protected:
|
| ChromePasswordManagerClient* GetClient();
|
|
|
| - testing::StrictMock<MockPasswordManagerLogger> logger;
|
| + // If the test IPC sink contains an AutofillMsg_ChangeLoggingState message,
|
| + // then copies its argument into |activation_flag| and returns true. Otherwise
|
| + // returns false.
|
| + bool WasLoggingActivationMessageSent(bool* activation_flag);
|
| +
|
| + testing::StrictMock<MockPasswordManagerLogger> logger_;
|
| };
|
|
|
| void ChromePasswordManagerClientTest::SetUp() {
|
| @@ -47,10 +54,24 @@ ChromePasswordManagerClient* ChromePasswordManagerClientTest::GetClient() {
|
| return ChromePasswordManagerClient::FromWebContents(web_contents());
|
| }
|
|
|
| +bool ChromePasswordManagerClientTest::WasLoggingActivationMessageSent(
|
| + bool* activation_flag) {
|
| + const uint32 kMsgID = AutofillMsg_ChangeLoggingState::ID;
|
| + const IPC::Message* message =
|
| + process()->sink().GetFirstMessageMatching(kMsgID);
|
| + if (!message)
|
| + return false;
|
| + Tuple1<bool> param;
|
| + AutofillMsg_ChangeLoggingState::Read(message, ¶m);
|
| + *activation_flag = param.a;
|
| + process()->sink().ClearMessages();
|
| + return true;
|
| +}
|
| +
|
| TEST_F(ChromePasswordManagerClientTest, LogSavePasswordProgressNoLogger) {
|
| ChromePasswordManagerClient* client = GetClient();
|
|
|
| - EXPECT_CALL(logger, LogSavePasswordProgress(kTestText)).Times(0);
|
| + EXPECT_CALL(logger_, LogSavePasswordProgress(kTestText)).Times(0);
|
| // Before attaching the logger, no text should be passed.
|
| client->LogSavePasswordProgress(kTestText);
|
| EXPECT_FALSE(client->IsLoggingActive());
|
| @@ -60,8 +81,8 @@ TEST_F(ChromePasswordManagerClientTest, LogSavePasswordProgressAttachLogger) {
|
| ChromePasswordManagerClient* client = GetClient();
|
|
|
| // After attaching the logger, text should be passed.
|
| - client->SetLogger(&logger);
|
| - EXPECT_CALL(logger, LogSavePasswordProgress(kTestText)).Times(1);
|
| + client->SetLogger(&logger_);
|
| + EXPECT_CALL(logger_, LogSavePasswordProgress(kTestText)).Times(1);
|
| client->LogSavePasswordProgress(kTestText);
|
| EXPECT_TRUE(client->IsLoggingActive());
|
| }
|
| @@ -69,10 +90,26 @@ TEST_F(ChromePasswordManagerClientTest, LogSavePasswordProgressAttachLogger) {
|
| TEST_F(ChromePasswordManagerClientTest, LogSavePasswordProgressDetachLogger) {
|
| ChromePasswordManagerClient* client = GetClient();
|
|
|
| - client->SetLogger(&logger);
|
| + client->SetLogger(&logger_);
|
| // After detaching the logger, no text should be passed.
|
| client->SetLogger(NULL);
|
| - EXPECT_CALL(logger, LogSavePasswordProgress(kTestText)).Times(0);
|
| + EXPECT_CALL(logger_, LogSavePasswordProgress(kTestText)).Times(0);
|
| client->LogSavePasswordProgress(kTestText);
|
| EXPECT_FALSE(client->IsLoggingActive());
|
| }
|
| +
|
| +TEST_F(ChromePasswordManagerClientTest, LogSavePasswordProgressNotifyRenderer) {
|
| + ChromePasswordManagerClient* client = GetClient();
|
| + bool logging_active = false;
|
| +
|
| + // Initially, the logging should be off, so no IPC messages.
|
| + EXPECT_FALSE(WasLoggingActivationMessageSent(&logging_active));
|
| +
|
| + client->SetLogger(&logger_);
|
| + EXPECT_TRUE(WasLoggingActivationMessageSent(&logging_active));
|
| + EXPECT_TRUE(logging_active);
|
| +
|
| + client->SetLogger(NULL);
|
| + EXPECT_TRUE(WasLoggingActivationMessageSent(&logging_active));
|
| + EXPECT_FALSE(logging_active);
|
| +}
|
|
|