68 lines
2.2 KiB
Plaintext
68 lines
2.2 KiB
Plaintext
// Copyright 2021 The Chromium Authors
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#include "components/metrics/clean_exit_beacon.h"
|
|
|
|
#include <Foundation/Foundation.h>
|
|
|
|
#include "base/feature_list.h"
|
|
|
|
namespace metrics {
|
|
namespace {
|
|
|
|
// Used to enable the workaround for a local state not persisting sometimes.
|
|
NSString* const kLastSessionExitedCleanly = @"LastSessionExitedCleanly";
|
|
// Because variations are not initialized this early in startup, pair a user
|
|
// defaults value with the variations config.
|
|
BASE_FEATURE(kUseUserDefaultsForExitedCleanlyBeacon,
|
|
"UseUserDefaultsForExitedCleanlyBeaconEnabler",
|
|
base::FEATURE_DISABLED_BY_DEFAULT);
|
|
NSString* const kUserDefaultsFeatureFlagForExitedCleanlyBeacon =
|
|
@"UserDefaultsFeatureFlagForExitedCleanlyBeacon";
|
|
|
|
}
|
|
|
|
// static
|
|
void CleanExitBeacon::SetUserDefaultsBeacon(bool exited_cleanly) {
|
|
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
|
|
[defaults setBool:exited_cleanly forKey:kLastSessionExitedCleanly];
|
|
[defaults synchronize];
|
|
}
|
|
|
|
// static
|
|
bool CleanExitBeacon::ShouldUseUserDefaultsBeacon() {
|
|
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
|
|
return [defaults boolForKey:kUserDefaultsFeatureFlagForExitedCleanlyBeacon];
|
|
}
|
|
|
|
// static
|
|
void CleanExitBeacon::SyncUseUserDefaultsBeacon() {
|
|
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
|
|
[defaults setBool:base::FeatureList::IsEnabled(
|
|
kUseUserDefaultsForExitedCleanlyBeacon)
|
|
forKey:kUserDefaultsFeatureFlagForExitedCleanlyBeacon];
|
|
[defaults synchronize];
|
|
}
|
|
|
|
// static
|
|
bool CleanExitBeacon::HasUserDefaultsBeacon() {
|
|
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
|
|
return [defaults objectForKey:kLastSessionExitedCleanly] != nil;
|
|
}
|
|
|
|
// static
|
|
bool CleanExitBeacon::GetUserDefaultsBeacon() {
|
|
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
|
|
return [defaults boolForKey:kLastSessionExitedCleanly];
|
|
}
|
|
|
|
// static
|
|
void CleanExitBeacon::ResetUserDefaultsBeacon() {
|
|
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
|
|
[defaults removeObjectForKey:kLastSessionExitedCleanly];
|
|
[defaults synchronize];
|
|
}
|
|
|
|
} // namespace metrics
|