Title: [164455] trunk/Source/WebKit2
Revision
164455
Author
[email protected]
Date
2014-02-20 15:46:18 -0800 (Thu, 20 Feb 2014)

Log Message

Add magnification and swiping properties to WKWebView
https://bugs.webkit.org/show_bug.cgi?id=129117

Reviewed by Dan Bernstein.

* UIProcess/API/Cocoa/WKViewPrivate.h:
Move allowsBackForwardNavigationGestures out of a Mac-only block.

* UIProcess/API/Cocoa/WKWebView.h:
Add allowsBackForwardNavigationGestures to WKWebView for both platforms.
Add magnification properties to WKWebView for Mac.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView contentView:didCommitLayerTree:WebKit::]):
(-[WKWebView setAllowsBackForwardNavigationGestures:]):
(-[WKWebView allowsBackForwardNavigationGestures]):
(-[WKWebView setAllowsMagnification:]):
(-[WKWebView allowsMagnification]):
(-[WKWebView setMagnification:]):
(-[WKWebView magnification]):
(-[WKWebView setMagnification:centeredAtPoint:]):
For iOS, copy implementations from WKViewIOS.
For Mac, forward to the inner WKView.

* UIProcess/API/ios/WKViewIOS.mm:
(-[WKView setAllowsBackForwardNavigationGestures:]):
Fix the logic to tear down the ViewGestureController.

* UIProcess/API/mac/WKView.mm:
(-[WKView setMagnification:centeredAtPoint:]):
(-[WKView setMagnification:]):
(-[WKView magnification]):
Use CG types for API.

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (164454 => 164455)


--- trunk/Source/WebKit2/ChangeLog	2014-02-20 23:34:21 UTC (rev 164454)
+++ trunk/Source/WebKit2/ChangeLog	2014-02-20 23:46:18 UTC (rev 164455)
@@ -1 +1,37 @@
+2014-02-20  Tim Horton  <[email protected]>
+
+        Add magnification and swiping properties to WKWebView
+        https://bugs.webkit.org/show_bug.cgi?id=129117
+
+        Reviewed by Dan Bernstein.
+
+        * UIProcess/API/Cocoa/WKViewPrivate.h:
+        Move allowsBackForwardNavigationGestures out of a Mac-only block.
+
+        * UIProcess/API/Cocoa/WKWebView.h:
+        Add allowsBackForwardNavigationGestures to WKWebView for both platforms.
+        Add magnification properties to WKWebView for Mac.
+
+        * UIProcess/API/Cocoa/WKWebView.mm:
+        (-[WKWebView contentView:didCommitLayerTree:WebKit::]):
+        (-[WKWebView setAllowsBackForwardNavigationGestures:]):
+        (-[WKWebView allowsBackForwardNavigationGestures]):
+        (-[WKWebView setAllowsMagnification:]):
+        (-[WKWebView allowsMagnification]):
+        (-[WKWebView setMagnification:]):
+        (-[WKWebView magnification]):
+        (-[WKWebView setMagnification:centeredAtPoint:]):
+        For iOS, copy implementations from WKViewIOS.
+        For Mac, forward to the inner WKView.
+
+        * UIProcess/API/ios/WKViewIOS.mm:
+        (-[WKView setAllowsBackForwardNavigationGestures:]):
+        Fix the logic to tear down the ViewGestureController.
+
+        * UIProcess/API/mac/WKView.mm:
+        (-[WKView setMagnification:centeredAtPoint:]):
+        (-[WKView setMagnification:]):
+        (-[WKView magnification]):
+        Use CG types for API.
+
 == Rolled over to ChangeLog-2014-02-20 ==

Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.h (164454 => 164455)


--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.h	2014-02-20 23:34:21 UTC (rev 164454)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.h	2014-02-20 23:46:18 UTC (rev 164455)
@@ -117,8 +117,15 @@
 - (void)goBack;
 - (void)goForward;
 
+@property (nonatomic) BOOL allowsBackForwardNavigationGestures;
+
 #if TARGET_OS_IPHONE
 @property (nonatomic, readonly) UIScrollView *scrollView;
+#else
+@property (nonatomic) BOOL allowsMagnification;
+@property (nonatomic) CGFloat magnification;
+
+- (void)setMagnification:(CGFloat)magnification centeredAtPoint:(CGPoint)point;
 #endif
 
 @end

Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm (164454 => 164455)


--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm	2014-02-20 23:34:21 UTC (rev 164454)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm	2014-02-20 23:46:18 UTC (rev 164455)
@@ -32,6 +32,7 @@
 #import "RemoteLayerTreeTransaction.h"
 #import "RemoteObjectRegistry.h"
 #import "RemoteObjectRegistryMessages.h"
+#import "ViewGestureController.h"
 #import "WKBackForwardListInternal.h"
 #import "WKBackForwardListItemInternal.h"
 #import "WKBrowsingContextHandleInternal.h"
@@ -83,6 +84,8 @@
     UIEdgeInsets _obscuredInsets;
     bool _isChangingObscuredInsetsInteractively;
     CGFloat _lastAdjustmentForScroller;
+
+    std::unique_ptr<WebKit::ViewGestureController> _gestureController;
 #endif
 #if PLATFORM(MAC)
     RetainPtr<WKView> _wkView;
@@ -307,6 +310,9 @@
     if (![_scrollView isZooming] && ![_scrollView isZoomBouncing])
         [_scrollView setZoomScale:layerTreeTransaction.pageScaleFactor()];
 
+    if (_gestureController)
+        _gestureController->setRenderTreeSize(layerTreeTransaction.renderTreeSize());
+
     if (_isWaitingForNewLayerTreeAfterDidCommitLoad) {
         UIEdgeInsets inset = [_scrollView contentInset];
         [_scrollView setContentOffset:CGPointMake(-inset.left, -inset.top)];
@@ -438,6 +444,41 @@
     [_wkView setFrame:self.bounds];
 }
 
+- (void)setAllowsBackForwardNavigationGestures:(BOOL)allowsBackForwardNavigationGestures
+{
+    [_wkView setAllowsBackForwardNavigationGestures:allowsBackForwardNavigationGestures];
+}
+
+- (BOOL)allowsBackForwardNavigationGestures
+{
+    return [_wkView allowsBackForwardNavigationGestures];
+}
+
+- (void)setAllowsMagnification:(BOOL)allowsMagnification
+{
+    [_wkView setAllowsMagnification:allowsMagnification];
+}
+
+- (BOOL)allowsMagnification
+{
+    return [_wkView allowsMagnification];
+}
+
+- (void)setMagnification:(CGFloat)magnification
+{
+    [_wkView setMagnification:magnification];
+}
+
+- (CGFloat)magnification
+{
+    return [_wkView magnification];
+}
+
+- (void)setMagnification:(CGFloat)magnification centeredAtPoint:(CGPoint)point
+{
+    [_wkView setMagnification:magnification centeredAtPoint:NSPointFromCGPoint(point)];
+}
+
 #endif
 
 @end
@@ -627,6 +668,29 @@
     _isChangingObscuredInsetsInteractively = NO;
 }
 
+- (void)setAllowsBackForwardNavigationGestures:(BOOL)allowsBackForwardNavigationGestures
+{
+    if (_allowsBackForwardNavigationGestures == allowsBackForwardNavigationGestures)
+        return;
+
+    _allowsBackForwardNavigationGestures = allowsBackForwardNavigationGestures;
+
+    if (allowsBackForwardNavigationGestures) {
+        if (!_gestureController) {
+            _gestureController = std::make_unique<WebKit::ViewGestureController>(*_page);
+            _gestureController->installSwipeHandler(self, [self scrollView]);
+        }
+    } else
+        _gestureController = nullptr;
+
+    _page->setShouldRecordNavigationSnapshots(allowsBackForwardNavigationGestures);
+}
+
+- (BOOL)allowsBackForwardNavigationGestures
+{
+    return _allowsBackForwardNavigationGestures;
+}
+
 #endif
 
 @end

Modified: trunk/Source/WebKit2/UIProcess/API/ios/WKViewIOS.mm (164454 => 164455)


--- trunk/Source/WebKit2/UIProcess/API/ios/WKViewIOS.mm	2014-02-20 23:34:21 UTC (rev 164454)
+++ trunk/Source/WebKit2/UIProcess/API/ios/WKViewIOS.mm	2014-02-20 23:46:18 UTC (rev 164455)
@@ -125,13 +125,18 @@
 
 - (void)setAllowsBackForwardNavigationGestures:(BOOL)allowsBackForwardNavigationGestures
 {
+    if (_allowsBackForwardNavigationGestures == allowsBackForwardNavigationGestures)
+        return;
+
     _allowsBackForwardNavigationGestures = allowsBackForwardNavigationGestures;
     
     WebPageProxy *webPageProxy = toImpl([_contentView _pageRef]);
     
-    if (allowsBackForwardNavigationGestures && !_gestureController) {
-        _gestureController = std::make_unique<ViewGestureController>(*webPageProxy);
-        _gestureController->installSwipeHandler(self, [self scrollView]);
+    if (allowsBackForwardNavigationGestures) {
+        if (!_gestureController) {
+            _gestureController = std::make_unique<ViewGestureController>(*webPageProxy);
+            _gestureController->installSwipeHandler(self, [self scrollView]);
+        }
     } else
         _gestureController = nullptr;
     
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to