Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(413)

Unified Diff: ios/web/public/web_state/crw_web_view_scroll_view_proxy.h

Issue 1023813003: [iOS] Upstream ios/chrome/browser/find_in_page (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@upstreamAutofill
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ios/web/ios_web.gyp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_
« no previous file with comments | « ios/web/ios_web.gyp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698