| Index: ios/web/public/web_state/crw_web_view_scroll_view_proxy.h
|
| diff --git a/ios/web/public/web_state/crw_web_view_scroll_view_proxy.h b/ios/web/public/web_state/crw_web_view_scroll_view_proxy.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..725577d9705e5eedcca74105fdecaf87e41bdbe8
|
| --- /dev/null
|
| +++ b/ios/web/public/web_state/crw_web_view_scroll_view_proxy.h
|
| @@ -0,0 +1,95 @@
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef IOS_WEB_PUBLIC_WEB_STATE_CRW_WEB_VIEW_SCROLL_VIEW_PROXY_H_
|
| +#define IOS_WEB_PUBLIC_WEB_STATE_CRW_WEB_VIEW_SCROLL_VIEW_PROXY_H_
|
| +
|
| +#import <UIKit/UIKit.h>
|
| +
|
| +@protocol CRWWebViewScrollViewProxyObserver;
|
| +
|
| +// Provides an interface for web state observers to access the WebState's
|
| +// UIScrollView in a limited and controlled manner.
|
| +// This class is designed to limit lifetime of the UIScrollView such that it is
|
| +// not retained beyond WebState. It is also a way to tunnel UIScrollViewDelegate
|
| +// callbacks.
|
| +// NOTE: The API exposed by the proxy class isn't intended to be restrictive.
|
| +// The features needing to access other UIScrollView properties and methods
|
| +// needed to drive the UIScrollView are free to extend the proxy class as
|
| +// needed.
|
| +// The class forwards some of the methods onto the UIScrollView. For more
|
| +// information look at the UIScrollView documentation.
|
| +@interface CRWWebViewScrollViewProxy : NSObject<UIScrollViewDelegate>
|
| +@property(nonatomic, assign) CGPoint contentOffset;
|
| +@property(nonatomic, assign) UIEdgeInsets contentInset;
|
| +@property(nonatomic, readonly) BOOL isZooming;
|
| +@property(nonatomic, assign) UIEdgeInsets scrollIndicatorInsets;
|
| +@property(nonatomic, assign) CGSize contentSize;
|
| +@property(nonatomic, readonly) CGRect frame;
|
| +@property(nonatomic, getter=isScrollEnabled) BOOL scrollEnabled;
|
| +@property(nonatomic, assign) BOOL bounces;
|
| +@property(nonatomic, readonly) UIPanGestureRecognizer* panGestureRecognizer;
|
| +// Returns the scrollview's gesture recognizers.
|
| +@property(nonatomic, readonly) NSArray* gestureRecognizers;
|
| +
|
| +// Calls UIScrollView's implementation of setContentInset: directly. This
|
| +// bypasses a very slow update path in UIWebView.
|
| +- (void)setContentInsetFast:(UIEdgeInsets)contentInset;
|
| +
|
| +- (void)addGestureRecognizer:(UIGestureRecognizer*)gestureRecognizer;
|
| +- (void)removeGestureRecognizer:(UIGestureRecognizer*)gestureRecognizer;
|
| +- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated;
|
| +
|
| +// Used by the CRWWebViewProxy to set the UIScrollView to be managed.
|
| +- (void)setScrollView:(UIScrollView*)scrollView;
|
| +
|
| +// Copies all display properties that can be set on a CRWWebViewScrollViewProxy
|
| +// from the underlying UIScrollView into |scrollView|.
|
| +- (void)copyPropertiesToScrollView:(UIScrollView*)scrollView;
|
| +
|
| +// Adds |observer| to subscribe to change notifications.
|
| +- (void)addObserver:(id<CRWWebViewScrollViewProxyObserver>)observer;
|
| +
|
| +// Removes |observer| as a subscriber for change notifications.
|
| +- (void)removeObserver:(id<CRWWebViewScrollViewProxyObserver>)observer;
|
| +
|
| +@end
|
| +
|
| +// A protocol to be implemented by objects to listen for changes to the
|
| +// UIScrollView.
|
| +// This is an exact mirror of the UIScrollViewDelegate callbacks. For more
|
| +// information look at the UIScrollViewDelegate documentation.
|
| +@protocol CRWWebViewScrollViewObserver<NSObject>
|
| +@optional
|
| +- (void)webViewScrollViewDidScroll:
|
| + (CRWWebViewScrollViewProxy*)webViewScrollViewProxy;
|
| +- (void)webViewScrollViewWillBeginDragging:
|
| + (CRWWebViewScrollViewProxy*)webViewScrollViewProxy;
|
| +- (void)webViewScrollViewWillEndDragging:
|
| + (CRWWebViewScrollViewProxy*)webViewScrollViewProxy
|
| + withVelocity:(CGPoint)velocity
|
| + targetContentOffset:(inout CGPoint*)targetContentOffset;
|
| +- (void)webViewScrollViewDidEndDragging:
|
| + (CRWWebViewScrollViewProxy*)webViewScrollViewProxy
|
| + willDecelerate:(BOOL)decelerate;
|
| +- (void)webViewScrollViewDidEndScrollingAnimation:
|
| + (CRWWebViewScrollViewProxy*)webViewScrollViewProxy;
|
| +- (void)webViewScrollViewDidEndDecelerating:
|
| + (CRWWebViewScrollViewProxy*)webViewScrollViewProxy;
|
| +- (BOOL)webViewScrollViewShouldScrollToTop:
|
| + (CRWWebViewScrollViewProxy*)webViewScrollViewProxy;
|
| +@end
|
| +
|
| +// A protocol to be implemented by objects to listen for changes to the
|
| +// CRWWebViewScrollViewProxyObserver.
|
| +// It inherit from CRWWebViewScrollViewScrollViewObserver which only implements
|
| +// methods for listening to scrollview changes.
|
| +@protocol CRWWebViewScrollViewProxyObserver<CRWWebViewScrollViewObserver>
|
| +@optional
|
| +// Called when the underlying scrollview of the proxy is set.
|
| +- (void)webViewScrollViewProxyDidSetScrollView:
|
| + (CRWWebViewScrollViewProxy*)webViewScrollViewProxy;
|
| +@end
|
| +
|
| +#endif // IOS_WEB_PUBLIC_WEB_STATE_CRW_WEB_VIEW_SCROLL_VIEW_PROXY_H_
|
|
|