chromium/ios/chrome/browser/shared/model/utils/observable_boolean.h

// Copyright 2016 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef IOS_CHROME_BROWSER_SHARED_MODEL_UTILS_OBSERVABLE_BOOLEAN_H_
#define IOS_CHROME_BROWSER_SHARED_MODEL_UTILS_OBSERVABLE_BOOLEAN_H_

#import <Foundation/Foundation.h>

@protocol BooleanObserver;

// Describes the trait an observable boolean has.
@protocol ObservableBoolean <NSObject>

// The value of this observable boolean.
@property(nonatomic, assign) BOOL value;

// The observer subscribing to this observable boolean's changes notifications.
@property(nonatomic, weak) id<BooleanObserver> observer;

@end

// Observer protocol for boolean changes.
@protocol BooleanObserver

// Called when the boolean changes. Note that all classes conforming to this
// protocol might send this callback even when the value is reset to the same
// value. This is the case for ContentSettingBackedBoolean for example.
- (void)booleanDidChange:(id<ObservableBoolean>)observableBoolean;

@end

#endif  // IOS_CHROME_BROWSER_SHARED_MODEL_UTILS_OBSERVABLE_BOOLEAN_H_