| 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..2ee54d68fec783cbc384e66a8637a4232d26c097
|
| --- /dev/null
|
| +++ b/chrome/browser/ui/passwords/manage_passwords_bubble_model_unittest.cc
|
| @@ -0,0 +1,242 @@
|
| +// 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/manage_passwords_bubble_ui_controller_mock.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 ManagePasswordsBubbleUIControllerMock(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);
|
| + }
|
| +
|
| + ManagePasswordsBubbleUIControllerMock* controller() {
|
| + return reinterpret_cast<ManagePasswordsBubbleUIControllerMock*>(
|
| + 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, WaitingToSavePassword) {
|
| + EXPECT_FALSE(model_->WaitingToSavePassword());
|
| +
|
| + model_->set_manage_passwords_bubble_state(
|
| + ManagePasswordsBubbleModel::PASSWORD_TO_BE_SAVED);
|
| + EXPECT_TRUE(model_->WaitingToSavePassword());
|
| +}
|
|
|