16e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 26e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 36e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// found in the LICENSE file. 46e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 56e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "chrome/browser/metrics/signin_status_metrics_provider.h" 66e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 76e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include <string> 86e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 96e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "base/files/file_path.h" 106e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)TEST(SigninStatusMetricsProvider, UpdateInitialSigninStatus) { 136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) SigninStatusMetricsProvider metrics_provider(true); 146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) metrics_provider.UpdateInitialSigninStatus(2, 2); 156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_EQ(SigninStatusMetricsProvider::ALL_PROFILES_SIGNED_IN, 166e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) metrics_provider.GetSigninStatusForTesting()); 176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) metrics_provider.UpdateInitialSigninStatus(2, 0); 186e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_EQ(SigninStatusMetricsProvider::ALL_PROFILES_NOT_SIGNED_IN, 196e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) metrics_provider.GetSigninStatusForTesting()); 206e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) metrics_provider.UpdateInitialSigninStatus(2, 1); 216e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_EQ(SigninStatusMetricsProvider::MIXED_SIGNIN_STATUS, 226e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) metrics_provider.GetSigninStatusForTesting()); 236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 256e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#if !defined(OS_ANDROID) 266e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)TEST(SigninStatusMetricsProvider, UpdateStatusWhenBrowserAdded) { 276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) SigninStatusMetricsProvider metrics_provider(true); 286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Initial status is all signed in and then a signed-in browser is opened. 306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) metrics_provider.UpdateInitialSigninStatus(2, 2); 316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) metrics_provider.UpdateStatusWhenBrowserAdded(true); 326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_EQ(SigninStatusMetricsProvider::ALL_PROFILES_SIGNED_IN, 336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) metrics_provider.GetSigninStatusForTesting()); 346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Initial status is all signed in and then a signed-out browser is opened. 366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) metrics_provider.UpdateInitialSigninStatus(2, 2); 376e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) metrics_provider.UpdateStatusWhenBrowserAdded(false); 386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_EQ(SigninStatusMetricsProvider::MIXED_SIGNIN_STATUS, 396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) metrics_provider.GetSigninStatusForTesting()); 406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Initial status is all signed out and then a signed-in browser is opened. 426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) metrics_provider.UpdateInitialSigninStatus(2, 0); 436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) metrics_provider.UpdateStatusWhenBrowserAdded(true); 446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_EQ(SigninStatusMetricsProvider::MIXED_SIGNIN_STATUS, 456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) metrics_provider.GetSigninStatusForTesting()); 466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Initial status is all signed out and then a signed-out browser is opened. 486e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) metrics_provider.UpdateInitialSigninStatus(2, 0); 496e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) metrics_provider.UpdateStatusWhenBrowserAdded(false); 506e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_EQ(SigninStatusMetricsProvider::ALL_PROFILES_NOT_SIGNED_IN, 516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) metrics_provider.GetSigninStatusForTesting()); 526e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 536e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Initial status is mixed and then a signed-in browser is opened. 546e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) metrics_provider.UpdateInitialSigninStatus(2, 1); 556e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) metrics_provider.UpdateStatusWhenBrowserAdded(true); 566e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_EQ(SigninStatusMetricsProvider::MIXED_SIGNIN_STATUS, 576e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) metrics_provider.GetSigninStatusForTesting()); 586e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 596e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Initial status is mixed and then a signed-out browser is opened. 606e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) metrics_provider.UpdateInitialSigninStatus(2, 1); 616e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) metrics_provider.UpdateStatusWhenBrowserAdded(false); 626e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_EQ(SigninStatusMetricsProvider::MIXED_SIGNIN_STATUS, 636e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) metrics_provider.GetSigninStatusForTesting()); 646e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 656e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#endif 666e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 676e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)TEST(SigninStatusMetricsProvider, GoogleSigninSucceeded) { 686e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) SigninStatusMetricsProvider metrics_provider(true); 696e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 706e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Initial status is all signed out and then one of the profiles is signed in. 716e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) metrics_provider.UpdateInitialSigninStatus(2, 0); 721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci metrics_provider.GoogleSigninSucceeded(std::string(), std::string(), 731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci std::string()); 746e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_EQ(SigninStatusMetricsProvider::MIXED_SIGNIN_STATUS, 756e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) metrics_provider.GetSigninStatusForTesting()); 766e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 776e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Initial status is mixed and then one of the profiles is signed in. 786e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) metrics_provider.UpdateInitialSigninStatus(2, 1); 791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci metrics_provider.GoogleSigninSucceeded(std::string(), std::string(), 801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci std::string()); 816e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_EQ(SigninStatusMetricsProvider::MIXED_SIGNIN_STATUS, 826e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) metrics_provider.GetSigninStatusForTesting()); 836e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 846e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 856e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)TEST(SigninStatusMetricsProvider, GoogleSignedOut) { 866e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) SigninStatusMetricsProvider metrics_provider(true); 876e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 886e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Initial status is all signed in and then one of the profiles is signed out. 896e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) metrics_provider.UpdateInitialSigninStatus(2, 2); 901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci metrics_provider.GoogleSignedOut(std::string(), std::string()); 916e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_EQ(SigninStatusMetricsProvider::MIXED_SIGNIN_STATUS, 926e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) metrics_provider.GetSigninStatusForTesting()); 936e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 946e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Initial status is mixed and then one of the profiles is signed out. 956e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) metrics_provider.UpdateInitialSigninStatus(2, 1); 961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci metrics_provider.GoogleSignedOut(std::string(), std::string()); 976e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_EQ(SigninStatusMetricsProvider::MIXED_SIGNIN_STATUS, 986e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) metrics_provider.GetSigninStatusForTesting()); 996e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 100