| Index: ios/chrome/browser/crash_loop_detection_util.mm
|
| diff --git a/ios/chrome/browser/crash_loop_detection_util.mm b/ios/chrome/browser/crash_loop_detection_util.mm
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..93b9b1c92af67f13a260ebe26f2decee67ed3f2b
|
| --- /dev/null
|
| +++ b/ios/chrome/browser/crash_loop_detection_util.mm
|
| @@ -0,0 +1,41 @@
|
| +// 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.
|
| +
|
| +#include "ios/chrome/browser/crash_loop_detection_util.h"
|
| +
|
| +#import <Foundation/Foundation.h>
|
| +
|
| +namespace {
|
| +NSString* const kAppStartupFailureCountKey = @"AppStartupFailureCount";
|
| +}
|
| +
|
| +namespace crash_util {
|
| +
|
| +int GetFailedStartupAttemptCount() {
|
| + static int startup_attempt_count = -1;
|
| + if (startup_attempt_count == -1) {
|
| + NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
|
| + startup_attempt_count = [defaults integerForKey:kAppStartupFailureCountKey];
|
| + }
|
| + return startup_attempt_count;
|
| +}
|
| +
|
| +void IncrementFailedStartupAttemptCount(bool flush_immediately) {
|
| + int startup_attempt_count = GetFailedStartupAttemptCount();
|
| + NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
|
| + [defaults setInteger:(startup_attempt_count + 1)
|
| + forKey:kAppStartupFailureCountKey];
|
| + if (flush_immediately)
|
| + [defaults synchronize];
|
| +}
|
| +
|
| +void ResetFailedStartupAttemptCount() {
|
| + NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
|
| + if ([defaults integerForKey:kAppStartupFailureCountKey] != 0) {
|
| + [defaults setInteger:0 forKey:kAppStartupFailureCountKey];
|
| + [defaults synchronize];
|
| + }
|
| +}
|
| +
|
| +} // namespace crash_util
|
|
|