diff --git a/chromeos/lacros/BUILD.gn b/chromeos/lacros/BUILD.gn index cb3e3c0da0e717..0c7688bdb42867 100644 --- a/chromeos/lacros/BUILD.gn +++ b/chromeos/lacros/BUILD.gn @@ -24,6 +24,7 @@ component("lacros") { "//chromeos/crosapi/mojom", "//chromeos/process_proxy", "//chromeos/startup", + "//components/crash/core/common", "//mojo/public/cpp/bindings", "//ui/native_theme", ] diff --git a/chromeos/lacros/DEPS b/chromeos/lacros/DEPS index c18b1107945809..a01f22574fda5d 100644 --- a/chromeos/lacros/DEPS +++ b/chromeos/lacros/DEPS @@ -6,4 +6,5 @@ include_rules = [ "-content", "+ui/native_theme", + "+components/crash/core/common", ] diff --git a/chromeos/lacros/lacros_service.cc b/chromeos/lacros/lacros_service.cc index 62cfd3e1fc680b..25934b472cade5 100644 --- a/chromeos/lacros/lacros_service.cc +++ b/chromeos/lacros/lacros_service.cc @@ -73,6 +73,7 @@ #include "chromeos/lacros/system_idle_cache.h" #include "chromeos/services/machine_learning/public/mojom/machine_learning_service.mojom.h" #include "chromeos/startup/startup.h" +#include "components/crash/core/common/crash_key.h" #include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/platform/platform_channel.h" #include "mojo/public/cpp/system/invitation.h" @@ -112,6 +113,25 @@ crosapi::mojom::BrowserInitParamsPtr ReadStartupBrowserInitParams() { return result; } +std::string SessionTypeToString(crosapi::mojom::SessionType session_type) { + switch (session_type) { + case crosapi::mojom::SessionType::kUnknown: + return "unknown"; + case crosapi::mojom::SessionType::kRegularSession: + return "regular"; + case crosapi::mojom::SessionType::kGuestSession: + return "guest"; + case crosapi::mojom::SessionType::kPublicSession: + return "managed-guest-session"; + case crosapi::mojom::SessionType::kWebKioskSession: + return "web-kiosk"; + case crosapi::mojom::SessionType::kChildSession: + return "child"; + case crosapi::mojom::SessionType::kAppKioskSession: + return "chrome-app-kiosk"; + } +} + } // namespace LacrosService::InterfaceEntryBase::InterfaceEntryBase() = default; @@ -188,6 +208,9 @@ LacrosService::LacrosService() weak_factory_.GetWeakPtr())); } + static crash_reporter::CrashKeyString<32> session_type("session-type"); + session_type.Set(SessionTypeToString(init_params_->session_type)); + // Short term workaround: if --crosapi-mojo-platform-channel-handle is // available, close --mojo-platform-channel-handle, and remove it // from command line. It is for backward compatibility support by diff --git a/components/user_manager/BUILD.gn b/components/user_manager/BUILD.gn index 753deb22bcbf6b..ca29d10473c1aa 100644 --- a/components/user_manager/BUILD.gn +++ b/components/user_manager/BUILD.gn @@ -22,7 +22,10 @@ component("user_manager") { "//ui/gfx", ] - deps = [ "//google_apis" ] + deps = [ + "//components/crash/core/common", + "//google_apis", + ] defines = [ "USER_MANAGER_IMPLEMENTATION" ] diff --git a/components/user_manager/DEPS b/components/user_manager/DEPS index 69439615e65ffb..56878b9d8c9dd6 100644 --- a/components/user_manager/DEPS +++ b/components/user_manager/DEPS @@ -2,6 +2,7 @@ include_rules = [ "+ash/constants", "+components/account_id/account_id.h", "+components/prefs", + "+components/crash/core/common", "+google_apis/gaia/gaia_auth_util.h", "+third_party/skia/include", "+ui/gfx/codec", diff --git a/components/user_manager/user_manager_base.cc b/components/user_manager/user_manager_base.cc index 97cc30e14ce108..1aeed9fb62f7aa 100644 --- a/components/user_manager/user_manager_base.cc +++ b/components/user_manager/user_manager_base.cc @@ -22,6 +22,7 @@ #include "base/strings/utf_string_conversions.h" #include "base/task/single_thread_task_runner.h" #include "base/values.h" +#include "components/crash/core/common/crash_key.h" #include "components/prefs/pref_registry_simple.h" #include "components/prefs/pref_service.h" #include "components/prefs/scoped_user_pref_update.h" @@ -86,6 +87,30 @@ UserType GetStoredUserType(const base::Value* prefs_user_types, return static_cast(int_user_type); } +std::string UserTypeToString(UserType user_type) { + switch (user_type) { + case USER_TYPE_REGULAR: + return "regular"; + case USER_TYPE_CHILD: + return "child"; + case USER_TYPE_GUEST: + return "guest"; + case USER_TYPE_PUBLIC_ACCOUNT: + return "managed-guest-session"; + case USER_TYPE_KIOSK_APP: + return "chrome-app-kiosk"; + case USER_TYPE_ARC_KIOSK_APP: + return "arc-kiosk"; + case USER_TYPE_WEB_KIOSK_APP: + return "web-kiosk"; + case USER_TYPE_ACTIVE_DIRECTORY: + return "active-directory"; + case NUM_USER_TYPES: + NOTREACHED(); + return ""; + } +} + } // namespace // static @@ -235,6 +260,9 @@ void UserManagerBase::UserLoggedIn(const AccountId& account_id, UMA_HISTOGRAM_ENUMERATION( "UserManager.LoginUserType", active_user_->GetType(), NUM_USER_TYPES); + static crash_reporter::CrashKeyString<32> session_type("session-type"); + session_type.Set(UserTypeToString(active_user_->GetType())); + GetLocalState()->SetString( kLastLoggedInGaiaUser, active_user_->HasGaiaAccount() ? account_id.GetUserEmail() : "");