Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(190)

Unified Diff: chrome/installer/setup/setup_main.cc

Issue 1475643004: Add crash keys for the installer covering simple InstallerState fields. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add previous version, plus some comments Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/installer/setup/setup_main.cc
diff --git a/chrome/installer/setup/setup_main.cc b/chrome/installer/setup/setup_main.cc
index c3c575a8a7b87c8b30a1d06cda15428b5cca8b3c..0c7af260ca3dcfdd8fc88cbc0ef1d581a75ccfc9 100644
--- a/chrome/installer/setup/setup_main.cc
+++ b/chrome/installer/setup/setup_main.cc
@@ -1334,6 +1334,92 @@ void ConfigureCrashReporting(const InstallerState& installer_state) {
// setting it here for Chrome to use.
}
+void SetStartingCrashKeys(const InstallerState& installer_state,
grt (UTC plus 2) 2015/11/25 16:44:09 wdyt of moving this and the impl of InstallerCrash
Joe Mason 2015/11/25 17:16:34 Good idea. It will help with the more invasive key
+ const InstallationState& original_state)
+{
+ scoped_ptr<base::Version> current_version(
grt (UTC plus 2) 2015/11/25 16:44:09 CheckPreInstallConditions mutates |installer_state
Joe Mason 2015/11/25 20:12:52 installer_state is also mutated by HandleNonInstal
grt (UTC plus 2) 2015/11/25 20:34:30 I think it would be fine to set this crash key wit
+ installer_state.GetCurrentVersion(original_state));
+ if (current_version) {
+ base::debug::SetCrashKeyValue(installer::crash_keys::kCurrentVersion,
+ current_version->GetString());
+ }
+
+ switch (installer_state.state_type()) {
grt (UTC plus 2) 2015/11/25 16:44:09 i think this is cleaner like so: const char* Dist
Joe Mason 2015/11/25 17:16:34 What do you think of making this a BrowserDistribu
grt (UTC plus 2) 2015/11/25 17:44:01 I think of this mapping being specific to the cras
+ case BrowserDistribution::CHROME_BROWSER:
+ base::debug::SetCrashKeyValue(installer::crash_keys::kDistributionType,
+ "browser");
+ break;
+ case BrowserDistribution::CHROME_FRAME:
+ base::debug::SetCrashKeyValue(installer::crash_keys::kDistributionType,
+ "frame");
+ break;
+ case BrowserDistribution::CHROME_BINARIES:
+ base::debug::SetCrashKeyValue(installer::crash_keys::kDistributionType,
+ "binaries");
+ break;
+ case BrowserDistribution::NUM_TYPES:
+ // Not a real enum value.
+ assert(false);
grt (UTC plus 2) 2015/11/25 16:44:09 use NOTREACHED() (to crash debug builds) or CHECK(
+ break;
+ }
+
+ switch (installer_state.operation()) {
+ case InstallerState::SINGLE_INSTALL_OR_UPDATE:
+ base::debug::SetCrashKeyValue(installer::crash_keys::kOperation,
+ "single-install-or-update");
+ break;
+ case InstallerState::MULTI_INSTALL:
+ base::debug::SetCrashKeyValue(installer::crash_keys::kOperation,
+ "multi-install");
+ break;
+ case InstallerState::MULTI_UPDATE:
+ base::debug::SetCrashKeyValue(installer::crash_keys::kOperation,
+ "multi-update");
+ break;
+ case InstallerState::UNINSTALL:
+ base::debug::SetCrashKeyValue(installer::crash_keys::kOperation,
+ "uninstall");
+ break;
+ case InstallerState::UNINITIALIZED:
+ // Do nothing.
+ break;
+ }
+
+ switch (installer_state.package_type()) {
+ case InstallerState::SINGLE_PACKAGE:
+ base::debug::SetCrashKeyValue(installer::crash_keys::kPackageType,
+ "single");
+ break;
+ case InstallerState::MULTI_PACKAGE:
+ base::debug::SetCrashKeyValue(installer::crash_keys::kPackageType,
+ "multi");
+ break;
+ case InstallerState::UNKNOWN_PACKAGE_TYPE:
+ // Do nothing.
+ break;
+ }
+
+ switch (installer_state.level()) {
+ case InstallerState::USER_LEVEL:
+ base::debug::SetCrashKeyValue(installer::crash_keys::kPrivilegeLevel,
+ "user");
+ break;
+ case InstallerState::SYSTEM_LEVEL:
+ base::debug::SetCrashKeyValue(installer::crash_keys::kPrivilegeLevel,
+ "system");
+ break;
+ case InstallerState::UNKNOWN_LEVEL:
+ // Do nothing.
+ break;
+ }
+
+ const std::wstring state_key = installer_state.state_key();
+ if (!state_key.empty()) {
+ base::debug::SetCrashKeyValue(installer::crash_keys::kStateKey,
+ base::UTF16ToUTF8(state_key));
+ }
+}
+
// Uninstalls multi-install Chrome Frame if the current operation is a
// multi-install install or update. The operation is performed directly rather
// than delegated to the existing install since there is no facility in older
@@ -1705,6 +1791,7 @@ int WINAPI wWinMain(HINSTANCE instance, HINSTANCE prev_instance,
installer_state.Initialize(cmd_line, prefs, original_state);
ConfigureCrashReporting(installer_state);
+ SetStartingCrashKeys(installer_state, original_state);
// Make sure the process exits cleanly on unexpected errors.
base::EnableTerminationOnHeapCorruption();
« chrome/installer/setup/setup_constants.cc ('K') | « chrome/installer/setup/setup_constants.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698