| // 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/settings/ui_bundled/content_settings/web_inspector_state_mediator.h" |
| |
| #import "components/prefs/pref_service.h" |
| #import "ios/chrome/browser/settings/ui_bundled/content_settings/web_inspector_state_consumer.h" |
| #import "ios/chrome/browser/shared/model/prefs/pref_backed_boolean.h" |
| #import "ios/chrome/browser/shared/model/prefs/pref_names.h" |
| #import "ios/chrome/browser/shared/model/utils/observable_boolean.h" |
| |
| @interface WebInspectorStateMediator () <BooleanObserver> |
| |
| // The preference that stores whether Web Inspector is enabled. |
| @property(nonatomic, strong) PrefBackedBoolean* webInspectorPreference; |
| |
| // The pref service used for accessing user preferences. |
| @property(nonatomic, assign, readonly) PrefService* userPrefService; |
| |
| @end |
| |
| @implementation WebInspectorStateMediator |
| |
| - (instancetype)initWithUserPrefService:(PrefService*)userPrefService { |
| self = [super init]; |
| if (self) { |
| _userPrefService = userPrefService; |
| _webInspectorPreference = [[PrefBackedBoolean alloc] |
| initWithPrefService:userPrefService |
| prefName:prefs::kWebInspectorEnabled]; |
| _webInspectorPreference.observer = self; |
| } |
| return self; |
| } |
| |
| - (void)setConsumer:(id<WebInspectorStateConsumer>)consumer { |
| _consumer = consumer; |
| [self updateConsumer]; |
| } |
| |
| - (void)disconnect { |
| [self.webInspectorPreference stop]; |
| } |
| |
| #pragma mark - WebInspectorStateTableViewControllerDelegate |
| |
| - (void)didEnableWebInspector:(BOOL)enabled { |
| self.webInspectorPreference.value = enabled; |
| [self updateConsumer]; |
| } |
| |
| #pragma mark - BooleanObserver |
| |
| - (void)booleanDidChange:(id<ObservableBoolean>)observableBoolean { |
| DCHECK_EQ(observableBoolean, _webInspectorPreference); |
| [self updateConsumer]; |
| } |
| |
| #pragma mark - Private |
| |
| - (void)updateConsumer { |
| [self.consumer setWebInspectorEnabled:_webInspectorPreference.value]; |
| } |
| |
| @end |