manage_passwords_bubble_view_browsertest.cc revision 010d83a9304c5a91596085d917d248abff47903a
18d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt// Copyright 2014 The Chromium Authors. All rights reserved. 28d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt// Use of this source code is governed by a BSD-style license that can be 3c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt// found in the LICENSE file. 48d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt#include "chrome/browser/ui/views/passwords/manage_passwords_bubble_view.h" 6c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt 78d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "base/metrics/histogram_samples.h" 88d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "chrome/browser/ui/browser.h" 98d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "chrome/browser/ui/tabs/tab_strip_model.h" 108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "chrome/browser/ui/views/passwords/manage_passwords_view_test.h" 118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "components/password_manager/core/browser/password_manager_metrics_util.h" 128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "components/password_manager/core/browser/stub_password_manager_client.h" 138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "testing/gtest/include/gtest/gtest.h" 148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtnamespace { 168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtconst char kDisplayDispositionMetric[] = "PasswordBubble.DisplayDisposition"; 188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} // namespace 208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidttypedef ManagePasswordsViewTest ManagePasswordsBubbleViewTest; 228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 23b7b4d0ec07161a6d76c40ba7ef1306e82fbb7e15Dmitry ShmidtIN_PROC_BROWSER_TEST_F(ManagePasswordsBubbleViewTest, BasicOpenAndClose) { 248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt EXPECT_FALSE(ManagePasswordsBubbleView::IsShowing()); 258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt ManagePasswordsBubbleView::ShowBubble( 268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt browser()->tab_strip_model()->GetActiveWebContents(), 278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt ManagePasswordsBubble::USER_ACTION); 288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt EXPECT_TRUE(ManagePasswordsBubbleView::IsShowing()); 298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt ManagePasswordsBubbleView::CloseBubble(); 308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt EXPECT_FALSE(ManagePasswordsBubbleView::IsShowing()); 318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 32391c59f0632df8db1c325da1d31d479b2eedce45Dmitry Shmidt // And, just for grins, ensure that we can re-open the bubble. 338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt ManagePasswordsBubbleView::ShowBubble( 34ea69e84a6f4455c59348485895d3d5e3af77a65bDmitry Shmidt browser()->tab_strip_model()->GetActiveWebContents(), 35ea69e84a6f4455c59348485895d3d5e3af77a65bDmitry Shmidt ManagePasswordsBubble::USER_ACTION); 36ea69e84a6f4455c59348485895d3d5e3af77a65bDmitry Shmidt EXPECT_TRUE(ManagePasswordsBubbleView::IsShowing()); 37ea69e84a6f4455c59348485895d3d5e3af77a65bDmitry Shmidt ManagePasswordsBubbleView::CloseBubble(); 38ea69e84a6f4455c59348485895d3d5e3af77a65bDmitry Shmidt EXPECT_FALSE(ManagePasswordsBubbleView::IsShowing()); 39ea69e84a6f4455c59348485895d3d5e3af77a65bDmitry Shmidt} 4068d0e3ed07847339aedfac8e02f50db68c702e52Dmitry Shmidt 4168d0e3ed07847339aedfac8e02f50db68c702e52Dmitry Shmidt// Same as 'BasicOpenAndClose', but use the command rather than the static 4268d0e3ed07847339aedfac8e02f50db68c702e52Dmitry Shmidt// method directly. 4368d0e3ed07847339aedfac8e02f50db68c702e52Dmitry ShmidtIN_PROC_BROWSER_TEST_F(ManagePasswordsBubbleViewTest, CommandControlsBubble) { 4468d0e3ed07847339aedfac8e02f50db68c702e52Dmitry Shmidt // The command only works if the icon is visible, so get into management mode. 458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt SetupManagingPasswords(); 468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt EXPECT_FALSE(ManagePasswordsBubbleView::IsShowing()); 478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt ExecuteManagePasswordsCommand(); 488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt EXPECT_TRUE(ManagePasswordsBubbleView::IsShowing()); 498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt ManagePasswordsBubbleView::CloseBubble(); 508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt EXPECT_FALSE(ManagePasswordsBubbleView::IsShowing()); 518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt // And, just for grins, ensure that we can re-open the bubble. 538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt ExecuteManagePasswordsCommand(); 548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt EXPECT_TRUE(ManagePasswordsBubbleView::IsShowing()); 558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt ManagePasswordsBubbleView::CloseBubble(); 568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt EXPECT_FALSE(ManagePasswordsBubbleView::IsShowing()); 57d5e4923d04122f81300fa68fb07d64ede28fd44dDmitry Shmidt} 588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 598d520ff1dc2da35cdca849e982051b86468016d8Dmitry ShmidtIN_PROC_BROWSER_TEST_F(ManagePasswordsBubbleViewTest, 608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt CommandExecutionInManagingState) { 618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt SetupManagingPasswords(); 628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt ExecuteManagePasswordsCommand(); 638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt scoped_ptr<base::HistogramSamples> samples( 6568d0e3ed07847339aedfac8e02f50db68c702e52Dmitry Shmidt GetSamples(kDisplayDispositionMetric)); 668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt EXPECT_EQ( 678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 0, 68b7b4d0ec07161a6d76c40ba7ef1306e82fbb7e15Dmitry Shmidt samples->GetCount( 69b7b4d0ec07161a6d76c40ba7ef1306e82fbb7e15Dmitry Shmidt password_manager::metrics_util::AUTOMATIC_WITH_PASSWORD_PENDING)); 70b7b4d0ec07161a6d76c40ba7ef1306e82fbb7e15Dmitry Shmidt EXPECT_EQ(0, 71b7b4d0ec07161a6d76c40ba7ef1306e82fbb7e15Dmitry Shmidt samples->GetCount( 72b7b4d0ec07161a6d76c40ba7ef1306e82fbb7e15Dmitry Shmidt password_manager::metrics_util::MANUAL_WITH_PASSWORD_PENDING)); 73b7b4d0ec07161a6d76c40ba7ef1306e82fbb7e15Dmitry Shmidt EXPECT_EQ(1, 74b7b4d0ec07161a6d76c40ba7ef1306e82fbb7e15Dmitry Shmidt samples->GetCount( 75b7b4d0ec07161a6d76c40ba7ef1306e82fbb7e15Dmitry Shmidt password_manager::metrics_util::MANUAL_MANAGE_PASSWORDS)); 76b7b4d0ec07161a6d76c40ba7ef1306e82fbb7e15Dmitry Shmidt} 77b7b4d0ec07161a6d76c40ba7ef1306e82fbb7e15Dmitry Shmidt 78b7b4d0ec07161a6d76c40ba7ef1306e82fbb7e15Dmitry ShmidtIN_PROC_BROWSER_TEST_F(ManagePasswordsBubbleViewTest, 79391c59f0632df8db1c325da1d31d479b2eedce45Dmitry Shmidt CommandExecutionInAutomaticState) { 80391c59f0632df8db1c325da1d31d479b2eedce45Dmitry Shmidt // Open with pending password: automagical! 81391c59f0632df8db1c325da1d31d479b2eedce45Dmitry Shmidt SetupPendingPassword(); 82391c59f0632df8db1c325da1d31d479b2eedce45Dmitry Shmidt 83391c59f0632df8db1c325da1d31d479b2eedce45Dmitry Shmidt scoped_ptr<base::HistogramSamples> samples( 84391c59f0632df8db1c325da1d31d479b2eedce45Dmitry Shmidt GetSamples(kDisplayDispositionMetric)); 85391c59f0632df8db1c325da1d31d479b2eedce45Dmitry Shmidt EXPECT_EQ( 86391c59f0632df8db1c325da1d31d479b2eedce45Dmitry Shmidt 1, 87391c59f0632df8db1c325da1d31d479b2eedce45Dmitry Shmidt samples->GetCount( 888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt password_manager::metrics_util::AUTOMATIC_WITH_PASSWORD_PENDING)); 898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt EXPECT_EQ(0, 901f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt samples->GetCount( 91c2ebb4b85d69b65f552fee71ac68f44e8d87b39eDmitry Shmidt password_manager::metrics_util::MANUAL_WITH_PASSWORD_PENDING)); 921f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt EXPECT_EQ(0, 938d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt samples->GetCount( 948d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt password_manager::metrics_util::MANUAL_MANAGE_PASSWORDS)); 958d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 968d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 978d520ff1dc2da35cdca849e982051b86468016d8Dmitry ShmidtIN_PROC_BROWSER_TEST_F(ManagePasswordsBubbleViewTest, 988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt CommandExecutionInPendingState) { 998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt // Open once with pending password: automagical! 1008d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt SetupPendingPassword(); 1018d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt ManagePasswordsBubbleView::CloseBubble(); 1028d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt // This opening should be measured as manual. 1038d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt ExecuteManagePasswordsCommand(); 1048d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1058d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt scoped_ptr<base::HistogramSamples> samples( 1068d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt GetSamples(kDisplayDispositionMetric)); 1078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt EXPECT_EQ( 1088d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1, 1098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt samples->GetCount( 1108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt password_manager::metrics_util::AUTOMATIC_WITH_PASSWORD_PENDING)); 1118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt EXPECT_EQ(1, 1128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt samples->GetCount( 1138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt password_manager::metrics_util::MANUAL_WITH_PASSWORD_PENDING)); 1148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt EXPECT_EQ(0, 1158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt samples->GetCount( 1168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt password_manager::metrics_util::MANUAL_MANAGE_PASSWORDS)); 1178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 1188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt