| // Copyright 2017 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_UI_BROADCASTER_CHROME_BROADCAST_OBSERVER_BRIDGE_H_ |
| #define IOS_CHROME_BROWSER_UI_BROADCASTER_CHROME_BROADCAST_OBSERVER_BRIDGE_H_ |
| |
| #import "ios/chrome/browser/ui/broadcaster/chrome_broadcast_observer.h" |
| |
| // Interface for C++ objects that care about broadcasted UI state. |
| class ChromeBroadcastObserverInterface { |
| public: |
| virtual ~ChromeBroadcastObserverInterface(); |
| |
| // Invoked by `-broadcastScrollViewSize:`. |
| virtual void OnScrollViewSizeBroadcasted(CGSize scroll_view_size) {} |
| |
| // Invoked by `-broadcastScrollViewContentSize:`. |
| virtual void OnScrollViewContentSizeBroadcasted(CGSize content_size) {} |
| |
| // Invoked by `-broadcastScrollViewContentInset:`. |
| virtual void OnScrollViewContentInsetBroadcasted(UIEdgeInsets conent_inset) {} |
| |
| // Invoked by `-broadcastContentScrollOffset:`. |
| virtual void OnContentScrollOffsetBroadcasted(CGFloat offset) {} |
| |
| // Invoked by `-broadcastScrollViewIsScrolling:`. |
| virtual void OnScrollViewIsScrollingBroadcasted(bool scrolling) {} |
| |
| // Invoked by `-broadcastScrollViewIsZooming:`. |
| virtual void OnScrollViewIsZoomingBroadcasted(bool zooming) {} |
| |
| // Invoked by `-broadcastScrollViewIsDragging:`. |
| virtual void OnScrollViewIsDraggingBroadcasted(bool dragging) {} |
| |
| // Invoked by `-broadcastCollapsedTopToolbarHeight:`. |
| virtual void OnCollapsedTopToolbarHeightBroadcasted(CGFloat height) {} |
| |
| // Invoked by `-broadcastExpandedTopToolbarHeight:`. |
| virtual void OnExpandedTopToolbarHeightBroadcasted(CGFloat height) {} |
| |
| // Invoked by `-broadcastExpandedBottomToolbarHeight:`. |
| virtual void OnExpandedBottomToolbarHeightBroadcasted(CGFloat height) {} |
| |
| // Invoked by `-broadcastCollapsedBottomToolbarHeight:`. |
| virtual void OnCollapsedBottomToolbarHeightBroadcasted(CGFloat height) {} |
| }; |
| |
| // Bridge object that forwards broadcasted UI state to objects that subclass |
| // ChromeBroadcastObserverInterface. |
| @interface ChromeBroadcastOberverBridge : NSObject<ChromeBroadcastObserver> |
| |
| // The observer being updated. |
| @property(nonatomic, readonly, nonnull) |
| ChromeBroadcastObserverInterface* observer; |
| |
| // Initializer for a bridge that updates `observer`. |
| - (nullable instancetype)initWithObserver: |
| (nonnull ChromeBroadcastObserverInterface*)observer |
| NS_DESIGNATED_INITIALIZER; |
| - (nullable instancetype)init NS_UNAVAILABLE; |
| |
| @end |
| |
| #endif // IOS_CHROME_BROWSER_UI_BROADCASTER_CHROME_BROADCAST_OBSERVER_BRIDGE_H_ |