blob: 556354b975f4b8f8e45c16d27a24d9a11fdb67aa [file]
// 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/signin/signin_status_metrics_provider_chromeos.h"
#include <string>
#include "base/test/metrics/histogram_tester.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace {
const char kHistogramName[] = "UMA.ProfileSignInStatus";
} // namespace
TEST(SigninStatusMetricsProviderChromeOS, ComputeSigninStatusToUpload) {
SigninStatusMetricsProviderChromeOS metrics_provider;
SigninStatusMetricsProviderBase::SigninStatus status_to_upload =
metrics_provider.ComputeSigninStatusToUpload(
SigninStatusMetricsProviderBase::ALL_PROFILES_SIGNED_IN, true);
EXPECT_EQ(SigninStatusMetricsProviderBase::ALL_PROFILES_SIGNED_IN,
status_to_upload);
status_to_upload = metrics_provider.ComputeSigninStatusToUpload(
SigninStatusMetricsProviderBase::ALL_PROFILES_NOT_SIGNED_IN, false);
EXPECT_EQ(SigninStatusMetricsProviderBase::ALL_PROFILES_NOT_SIGNED_IN,
status_to_upload);
status_to_upload = metrics_provider.ComputeSigninStatusToUpload(
SigninStatusMetricsProviderBase::ALL_PROFILES_NOT_SIGNED_IN, true);
EXPECT_EQ(SigninStatusMetricsProviderBase::MIXED_SIGNIN_STATUS,
status_to_upload);
status_to_upload = metrics_provider.ComputeSigninStatusToUpload(
SigninStatusMetricsProviderBase::ALL_PROFILES_SIGNED_IN, false);
EXPECT_EQ(SigninStatusMetricsProviderBase::ERROR_GETTING_SIGNIN_STATUS,
status_to_upload);
}
TEST(SigninStatusMetricsProviderChromeOS, ProvideCurrentSessionData_Guest) {
SigninStatusMetricsProviderChromeOS::SetGuestForTesting(true);
SigninStatusMetricsProviderChromeOS metrics_provider;
auto check_histogram =
[&metrics_provider](
SigninStatusMetricsProviderBase::SigninStatus expected) {
base::HistogramTester histogram_tester;
metrics_provider.ProvideCurrentSessionData(nullptr);
histogram_tester.ExpectUniqueSample(kHistogramName, expected, 1);
};
check_histogram(SigninStatusMetricsProviderBase::ALL_PROFILES_NOT_SIGNED_IN);
check_histogram(SigninStatusMetricsProviderBase::ALL_PROFILES_NOT_SIGNED_IN);
SigninStatusMetricsProviderChromeOS::SetGuestForTesting(false);
check_histogram(SigninStatusMetricsProviderBase::MIXED_SIGNIN_STATUS);
check_histogram(SigninStatusMetricsProviderBase::ALL_PROFILES_SIGNED_IN);
check_histogram(SigninStatusMetricsProviderBase::ALL_PROFILES_SIGNED_IN);
// We treat non-Guest to Guest transition as an error.
SigninStatusMetricsProviderChromeOS::SetGuestForTesting(true);
check_histogram(SigninStatusMetricsProviderBase::ERROR_GETTING_SIGNIN_STATUS);
}
TEST(SigninStatusMetricsProviderChromeOS, ProvideCurrentSessionData_NonGuest) {
SigninStatusMetricsProviderChromeOS::SetGuestForTesting(false);
SigninStatusMetricsProviderChromeOS metrics_provider;
auto check_histogram =
[&metrics_provider](
SigninStatusMetricsProviderBase::SigninStatus expected) {
base::HistogramTester histogram_tester;
metrics_provider.ProvideCurrentSessionData(nullptr);
histogram_tester.ExpectUniqueSample(kHistogramName, expected, 1);
};
check_histogram(SigninStatusMetricsProviderBase::ALL_PROFILES_SIGNED_IN);
check_histogram(SigninStatusMetricsProviderBase::ALL_PROFILES_SIGNED_IN);
// We treat non-Guest to Guest transition as an error.
SigninStatusMetricsProviderChromeOS::SetGuestForTesting(true);
check_histogram(SigninStatusMetricsProviderBase::ERROR_GETTING_SIGNIN_STATUS);
}