| Index: chrome/browser/ui/views/passwords/manage_passwords_bubble_view_browsertest.cc
|
| diff --git a/chrome/browser/ui/views/passwords/manage_passwords_bubble_view_browsertest.cc b/chrome/browser/ui/views/passwords/manage_passwords_bubble_view_browsertest.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..788752bee74bd33135761b3af5ca6affdaea0a83
|
| --- /dev/null
|
| +++ b/chrome/browser/ui/views/passwords/manage_passwords_bubble_view_browsertest.cc
|
| @@ -0,0 +1,128 @@
|
| +// 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 "chrome/browser/ui/views/passwords/manage_passwords_bubble_view.h"
|
| +
|
| +#include "base/metrics/histogram_samples.h"
|
| +#include "base/test/statistics_delta_reader.h"
|
| +#include "chrome/browser/ui/browser.h"
|
| +#include "chrome/browser/ui/tabs/tab_strip_model.h"
|
| +#include "chrome/browser/ui/views/passwords/manage_passwords_view_test.h"
|
| +#include "components/password_manager/core/browser/password_manager_metrics_util.h"
|
| +#include "components/password_manager/core/browser/stub_password_manager_client.h"
|
| +#include "testing/gtest/include/gtest/gtest.h"
|
| +
|
| +namespace {
|
| +
|
| +const char kDisplayDispositionMetric[] = "PasswordBubble.DisplayDisposition";
|
| +
|
| +} // namespace
|
| +
|
| +typedef ManagePasswordsViewTest ManagePasswordsBubbleViewTest;
|
| +
|
| +IN_PROC_BROWSER_TEST_F(ManagePasswordsBubbleViewTest, BasicOpenAndClose) {
|
| + EXPECT_FALSE(ManagePasswordsBubbleView::IsShowing());
|
| + ManagePasswordsBubbleView::ShowBubble(
|
| + browser()->tab_strip_model()->GetActiveWebContents(),
|
| + ManagePasswordsBubble::USER_ACTION);
|
| + EXPECT_TRUE(ManagePasswordsBubbleView::IsShowing());
|
| + ManagePasswordsBubbleView::CloseBubble();
|
| + EXPECT_FALSE(ManagePasswordsBubbleView::IsShowing());
|
| +
|
| + // And, just for grins, ensure that we can re-open the bubble.
|
| + ManagePasswordsBubbleView::ShowBubble(
|
| + browser()->tab_strip_model()->GetActiveWebContents(),
|
| + ManagePasswordsBubble::USER_ACTION);
|
| + EXPECT_TRUE(ManagePasswordsBubbleView::IsShowing());
|
| + ManagePasswordsBubbleView::CloseBubble();
|
| + EXPECT_FALSE(ManagePasswordsBubbleView::IsShowing());
|
| +}
|
| +
|
| +// Same as 'BasicOpenAndClose', but use the command rather than the static
|
| +// method directly.
|
| +IN_PROC_BROWSER_TEST_F(ManagePasswordsBubbleViewTest, CommandControlsBubble) {
|
| + // The command only works if the icon is visible, so get into management mode.
|
| + SetupManagingPasswords();
|
| + EXPECT_FALSE(ManagePasswordsBubbleView::IsShowing());
|
| + ExecuteManagePasswordsCommand();
|
| + EXPECT_TRUE(ManagePasswordsBubbleView::IsShowing());
|
| + ManagePasswordsBubbleView::CloseBubble();
|
| + EXPECT_FALSE(ManagePasswordsBubbleView::IsShowing());
|
| +
|
| + // And, just for grins, ensure that we can re-open the bubble.
|
| + ExecuteManagePasswordsCommand();
|
| + EXPECT_TRUE(ManagePasswordsBubbleView::IsShowing());
|
| + ManagePasswordsBubbleView::CloseBubble();
|
| + EXPECT_FALSE(ManagePasswordsBubbleView::IsShowing());
|
| +}
|
| +
|
| +IN_PROC_BROWSER_TEST_F(ManagePasswordsBubbleViewTest,
|
| + CommandExecutionInManagingState) {
|
| + base::StatisticsDeltaReader statistics_delta_reader;
|
| +
|
| + SetupManagingPasswords();
|
| + ExecuteManagePasswordsCommand();
|
| +
|
| + scoped_ptr<base::HistogramSamples> samples(
|
| + statistics_delta_reader.GetHistogramSamplesSinceCreation(
|
| + kDisplayDispositionMetric));
|
| + EXPECT_EQ(
|
| + 0,
|
| + samples->GetCount(
|
| + password_manager::metrics_util::AUTOMATIC_WITH_PASSWORD_PENDING));
|
| + EXPECT_EQ(0,
|
| + samples->GetCount(
|
| + password_manager::metrics_util::MANUAL_WITH_PASSWORD_PENDING));
|
| + EXPECT_EQ(1,
|
| + samples->GetCount(
|
| + password_manager::metrics_util::MANUAL_MANAGE_PASSWORDS));
|
| +}
|
| +
|
| +IN_PROC_BROWSER_TEST_F(ManagePasswordsBubbleViewTest,
|
| + CommandExecutionInAutomaticState) {
|
| + base::StatisticsDeltaReader statistics_delta_reader;
|
| +
|
| + SetupPendingPassword();
|
| + ExecuteManagePasswordsCommand();
|
| +
|
| + scoped_ptr<base::HistogramSamples> samples(
|
| + statistics_delta_reader.GetHistogramSamplesSinceCreation(
|
| + kDisplayDispositionMetric));
|
| + EXPECT_EQ(
|
| + 1,
|
| + samples->GetCount(
|
| + password_manager::metrics_util::AUTOMATIC_WITH_PASSWORD_PENDING));
|
| + EXPECT_EQ(0,
|
| + samples->GetCount(
|
| + password_manager::metrics_util::MANUAL_WITH_PASSWORD_PENDING));
|
| + EXPECT_EQ(0,
|
| + samples->GetCount(
|
| + password_manager::metrics_util::MANUAL_MANAGE_PASSWORDS));
|
| +}
|
| +
|
| +IN_PROC_BROWSER_TEST_F(ManagePasswordsBubbleViewTest,
|
| + CommandExecutionInPendingState) {
|
| + base::StatisticsDeltaReader statistics_delta_reader;
|
| +
|
| + SetupPendingPassword();
|
| + // Open once with pending password: automagical!
|
| + ExecuteManagePasswordsCommand();
|
| + ManagePasswordsBubbleView::CloseBubble();
|
| + // This opening should be measured as manual.
|
| + ExecuteManagePasswordsCommand();
|
| +
|
| + scoped_ptr<base::HistogramSamples> samples(
|
| + statistics_delta_reader.GetHistogramSamplesSinceCreation(
|
| + kDisplayDispositionMetric));
|
| + EXPECT_EQ(
|
| + 1,
|
| + samples->GetCount(
|
| + password_manager::metrics_util::AUTOMATIC_WITH_PASSWORD_PENDING));
|
| + EXPECT_EQ(1,
|
| + samples->GetCount(
|
| + password_manager::metrics_util::MANUAL_WITH_PASSWORD_PENDING));
|
| + EXPECT_EQ(0,
|
| + samples->GetCount(
|
| + password_manager::metrics_util::MANUAL_MANAGE_PASSWORDS));
|
| +}
|
|
|