Index: chrome/browser/metrics/metrics_log_unittest.cc |
diff --git a/chrome/browser/metrics/metrics_log_unittest.cc b/chrome/browser/metrics/metrics_log_unittest.cc |
index f102a8643ea89484791bf104a291d7af29d8d2a8..d56c427b08a2da5c2ce191060e44b7d97b73ac8e 100644 |
--- a/chrome/browser/metrics/metrics_log_unittest.cc |
+++ b/chrome/browser/metrics/metrics_log_unittest.cc |
@@ -5,7 +5,9 @@ |
#include <string> |
#include "base/basictypes.h" |
+#include "base/command_line.h" |
#include "base/message_loop/message_loop.h" |
+#include "base/metrics/field_trial.h" |
#include "base/port.h" |
#include "base/prefs/pref_service.h" |
#include "base/prefs/testing_pref_service.h" |
@@ -18,11 +20,13 @@ |
#include "chrome/browser/google/google_util.h" |
#include "chrome/browser/metrics/metrics_log.h" |
#include "chrome/browser/prefs/browser_prefs.h" |
+#include "chrome/common/chrome_switches.h" |
#include "chrome/common/metrics/proto/profiler_event.pb.h" |
#include "chrome/common/metrics/proto/system_profile.pb.h" |
#include "chrome/common/metrics/variations/variations_util.h" |
#include "chrome/common/pref_names.h" |
#include "chrome/installer/util/google_update_settings.h" |
+#include "components/variations/entropy_provider.h" |
#include "content/public/browser/browser_thread.h" |
#include "content/public/common/process_type.h" |
#include "content/public/common/webplugininfo.h" |
@@ -32,6 +36,8 @@ |
#include "url/gurl.h" |
#if defined(OS_CHROMEOS) |
+#include "chrome/browser/chromeos/login/fake_user_manager.h" |
+#include "chrome/browser/chromeos/login/user_manager.h" |
#include "chromeos/dbus/mock_dbus_thread_manager_without_gmock.h" |
#endif // OS_CHROMEOS |
@@ -174,6 +180,14 @@ class MetricsLogTest : public testing::Test { |
new chromeos::MockDBusThreadManagerWithoutGMock(); |
chromeos::DBusThreadManager::InitializeForTesting( |
mock_dbus_thread_manager_); |
+ |
+ // Enable multi-profiles. |
+ CommandLine::ForCurrentProcess()->AppendSwitch(switches::kMultiProfiles); |
+ field_trial_list_.reset(new base::FieldTrialList( |
+ new metrics::SHA1EntropyProvider("42"))); |
+ base::FieldTrialList::CreateTrialsFromString( |
+ "ChromeOSUseMultiProfiles/Enable/", |
+ base::FieldTrialList::ACTIVATE_TRIALS); |
#endif // OS_CHROMEOS |
} |
@@ -195,6 +209,7 @@ class MetricsLogTest : public testing::Test { |
#if defined(OS_CHROMEOS) |
chromeos::MockDBusThreadManagerWithoutGMock* mock_dbus_thread_manager_; |
+ scoped_ptr<base::FieldTrialList> field_trial_list_; |
#endif // OS_CHROMEOS |
}; |
@@ -335,3 +350,50 @@ TEST_F(MetricsLogTest, RecordProfilerData) { |
tracked_object->process_type()); |
} |
} |
+ |
+#if defined(OS_CHROMEOS) |
+TEST_F(MetricsLogTest, MultiProfileUserCount) { |
+ std::string user1("user1@example.com"); |
+ std::string user2("user2@example.com"); |
+ std::string user3("user3@example.com"); |
+ |
+ // |scoped_enabler| takes over the lifetime of |user_manager|. |
+ chromeos::FakeUserManager* user_manager = new chromeos::FakeUserManager(); |
+ chromeos::ScopedUserManagerEnabler scoped_enabler(user_manager); |
+ user_manager->AddKioskAppUser(user1); |
+ user_manager->AddKioskAppUser(user2); |
+ user_manager->AddKioskAppUser(user3); |
+ |
+ user_manager->LoginUser(user1); |
+ user_manager->LoginUser(user3); |
+ |
+ TestMetricsLog log(kClientId, kSessionId); |
+ std::vector<content::WebPluginInfo> plugins; |
+ GoogleUpdateMetrics google_update_metrics; |
+ log.RecordEnvironmentProto(plugins, google_update_metrics); |
+ EXPECT_EQ(2u, log.system_profile().multi_profile_user_count()); |
+} |
+ |
+TEST_F(MetricsLogTest, MultiProfileCountInvalidated) { |
+ std::string user1("user1@example.com"); |
+ std::string user2("user2@example.com"); |
+ std::string user3("user3@example.com"); |
+ |
+ // |scoped_enabler| takes over the lifetime of |user_manager|. |
+ chromeos::FakeUserManager* user_manager = new chromeos::FakeUserManager(); |
+ chromeos::ScopedUserManagerEnabler scoped_enabler(user_manager); |
+ user_manager->AddKioskAppUser(user1); |
+ user_manager->AddKioskAppUser(user2); |
+ user_manager->AddKioskAppUser(user3); |
+ |
+ user_manager->LoginUser(user1); |
+ |
+ TestMetricsLog log(kClientId, kSessionId); |
+ EXPECT_EQ(1u, log.system_profile().multi_profile_user_count()); |
+ |
+ user_manager->LoginUser(user2); |
+ log.RecordEnvironmentProto(std::vector<content::WebPluginInfo>(), |
+ GoogleUpdateMetrics()); |
+ EXPECT_EQ(0u, log.system_profile().multi_profile_user_count()); |
+} |
+#endif // OS_CHROMEOS |