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

Unified Diff: chrome/browser/component_updater/sw_reporter_installer_win.cc

Issue 823113005: Report whether a reboot happened since the SRT asked for one. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed XP issue Created 5 years, 11 months 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/component_updater/sw_reporter_installer_win.cc
diff --git a/chrome/browser/component_updater/sw_reporter_installer_win.cc b/chrome/browser/component_updater/sw_reporter_installer_win.cc
index 4129c6062d9e84418d51f0fef5ed605166025a7a..ec1a40a42b31c390058064b3ecdcf8e0eb2f51dd 100644
--- a/chrome/browser/component_updater/sw_reporter_installer_win.cc
+++ b/chrome/browser/component_updater/sw_reporter_installer_win.cc
@@ -94,7 +94,9 @@ const char kSRTPromptOnGroup[] = "On";
// Exit codes that identify that a cleanup is needed.
const int kCleanupNeeded = 0;
+const int kNothingFound = 2;
const int kPostRebootCleanupNeeded = 4;
+const int kDelayedPostRebootCleanupNeeded = 15;
void ReportUmaStep(SwReporterUmaValue value) {
UMA_HISTOGRAM_ENUMERATION("SoftwareReporter.Step", value, SW_REPORTER_MAX);
@@ -114,14 +116,14 @@ void ReportVersionWithUma(const base::Version& version) {
// The major version for X.Y.Z is X*256^3+Y*256+Z. If there are additional
// components, only the first three count, and if there are less than 3, the
// missing values are just replaced by zero. So 1 is equivalent 1.0.0.
- DCHECK(version.components()[0] < 0x100);
+ DCHECK_LT(version.components()[0], 0x100);
uint32_t major_version = 0x1000000 * version.components()[0];
if (version.components().size() >= 2) {
- DCHECK(version.components()[1] < 0x10000);
+ DCHECK_LT(version.components()[1], 0x10000);
major_version += 0x100 * version.components()[1];
}
if (version.components().size() >= 3) {
- DCHECK(version.components()[2] < 0x100);
+ DCHECK_LT(version.components()[2], 0x100);
major_version += version.components()[2];
}
UMA_HISTOGRAM_SPARSE_SLOWLY("SoftwareReporter.MajorVersion", major_version);
@@ -352,12 +354,13 @@ void RegisterSwReporterComponent(ComponentUpdateService* cus,
cleaner_key.DeleteValue(kVersionRegistryValueName);
}
// Get start & end time. If we don't have an end time, we can assume the
- // cleaner has crashed.
+ // cleaner has not completed.
+ int64 start_time_value;
+ cleaner_key.ReadInt64(kStartTimeRegistryValueName, &start_time_value);
+
bool completed = cleaner_key.HasValue(kEndTimeRegistryValueName);
UMA_HISTOGRAM_BOOLEAN("SoftwareReporter.Cleaner.HasCompleted", completed);
if (completed) {
- int64 start_time_value;
- cleaner_key.ReadInt64(kStartTimeRegistryValueName, &start_time_value);
int64 end_time_value;
cleaner_key.ReadInt64(kEndTimeRegistryValueName, &end_time_value);
cleaner_key.DeleteValue(kEndTimeRegistryValueName);
@@ -366,15 +369,26 @@ void RegisterSwReporterComponent(ComponentUpdateService* cus,
UMA_HISTOGRAM_LONG_TIMES("SoftwareReporter.Cleaner.RunningTime",
run_time);
}
- // Get exit code.
+ // Get exit code. Assume nothing was found if we can't read the exit code.
+ DWORD exit_code = kNothingFound;
if (cleaner_key.HasValue(kExitCodeRegistryValueName)) {
- DWORD exit_code;
cleaner_key.ReadValueDW(kExitCodeRegistryValueName, &exit_code);
UMA_HISTOGRAM_SPARSE_SLOWLY("SoftwareReporter.Cleaner.ExitCode",
exit_code);
cleaner_key.DeleteValue(kExitCodeRegistryValueName);
}
cleaner_key.DeleteValue(kStartTimeRegistryValueName);
+
+ if (exit_code == kPostRebootCleanupNeeded ||
+ exit_code == kDelayedPostRebootCleanupNeeded) {
+ // Check if we are running after the user has rebooted.
+ base::TimeDelta elapsed(base::Time::Now() -
+ base::Time::FromInternalValue(start_time_value));
+ DCHECK_GT(elapsed.InMilliseconds(), 0);
+ UMA_HISTOGRAM_BOOLEAN(
+ "SoftwareReporter.Cleaner.HasRebooted",
+ static_cast<uint64>(elapsed.InMilliseconds()) > ::GetTickCount());
+ }
}
// Install the component.
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698