[go: nahoru, domu]

blob: 0051e6b6ad36951e478f36e862533a6f10f074d1 [file] [log] [blame]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#import "ios/chrome/browser/ui/settings/privacy/lockdown_mode/lockdown_mode_mediator.h"
#import "base/apple/foundation_util.h"
#import "base/notreached.h"
#import "components/prefs/pref_service.h"
#import "ios/chrome/browser/shared/model/prefs/pref_names.h"
#import "ios/chrome/browser/shared/ui/list_model/list_model.h"
#import "ios/chrome/browser/ui/settings/cells/sync_switch_item.h"
#import "ios/chrome/browser/ui/settings/utils/observable_boolean.h"
#import "ios/chrome/browser/ui/settings/utils/pref_backed_boolean.h"
#import "ios/chrome/grit/ios_strings.h"
#import "ui/base/l10n/l10n_util.h"
namespace {} // namespace
@interface LockdownModeMediator () <BooleanObserver>
// User pref service.
@property(nonatomic, assign, readonly) PrefService* userPrefService;
// Preference value for the Lockdown Mode feature.
@property(nonatomic, strong, readonly)
PrefBackedBoolean* lockdownModePreference;
@end
@implementation LockdownModeMediator
- (instancetype)initWithUserPrefService:(PrefService*)userPrefService {
self = [super init];
if (self) {
DCHECK(userPrefService);
_userPrefService = userPrefService;
_lockdownModePreference = [[PrefBackedBoolean alloc]
initWithPrefService:userPrefService
prefName:prefs::kBrowserLockdownModeEnabled];
_lockdownModePreference.observer = self;
}
return self;
}
- (void)setConsumer:(id<LockdownModeConsumer>)consumer {
_consumer = consumer;
[_consumer setOSLockdownModeEnabled:self.userPrefService->GetBoolean(
prefs::kOSLockdownModeEnabled)];
[_consumer setBrowserLockdownModeEnabled:self.lockdownModePreference.value];
}
- (void)disconnect {
_lockdownModePreference = nil;
}
#pragma mark - LockdownModeViewControllerDelegate
- (void)didEnableBrowserLockdownMode:(BOOL)enabled {
self.lockdownModePreference.value = enabled;
}
#pragma mark - BooleanObserver
- (void)booleanDidChange:(id<ObservableBoolean>)observableBoolean {
[self.consumer
setBrowserLockdownModeEnabled:self.lockdownModePreference.value];
}
@end