Commit eb8843db authored by Olivier Robin's avatar Olivier Robin Committed by Commit Bot

Fix iOSMainThreadFreeze metrics

The reporting of metrics has been broken by
https://chromium-review.googlesource.com/c/chromium/src/+/1405508

The SHUTDOWN_IN_FOREGROUND_WITH_MAIN_THREAD_FROZEN will now be reported
only if there is no normal crash report (main thread freeze report should
only be seen as an explanation of crashes without real report).

Bug: 1052377
Change-Id: I1aa17d5061735732324448128a005cea4f9d9ba6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2060499Reviewed-by: default avatarMike Dougherty <michaeldo@chromium.org>
Reviewed-by: default avatarSylvain Defresne <sdefresne@chromium.org>
Commit-Queue: Olivier Robin <olivierrobin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#742177}
parent 654c270f
...@@ -75,6 +75,7 @@ void LogRecoveryTime(base::TimeDelta time) { ...@@ -75,6 +75,7 @@ void LogRecoveryTime(base::TimeDelta time) {
if (self) { if (self) {
_lastSessionFreezeInfo = [[NSUserDefaults standardUserDefaults] _lastSessionFreezeInfo = [[NSUserDefaults standardUserDefaults]
dictionaryForKey:@(kNsUserDefaultKeyLastSessionInfo)]; dictionaryForKey:@(kNsUserDefaultKeyLastSessionInfo)];
_lastSessionEndedFrozen = _lastSessionFreezeInfo != nil;
[[NSUserDefaults standardUserDefaults] [[NSUserDefaults standardUserDefaults]
removeObjectForKey:@(kNsUserDefaultKeyLastSessionInfo)]; removeObjectForKey:@(kNsUserDefaultKeyLastSessionInfo)];
_delay = kFreezeDetectionDelay; _delay = kFreezeDetectionDelay;
......
...@@ -202,23 +202,23 @@ MobileSessionShutdownMetricsProvider::GetLastShutdownType() { ...@@ -202,23 +202,23 @@ MobileSessionShutdownMetricsProvider::GetLastShutdownType() {
return SHUTDOWN_IN_BACKGROUND; return SHUTDOWN_IN_BACKGROUND;
} }
// If the last app lifetime ended with main thread not responding, log it as
// main thread frozen shutdown.
if (LastSessionEndedFrozen()) {
return SHUTDOWN_IN_FOREGROUND_WITH_MAIN_THREAD_FROZEN;
}
// If the last app lifetime ended in a crash, log the type of crash.
if (ReceivedMemoryWarningBeforeLastShutdown()) {
if (HasCrashLogs()) { if (HasCrashLogs()) {
// The cause of the crash is known.
if (ReceivedMemoryWarningBeforeLastShutdown()) {
return SHUTDOWN_IN_FOREGROUND_WITH_CRASH_LOG_WITH_MEMORY_WARNING; return SHUTDOWN_IN_FOREGROUND_WITH_CRASH_LOG_WITH_MEMORY_WARNING;
} }
return SHUTDOWN_IN_FOREGROUND_NO_CRASH_LOG_WITH_MEMORY_WARNING; return SHUTDOWN_IN_FOREGROUND_WITH_CRASH_LOG_NO_MEMORY_WARNING;
} }
if (HasCrashLogs()) { // The cause of the crash is not known. Check the common causes in order of
return SHUTDOWN_IN_FOREGROUND_WITH_CRASH_LOG_NO_MEMORY_WARNING; // severity and likeliness to have caused the crash.
if (LastSessionEndedFrozen()) {
return SHUTDOWN_IN_FOREGROUND_WITH_MAIN_THREAD_FROZEN;
}
if (ReceivedMemoryWarningBeforeLastShutdown()) {
return SHUTDOWN_IN_FOREGROUND_NO_CRASH_LOG_WITH_MEMORY_WARNING;
} }
// There is no known cause.
return SHUTDOWN_IN_FOREGROUND_NO_CRASH_LOG_NO_MEMORY_WARNING; return SHUTDOWN_IN_FOREGROUND_NO_CRASH_LOG_NO_MEMORY_WARNING;
} }
......
...@@ -115,8 +115,8 @@ TEST_P(MobileSessionShutdownMetricsProviderTest, ProvideStabilityMetrics) { ...@@ -115,8 +115,8 @@ TEST_P(MobileSessionShutdownMetricsProviderTest, ProvideStabilityMetrics) {
SHUTDOWN_IN_FOREGROUND_WITH_CRASH_LOG_WITH_MEMORY_WARNING, SHUTDOWN_IN_FOREGROUND_WITH_CRASH_LOG_WITH_MEMORY_WARNING,
SHUTDOWN_IN_FOREGROUND_WITH_MAIN_THREAD_FROZEN, SHUTDOWN_IN_FOREGROUND_WITH_MAIN_THREAD_FROZEN,
SHUTDOWN_IN_FOREGROUND_WITH_MAIN_THREAD_FROZEN, SHUTDOWN_IN_FOREGROUND_WITH_MAIN_THREAD_FROZEN,
SHUTDOWN_IN_FOREGROUND_WITH_MAIN_THREAD_FROZEN, SHUTDOWN_IN_FOREGROUND_WITH_CRASH_LOG_NO_MEMORY_WARNING,
SHUTDOWN_IN_FOREGROUND_WITH_MAIN_THREAD_FROZEN, SHUTDOWN_IN_FOREGROUND_WITH_CRASH_LOG_WITH_MEMORY_WARNING,
// If wasLastShutdownClean is true, the memory warning and crash log don't // If wasLastShutdownClean is true, the memory warning and crash log don't
// matter. // matter.
SHUTDOWN_IN_BACKGROUND, SHUTDOWN_IN_BACKGROUND,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment