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