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)); |
+ |
+} |
+*/ |