[M120 Migration][VD] Enable direct rendering for TVPlus
[platform/framework/web/chromium-efl.git] / components / metrics / clean_exit_beacon_ios.mm
1 // Copyright 2021 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "components/metrics/clean_exit_beacon.h"
6
7 #include <Foundation/Foundation.h>
8
9 #include "base/feature_list.h"
10
11 namespace metrics {
12 namespace {
13
14 // Used to enable the workaround for a local state not persisting sometimes.
15 NSString* const kLastSessionExitedCleanly = @"LastSessionExitedCleanly";
16 // Because variations are not initialized this early in startup, pair a user
17 // defaults value with the variations config.
18 BASE_FEATURE(kUseUserDefaultsForExitedCleanlyBeacon,
19              "UseUserDefaultsForExitedCleanlyBeaconEnabler",
20              base::FEATURE_DISABLED_BY_DEFAULT);
21 NSString* const kUserDefaultsFeatureFlagForExitedCleanlyBeacon =
22     @"UserDefaultsFeatureFlagForExitedCleanlyBeacon";
23
24 }
25
26 // static
27 void CleanExitBeacon::SetUserDefaultsBeacon(bool exited_cleanly) {
28   NSUserDefaults* defaults = NSUserDefaults.standardUserDefaults;
29   [defaults setBool:exited_cleanly forKey:kLastSessionExitedCleanly];
30   [defaults synchronize];
31 }
32
33 // static
34 bool CleanExitBeacon::ShouldUseUserDefaultsBeacon() {
35   NSUserDefaults* defaults = NSUserDefaults.standardUserDefaults;
36   return [defaults boolForKey:kUserDefaultsFeatureFlagForExitedCleanlyBeacon];
37 }
38
39 // static
40 void CleanExitBeacon::SyncUseUserDefaultsBeacon() {
41   NSUserDefaults* defaults = NSUserDefaults.standardUserDefaults;
42   [defaults setBool:base::FeatureList::IsEnabled(
43                         kUseUserDefaultsForExitedCleanlyBeacon)
44              forKey:kUserDefaultsFeatureFlagForExitedCleanlyBeacon];
45   [defaults synchronize];
46 }
47
48 // static
49 bool CleanExitBeacon::HasUserDefaultsBeacon() {
50   NSUserDefaults* defaults = NSUserDefaults.standardUserDefaults;
51   return [defaults objectForKey:kLastSessionExitedCleanly] != nil;
52 }
53
54 // static
55 bool CleanExitBeacon::GetUserDefaultsBeacon() {
56   NSUserDefaults* defaults = NSUserDefaults.standardUserDefaults;
57   return [defaults boolForKey:kLastSessionExitedCleanly];
58 }
59
60 // static
61 void CleanExitBeacon::ResetUserDefaultsBeacon() {
62   NSUserDefaults* defaults = NSUserDefaults.standardUserDefaults;
63   [defaults removeObjectForKey:kLastSessionExitedCleanly];
64   [defaults synchronize];
65 }
66
67 }  // namespace metrics