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 58eb799de88c6c76083d94ab7f2dddc7e852c301..82ae23f8e3cc140cf109da138c50139e0a9cca92 100644 |
--- a/chrome/browser/password_manager/chrome_password_manager_client_unittest.cc |
+++ b/chrome/browser/password_manager/chrome_password_manager_client_unittest.cc |
@@ -4,6 +4,8 @@ |
#include "chrome/browser/password_manager/chrome_password_manager_client.h" |
+#include <string> |
+ |
#include "base/command_line.h" |
#include "base/metrics/field_trial.h" |
#include "base/prefs/pref_registry_simple.h" |
@@ -20,7 +22,9 @@ |
#include "components/password_manager/content/browser/password_manager_internals_service_factory.h" |
#include "components/password_manager/content/common/credential_manager_messages.h" |
#include "components/password_manager/core/browser/credentials_filter.h" |
+#include "components/password_manager/core/browser/log_manager.h" |
#include "components/password_manager/core/browser/log_receiver.h" |
+#include "components/password_manager/core/browser/log_router.h" |
#include "components/password_manager/core/browser/password_manager_internals_service.h" |
#include "components/password_manager/core/common/credential_manager_types.h" |
#include "components/password_manager/core/common/password_manager_pref_names.h" |
@@ -47,13 +51,6 @@ const char kPasswordManagerSettingsBehaviourChangeEnabledGroupName[] = |
const char kPasswordManagerSettingsBehaviourChangeDisabledGroupName[] = |
"PasswordManagerSettingsBehaviourChange.NotActive"; |
-const char kTestText[] = "abcd1234"; |
- |
-class MockLogReceiver : public password_manager::LogReceiver { |
- public: |
- MOCK_METHOD1(LogSavePasswordProgress, void(const std::string&)); |
-}; |
- |
// TODO(vabr): Get rid of the mocked client in the client's own test, see |
// http://crbug.com/474577. |
class MockChromePasswordManagerClient : public ChromePasswordManagerClient { |
@@ -71,12 +68,21 @@ class MockChromePasswordManagerClient : public ChromePasswordManagerClient { |
DISALLOW_COPY_AND_ASSIGN(MockChromePasswordManagerClient); |
}; |
+class DummyLogReceiver : public password_manager::LogReceiver { |
+ public: |
+ DummyLogReceiver() = default; |
+ |
+ void LogSavePasswordProgress(const std::string& text) override {} |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(DummyLogReceiver); |
+}; |
+ |
} // namespace |
class ChromePasswordManagerClientTest : public ChromeRenderViewHostTestHarness { |
public: |
- ChromePasswordManagerClientTest() |
- : service_(nullptr), field_trial_list_(nullptr) {} |
+ ChromePasswordManagerClientTest() : field_trial_list_(nullptr) {} |
void SetUp() override; |
syncable_prefs::TestingPrefServiceSyncable* prefs() { |
@@ -97,9 +103,6 @@ class ChromePasswordManagerClientTest : public ChromeRenderViewHostTestHarness { |
// returns false. |
bool WasLoggingActivationMessageSent(bool* activation_flag); |
- password_manager::PasswordManagerInternalsService* service_; |
- |
- testing::StrictMock<MockLogReceiver> receiver_; |
TestingPrefServiceSimple prefs_; |
base::FieldTrialList field_trial_list_; |
}; |
@@ -110,9 +113,6 @@ void ChromePasswordManagerClientTest::SetUp() { |
password_manager::prefs::kPasswordManagerSavingEnabled, true); |
ChromePasswordManagerClient::CreateForWebContentsWithAutofillClient( |
web_contents(), nullptr); |
- service_ = password_manager::PasswordManagerInternalsServiceFactory:: |
- GetForBrowserContext(profile()); |
- ASSERT_TRUE(service_); |
} |
ChromePasswordManagerClient* ChromePasswordManagerClientTest::GetClient() { |
@@ -133,86 +133,25 @@ bool ChromePasswordManagerClientTest::WasLoggingActivationMessageSent( |
return true; |
} |
-TEST_F(ChromePasswordManagerClientTest, LogSavePasswordProgressNoReceiver) { |
- ChromePasswordManagerClient* client = GetClient(); |
- |
- EXPECT_CALL(receiver_, LogSavePasswordProgress(kTestText)).Times(0); |
- // Before attaching the receiver, no text should be passed. |
- client->LogSavePasswordProgress(kTestText); |
- EXPECT_FALSE(client->IsLoggingActive()); |
-} |
- |
-TEST_F(ChromePasswordManagerClientTest, LogSavePasswordProgressAttachReceiver) { |
- ChromePasswordManagerClient* client = GetClient(); |
- EXPECT_FALSE(client->IsLoggingActive()); |
- |
- // After attaching the logger, text should be passed. |
- service_->RegisterReceiver(&receiver_); |
- EXPECT_TRUE(client->IsLoggingActive()); |
- EXPECT_CALL(receiver_, LogSavePasswordProgress(kTestText)).Times(1); |
- client->LogSavePasswordProgress(kTestText); |
- service_->UnregisterReceiver(&receiver_); |
- EXPECT_FALSE(client->IsLoggingActive()); |
-} |
- |
-TEST_F(ChromePasswordManagerClientTest, LogSavePasswordProgressDetachReceiver) { |
- ChromePasswordManagerClient* client = GetClient(); |
- |
- service_->RegisterReceiver(&receiver_); |
- EXPECT_TRUE(client->IsLoggingActive()); |
- service_->UnregisterReceiver(&receiver_); |
- EXPECT_FALSE(client->IsLoggingActive()); |
- |
- // After detaching the logger, no text should be passed. |
- EXPECT_CALL(receiver_, LogSavePasswordProgress(kTestText)).Times(0); |
- client->LogSavePasswordProgress(kTestText); |
-} |
- |
TEST_F(ChromePasswordManagerClientTest, LogSavePasswordProgressNotifyRenderer) { |
- ChromePasswordManagerClient* client = GetClient(); |
- bool logging_active = false; |
+ bool logging_active = true; |
+ // Ensure the existence of a driver, which will send the IPCs we listen for |
+ // below. |
+ NavigateAndCommit(GURL("about:blank")); |
// Initially, the logging should be off, so no IPC messages. |
- EXPECT_FALSE(WasLoggingActivationMessageSent(&logging_active)); |
- |
- service_->RegisterReceiver(&receiver_); |
- EXPECT_TRUE(client->IsLoggingActive()); |
+ EXPECT_TRUE(!WasLoggingActivationMessageSent(&logging_active) || |
+ !logging_active) |
+ << "logging_active=" << logging_active; |
+ |
+ DummyLogReceiver log_receiver; |
+ password_manager::LogRouter* log_router = password_manager:: |
+ PasswordManagerInternalsServiceFactory::GetForBrowserContext(profile()); |
+ EXPECT_EQ(std::string(), log_router->RegisterReceiver(&log_receiver)); |
EXPECT_TRUE(WasLoggingActivationMessageSent(&logging_active)); |
EXPECT_TRUE(logging_active); |
- service_->UnregisterReceiver(&receiver_); |
- EXPECT_FALSE(client->IsLoggingActive()); |
- EXPECT_TRUE(WasLoggingActivationMessageSent(&logging_active)); |
- EXPECT_FALSE(logging_active); |
-} |
- |
-TEST_F(ChromePasswordManagerClientTest, AnswerToPingsAboutLoggingState_Active) { |
- service_->RegisterReceiver(&receiver_); |
- |
- process()->sink().ClearMessages(); |
- |
- // Ping the client for logging activity update. |
- AutofillHostMsg_PasswordAutofillAgentConstructed msg(0); |
- static_cast<content::WebContentsObserver*>(GetClient())->OnMessageReceived( |
- msg, web_contents()->GetMainFrame()); |
- |
- bool logging_active = false; |
- EXPECT_TRUE(WasLoggingActivationMessageSent(&logging_active)); |
- EXPECT_TRUE(logging_active); |
- |
- service_->UnregisterReceiver(&receiver_); |
-} |
- |
-TEST_F(ChromePasswordManagerClientTest, |
- AnswerToPingsAboutLoggingState_Inactive) { |
- process()->sink().ClearMessages(); |
- |
- // Ping the client for logging activity update. |
- AutofillHostMsg_PasswordAutofillAgentConstructed msg(0); |
- static_cast<content::WebContentsObserver*>(GetClient())->OnMessageReceived( |
- msg, web_contents()->GetMainFrame()); |
- |
- bool logging_active = true; |
+ log_router->UnregisterReceiver(&log_receiver); |
EXPECT_TRUE(WasLoggingActivationMessageSent(&logging_active)); |
EXPECT_FALSE(logging_active); |
} |
@@ -232,18 +171,6 @@ TEST_F(ChromePasswordManagerClientTest, |
EXPECT_FALSE(GetClient()->IsAutomaticPasswordSavingEnabled()); |
} |
-TEST_F(ChromePasswordManagerClientTest, LogToAReceiver) { |
- ChromePasswordManagerClient* client = GetClient(); |
- service_->RegisterReceiver(&receiver_); |
- EXPECT_TRUE(client->IsLoggingActive()); |
- |
- EXPECT_CALL(receiver_, LogSavePasswordProgress(kTestText)).Times(1); |
- client->LogSavePasswordProgress(kTestText); |
- |
- service_->UnregisterReceiver(&receiver_); |
- EXPECT_FALSE(client->IsLoggingActive()); |
-} |
- |
TEST_F(ChromePasswordManagerClientTest, GetPasswordSyncState) { |
ChromePasswordManagerClient* client = GetClient(); |
@@ -404,3 +331,17 @@ TEST_F(ChromePasswordManagerClientTest, GetLastCommittedEntryURL) { |
NavigateAndCommit(kUrl); |
EXPECT_EQ(kUrl, GetClient()->GetLastCommittedEntryURL()); |
} |
+ |
+TEST_F(ChromePasswordManagerClientTest, WebUINoLogging) { |
+ // Make sure that logging is active. |
+ password_manager::LogRouter* log_router = password_manager:: |
+ PasswordManagerInternalsServiceFactory::GetForBrowserContext(profile()); |
+ DummyLogReceiver log_receiver; |
+ EXPECT_EQ(std::string(), log_router->RegisterReceiver(&log_receiver)); |
+ |
+ // But then navigate to a WebUI, there the logging should not be active. |
+ NavigateAndCommit(GURL("about:password-manager-internals")); |
+ EXPECT_FALSE(GetClient()->GetLogManager()->IsLoggingActive()); |
+ |
+ log_router->UnregisterReceiver(&log_receiver); |
+} |