Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(435)

Unified Diff: components/password_manager/core/browser/password_manager_unittest.cc

Issue 1415533013: Fix password manager internals renderer reporting (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/password_manager/core/browser/password_manager_unittest.cc
diff --git a/components/password_manager/core/browser/password_manager_unittest.cc b/components/password_manager/core/browser/password_manager_unittest.cc
index 6fb28b50c74ea92074b4e8265f75e375a15f5cc3..d6b90e581494e9c386146545730ed7b9e33ca81d 100644
--- a/components/password_manager/core/browser/password_manager_unittest.cc
+++ b/components/password_manager/core/browser/password_manager_unittest.cc
@@ -11,6 +11,8 @@
#include "base/message_loop/message_loop.h"
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.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/mock_password_store.h"
#include "components/password_manager/core/browser/password_autofill_manager.h"
#include "components/password_manager/core/browser/password_manager_driver.h"
@@ -35,6 +37,8 @@ namespace password_manager {
namespace {
+const char kTestText[] = "abcd1234";
+
class MockStoreResultFilter : public CredentialsFilter {
public:
MOCK_CONST_METHOD1(FilterResultsPtr,
@@ -67,6 +71,7 @@ class MockPasswordManagerClient : public StubPasswordManagerClient {
MOCK_METHOD0(GetPrefs, PrefService*());
MOCK_METHOD0(GetDriver, PasswordManagerDriver*());
MOCK_CONST_METHOD0(GetStoreResultFilter, const CredentialsFilter*());
+ MOCK_CONST_METHOD0(GetLogRouter, LogRouter*());
// Workaround for scoped_ptr<> lacking a copy constructor.
bool PromptUserToSaveOrUpdatePassword(
@@ -95,6 +100,11 @@ class MockPasswordManagerDriver : public StubPasswordManagerDriver {
MOCK_METHOD0(GetPasswordAutofillManager, PasswordAutofillManager*());
};
+class MockLogReceiver : public password_manager::LogReceiver {
+ public:
+ MOCK_METHOD1(LogSavePasswordProgress, void(const std::string&));
+};
+
// Invokes the password store consumer with a single copy of |form|.
ACTION_P(InvokeConsumer, form) {
ScopedVector<PasswordForm> result;
@@ -121,6 +131,8 @@ class PasswordManagerTest : public testing::Test {
.WillRepeatedly(Return(store_.get()));
EXPECT_CALL(*store_, GetSiteStatsMock(_)).Times(AnyNumber());
EXPECT_CALL(client_, GetDriver()).WillRepeatedly(Return(&driver_));
+ // Prepare the LogRouter before constructing |manager_|.
+ ON_CALL(client_, GetLogRouter()).WillByDefault(Return(&router_));
manager_.reset(new PasswordManager(&client_));
password_autofill_manager_.reset(
@@ -137,6 +149,7 @@ class PasswordManagerTest : public testing::Test {
void TearDown() override {
store_->Shutdown();
store_ = nullptr;
+ manager_.reset(); // Destruct before LogRouter.
}
PasswordForm MakeSimpleForm() {
@@ -213,8 +226,10 @@ class PasswordManagerTest : public testing::Test {
MockPasswordManagerClient client_;
MockPasswordManagerDriver driver_;
scoped_ptr<PasswordAutofillManager> password_autofill_manager_;
- scoped_ptr<PasswordManager> manager_;
PasswordForm submitted_form_;
+ testing::StrictMock<MockLogReceiver> receiver_;
+ LogRouter router_;
+ scoped_ptr<PasswordManager> manager_;
};
MATCHER_P(FormMatches, form, "") {
@@ -1304,4 +1319,45 @@ TEST_F(PasswordManagerTest, AutofillingOfAffiliatedCredentials) {
EXPECT_EQ(android_form.signon_realm, form_data.preferred_realm);
}
+TEST_F(PasswordManagerTest, LogSavePasswordProgressNoReceiver) {
+ EXPECT_CALL(receiver_, LogSavePasswordProgress(kTestText)).Times(0);
vasilii 2015/11/12 16:27:34 LogSavePasswordProgress(_)
vabr (Chromium) 2015/11/12 21:55:43 Done.
+ // Before attaching the receiver, no text should be passed.
+ manager()->LogSavePasswordProgress(kTestText);
+ EXPECT_FALSE(manager()->IsLoggingActive());
+}
+
+TEST_F(PasswordManagerTest, LogSavePasswordProgressAttachReceiver) {
+ EXPECT_FALSE(manager()->IsLoggingActive());
+
+ // After attaching the logger, text should be passed.
+ router_.RegisterReceiver(&receiver_);
+ EXPECT_TRUE(manager()->IsLoggingActive());
+ EXPECT_CALL(receiver_, LogSavePasswordProgress(kTestText));
+ manager()->LogSavePasswordProgress(kTestText);
+ router_.UnregisterReceiver(&receiver_);
+ EXPECT_FALSE(manager()->IsLoggingActive());
+}
+
+TEST_F(PasswordManagerTest, LogSavePasswordProgressDetachReceiver) {
+ router_.RegisterReceiver(&receiver_);
+ EXPECT_TRUE(manager()->IsLoggingActive());
+ router_.UnregisterReceiver(&receiver_);
+ EXPECT_FALSE(manager()->IsLoggingActive());
+
+ // After detaching the logger, no text should be passed.
+ EXPECT_CALL(receiver_, LogSavePasswordProgress(kTestText)).Times(0);
vasilii 2015/11/12 16:27:35 LogSavePasswordProgress(_)
vabr (Chromium) 2015/11/12 21:55:43 Done.
+ manager()->LogSavePasswordProgress(kTestText);
+}
+
+TEST_F(PasswordManagerTest, LogToAReceiver) {
vasilii 2015/11/12 16:27:34 I don't see any difference with LogSavePasswordPr
vabr (Chromium) 2015/11/12 21:55:43 Good call, removed.
+ router_.RegisterReceiver(&receiver_);
+ EXPECT_TRUE(manager()->IsLoggingActive());
+
+ EXPECT_CALL(receiver_, LogSavePasswordProgress(kTestText));
+ manager()->LogSavePasswordProgress(kTestText);
+
+ router_.UnregisterReceiver(&receiver_);
+ EXPECT_FALSE(manager()->IsLoggingActive());
+}
+
} // namespace password_manager

Powered by Google App Engine
This is Rietveld 408576698