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

Unified Diff: chrome/browser/ui/passwords/manage_passwords_bubble_model_unittest.cc

Issue 232753002: Password bubble: Deplatformify ManagePasswordsBubbleView. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Tests!!! Created 6 years, 8 months 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: chrome/browser/ui/passwords/manage_passwords_bubble_model_unittest.cc
diff --git a/chrome/browser/ui/passwords/manage_passwords_bubble_model_unittest.cc b/chrome/browser/ui/passwords/manage_passwords_bubble_model_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..10bad76e6b2b638cc2c65fd7f212c5e6235a7524
--- /dev/null
+++ b/chrome/browser/ui/passwords/manage_passwords_bubble_model_unittest.cc
@@ -0,0 +1,278 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/metrics/histogram_samples.h"
+#include "base/prefs/pref_service.h"
+#include "base/test/statistics_delta_reader.h"
+#include "chrome/browser/ui/passwords/manage_passwords_bubble.h"
+#include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h"
+#include "chrome/browser/ui/passwords/test_manage_passwords_bubble_ui_controller.h"
+#include "chrome/test/base/testing_profile.h"
+#include "components/password_manager/core/browser/password_manager_metrics_util.h"
+#include "content/public/test/test_browser_thread_bundle.h"
+#include "content/public/test/web_contents_tester.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+const char kUIDismissalReasonMetric[] = "PasswordManager.UIDismissalReason";
+
+class ManagePasswordsBubbleModelTest : public testing::Test {
+ public:
+ ManagePasswordsBubbleModelTest()
+ : test_web_contents_(
+ content::WebContentsTester::CreateTestWebContents(&profile_,
+ NULL)) {}
+
+ virtual void SetUp() OVERRIDE {
+ // Create the test UIController here so that it's bound to
+ // |test_web_contents_| and therefore accessible to the model.
+ new TestManagePasswordsBubbleUIController(test_web_contents_.get());
+
+ model_.reset(new ManagePasswordsBubbleModel(test_web_contents_.get()));
+ }
+
+ virtual void TearDown() OVERRIDE { model_.reset(); }
+
+ void PretendPasswordWaiting() {
+ model_->set_manage_passwords_bubble_state(
+ ManagePasswordsBubbleModel::PASSWORD_TO_BE_SAVED);
+ model_->OnBubbleShown(ManagePasswordsBubble::AUTOMATIC);
+ }
+
+ void PretendManagingPasswords() {
+ model_->set_manage_passwords_bubble_state(
+ ManagePasswordsBubbleModel::MANAGE_PASSWORDS);
+ model_->OnBubbleShown(ManagePasswordsBubble::USER_ACTION);
+ }
+
+ TestManagePasswordsBubbleUIController* controller() {
+ return reinterpret_cast<TestManagePasswordsBubbleUIController*>(
+ ManagePasswordsBubbleUIController::FromWebContents(
+ test_web_contents_.get()));
+ }
+
+ protected:
+ scoped_ptr<ManagePasswordsBubbleModel> model_;
+
+ private:
+ content::TestBrowserThreadBundle thread_bundle_;
+ TestingProfile profile_;
+ scoped_ptr<content::WebContents> test_web_contents_;
+};
+
+TEST_F(ManagePasswordsBubbleModelTest, DefaultValues) {
+ EXPECT_EQ(model_->display_disposition(),
+ password_manager::metrics_util::AUTOMATIC_WITH_PASSWORD_PENDING);
+ EXPECT_EQ(model_->dismissal_reason(),
+ password_manager::metrics_util::NOT_DISPLAYED);
+ EXPECT_FALSE(controller()->saved_password());
+ EXPECT_FALSE(controller()->never_saved_password());
+}
+
+TEST_F(ManagePasswordsBubbleModelTest, CloseWithoutLogging) {
+ base::StatisticsDeltaReader statistics_delta_reader;
+ model_->OnCloseWithoutLogging();
+ model_->OnBubbleHidden();
+ EXPECT_EQ(model_->dismissal_reason(),
+ password_manager::metrics_util::NOT_DISPLAYED);
+ EXPECT_FALSE(controller()->saved_password());
+ EXPECT_FALSE(controller()->never_saved_password());
+
+ scoped_ptr<base::HistogramSamples> samples(
+ statistics_delta_reader.GetHistogramSamplesSinceCreation(
+ kUIDismissalReasonMetric));
+ EXPECT_EQ(NULL, samples.get());
+}
+
+TEST_F(ManagePasswordsBubbleModelTest, CloseWithoutInteraction) {
+ base::StatisticsDeltaReader statistics_delta_reader;
+ PretendPasswordWaiting();
+ model_->OnBubbleHidden();
+ EXPECT_EQ(model_->dismissal_reason(),
+ password_manager::metrics_util::NO_DIRECT_INTERACTION);
+ EXPECT_FALSE(controller()->saved_password());
+ EXPECT_FALSE(controller()->never_saved_password());
+
+ scoped_ptr<base::HistogramSamples> samples(
+ statistics_delta_reader.GetHistogramSamplesSinceCreation(
+ kUIDismissalReasonMetric));
+ EXPECT_EQ(
+ 1,
+ samples->GetCount(password_manager::metrics_util::NO_DIRECT_INTERACTION));
+ EXPECT_EQ(0, samples->GetCount(password_manager::metrics_util::CLICKED_SAVE));
+ EXPECT_EQ(0, samples->GetCount(password_manager::metrics_util::CLICKED_NOPE));
+ EXPECT_EQ(0,
+ samples->GetCount(password_manager::metrics_util::CLICKED_NEVER));
+ EXPECT_EQ(0,
+ samples->GetCount(password_manager::metrics_util::CLICKED_MANAGE));
+ EXPECT_EQ(0, samples->GetCount(password_manager::metrics_util::CLICKED_DONE));
+}
+
+TEST_F(ManagePasswordsBubbleModelTest, ClickSave) {
+ base::StatisticsDeltaReader statistics_delta_reader;
+ PretendPasswordWaiting();
+ model_->OnSaveClicked();
+ model_->OnBubbleHidden();
+ EXPECT_EQ(model_->dismissal_reason(),
+ password_manager::metrics_util::CLICKED_SAVE);
+ EXPECT_TRUE(controller()->saved_password());
+ EXPECT_FALSE(controller()->never_saved_password());
+
+ scoped_ptr<base::HistogramSamples> samples(
+ statistics_delta_reader.GetHistogramSamplesSinceCreation(
+ kUIDismissalReasonMetric));
+ EXPECT_EQ(
+ 0,
+ samples->GetCount(password_manager::metrics_util::NO_DIRECT_INTERACTION));
+ EXPECT_EQ(1, samples->GetCount(password_manager::metrics_util::CLICKED_SAVE));
+ EXPECT_EQ(0, samples->GetCount(password_manager::metrics_util::CLICKED_NOPE));
+ EXPECT_EQ(0,
+ samples->GetCount(password_manager::metrics_util::CLICKED_NEVER));
+ EXPECT_EQ(0,
+ samples->GetCount(password_manager::metrics_util::CLICKED_MANAGE));
+ EXPECT_EQ(0, samples->GetCount(password_manager::metrics_util::CLICKED_DONE));
+}
+
+TEST_F(ManagePasswordsBubbleModelTest, ClickNope) {
+ base::StatisticsDeltaReader statistics_delta_reader;
+ PretendPasswordWaiting();
+ model_->OnNopeClicked();
+ model_->OnBubbleHidden();
+ EXPECT_EQ(model_->dismissal_reason(),
+ password_manager::metrics_util::CLICKED_NOPE);
+ EXPECT_FALSE(controller()->saved_password());
+ EXPECT_FALSE(controller()->never_saved_password());
+
+ scoped_ptr<base::HistogramSamples> samples(
+ statistics_delta_reader.GetHistogramSamplesSinceCreation(
+ kUIDismissalReasonMetric));
+ EXPECT_EQ(
+ 0,
+ samples->GetCount(password_manager::metrics_util::NO_DIRECT_INTERACTION));
+ EXPECT_EQ(0, samples->GetCount(password_manager::metrics_util::CLICKED_SAVE));
+ EXPECT_EQ(1, samples->GetCount(password_manager::metrics_util::CLICKED_NOPE));
+ EXPECT_EQ(0,
+ samples->GetCount(password_manager::metrics_util::CLICKED_NEVER));
+ EXPECT_EQ(0,
+ samples->GetCount(password_manager::metrics_util::CLICKED_MANAGE));
+ EXPECT_EQ(0, samples->GetCount(password_manager::metrics_util::CLICKED_DONE));
+}
+
+TEST_F(ManagePasswordsBubbleModelTest, ClickNever) {
+ base::StatisticsDeltaReader statistics_delta_reader;
+ PretendPasswordWaiting();
+ model_->OnNeverForThisSiteClicked();
+ model_->OnBubbleHidden();
+ EXPECT_EQ(model_->dismissal_reason(),
+ password_manager::metrics_util::CLICKED_NEVER);
+ EXPECT_FALSE(controller()->saved_password());
+ EXPECT_TRUE(controller()->never_saved_password());
+
+ scoped_ptr<base::HistogramSamples> samples(
+ statistics_delta_reader.GetHistogramSamplesSinceCreation(
+ kUIDismissalReasonMetric));
+ EXPECT_EQ(
+ 0,
+ samples->GetCount(password_manager::metrics_util::NO_DIRECT_INTERACTION));
+ EXPECT_EQ(0, samples->GetCount(password_manager::metrics_util::CLICKED_SAVE));
+ EXPECT_EQ(0, samples->GetCount(password_manager::metrics_util::CLICKED_NOPE));
+ EXPECT_EQ(1,
+ samples->GetCount(password_manager::metrics_util::CLICKED_NEVER));
+ EXPECT_EQ(0,
+ samples->GetCount(password_manager::metrics_util::CLICKED_MANAGE));
+ EXPECT_EQ(0, samples->GetCount(password_manager::metrics_util::CLICKED_DONE));
+}
+
+TEST_F(ManagePasswordsBubbleModelTest, ClickManage) {
+ base::StatisticsDeltaReader statistics_delta_reader;
+ PretendManagingPasswords();
+ model_->OnManageLinkClicked();
+ model_->OnBubbleHidden();
+ EXPECT_EQ(model_->dismissal_reason(),
+ password_manager::metrics_util::CLICKED_MANAGE);
+ EXPECT_FALSE(controller()->saved_password());
+ EXPECT_FALSE(controller()->never_saved_password());
+
+ scoped_ptr<base::HistogramSamples> samples(
+ statistics_delta_reader.GetHistogramSamplesSinceCreation(
+ kUIDismissalReasonMetric));
+ EXPECT_EQ(
+ 0,
+ samples->GetCount(password_manager::metrics_util::NO_DIRECT_INTERACTION));
+ EXPECT_EQ(0, samples->GetCount(password_manager::metrics_util::CLICKED_SAVE));
+ EXPECT_EQ(0, samples->GetCount(password_manager::metrics_util::CLICKED_NOPE));
+ EXPECT_EQ(0,
+ samples->GetCount(password_manager::metrics_util::CLICKED_NEVER));
+ EXPECT_EQ(1,
+ samples->GetCount(password_manager::metrics_util::CLICKED_MANAGE));
+ EXPECT_EQ(0, samples->GetCount(password_manager::metrics_util::CLICKED_DONE));
+}
+
+TEST_F(ManagePasswordsBubbleModelTest, ClickDone) {
+ base::StatisticsDeltaReader statistics_delta_reader;
+ PretendManagingPasswords();
+ model_->OnDoneClicked();
+ model_->OnBubbleHidden();
+ EXPECT_EQ(model_->dismissal_reason(),
+ password_manager::metrics_util::CLICKED_DONE);
+ EXPECT_FALSE(controller()->saved_password());
+ EXPECT_FALSE(controller()->never_saved_password());
+
+ scoped_ptr<base::HistogramSamples> samples(
+ statistics_delta_reader.GetHistogramSamplesSinceCreation(
+ kUIDismissalReasonMetric));
+ EXPECT_EQ(
+ 0,
+ samples->GetCount(password_manager::metrics_util::NO_DIRECT_INTERACTION));
+ EXPECT_EQ(0, samples->GetCount(password_manager::metrics_util::CLICKED_SAVE));
+ EXPECT_EQ(0, samples->GetCount(password_manager::metrics_util::CLICKED_NOPE));
+ EXPECT_EQ(0,
+ samples->GetCount(password_manager::metrics_util::CLICKED_NEVER));
+ EXPECT_EQ(0,
+ samples->GetCount(password_manager::metrics_util::CLICKED_MANAGE));
+ EXPECT_EQ(1, samples->GetCount(password_manager::metrics_util::CLICKED_DONE));
+}
+
+TEST_F(ManagePasswordsBubbleModelTest, DismissalReasons) {
vabr (Chromium) 2014/04/10 12:35:14 optional: these EXPECT_EQ calls could be included
Mike West 2014/04/10 12:46:43 Indeed. I meant to remove this test after creating
+
vabr (Chromium) 2014/04/10 12:35:14 nit: please remove the blank line
Mike West 2014/04/10 12:46:43 Done.
+ model_->OnDoneClicked();
+ EXPECT_EQ(model_->dismissal_reason(),
+ password_manager::metrics_util::CLICKED_DONE);
+
+ model_->OnManageLinkClicked();
+ EXPECT_EQ(model_->dismissal_reason(),
+ password_manager::metrics_util::CLICKED_MANAGE);
+
+ model_->OnNeverForThisSiteClicked();
+ EXPECT_EQ(model_->dismissal_reason(),
+ password_manager::metrics_util::CLICKED_NEVER);
+
+ model_->OnNopeClicked();
+ EXPECT_EQ(model_->dismissal_reason(),
+ password_manager::metrics_util::CLICKED_NOPE);
+
+ model_->OnSaveClicked();
+ EXPECT_EQ(model_->dismissal_reason(),
+ password_manager::metrics_util::CLICKED_SAVE);
+}
+
+TEST_F(ManagePasswordsBubbleModelTest, WaitingToSavePassword) {
+ EXPECT_FALSE(model_->WaitingToSavePassword());
+
+ model_->set_manage_passwords_bubble_state(
+ ManagePasswordsBubbleModel::PASSWORD_TO_BE_SAVED);
+ EXPECT_TRUE(model_->WaitingToSavePassword());
+}
+
+/*
vabr (Chromium) 2014/04/10 12:35:14 Did you mean to remove this? If you meant to disab
Mike West 2014/04/10 12:46:43 Meant to kill this, thanks!
+TEST_F(ManagePasswordsBubbleModelTest, DismissalMetrics) {
+
+
+ scoped_ptr<base::HistogramSamples> samples(
+ statistics_delta_reader.GetHistogramSamplesSinceCreation(
+ kRequestThrottledHistogramName));
+ ASSERT_EQ(2, samples->GetCount(0));
+ ASSERT_EQ(0, samples->GetCount(1));
+
+}
+*/

Powered by Google App Engine
This is Rietveld 408576698