| // Copyright 2013 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef IOS_CHROME_BROWSER_CRASH_LOOP_DETECTION_UTIL_H_ |
| #define IOS_CHROME_BROWSER_CRASH_LOOP_DETECTION_UTIL_H_ |
| |
| namespace crash_util { |
| |
| // Returns the number of consecutive failed startups ('instant' crashes) prior |
| // to this one. This method always returns the number of prior failures even |
| // after calls to increment or reset the value. |
| int GetFailedStartupAttemptCount(); |
| |
| // Increases the failed startup count. This should be called immediately after |
| // startup, so that if there is a crash, it is recorded. |
| // If |flush_immediately| is true, the value will be persisted immediately. If |
| // |flush_immediately| is false, this should be followed by a call to |
| // [[NSUserDefaults standardUserDefaults] synchronize]. This is optional to |
| // allow coallescing of the potentially expensive call during startup. |
| void IncrementFailedStartupAttemptCount(bool flush_immediately); |
| |
| // Resets the failed startup count. This should be called once there is some |
| // indication the user isn't in a crash loop (e.g., some amount of time has |
| // elapsed, or some deliberate user action has been taken). |
| void ResetFailedStartupAttemptCount(); |
| |
| // Resets the hidden state of failed startup attempt count for testing. |
| void ResetFailedStartupAttemptCountForTests(); |
| |
| } // namespace crash_util |
| |
| #endif // IOS_CHROME_BROWSER_CRASH_LOOP_DETECTION_UTIL_H_ |