Title: [168568] trunk/Source/WebKit2
Revision
168568
Author
[email protected]
Date
2014-05-09 19:09:03 -0700 (Fri, 09 May 2014)

Log Message

[iOS][WK2] Reset the scroll position on the first frame after didCommitLoad
https://bugs.webkit.org/show_bug.cgi?id=132765

Reviewed by Tim Horton.

Since WebCore does not update our scroll view on load, we need to do that ourself.

In case where we need to restore the state from the history, RemoteLayerTreeDrawingAreaProxy
will always invoke the scrolling after didCommitLayerTree() (since r167916).
Consequently, it is now safe again to reset the scroll position ourself on the first frame.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _didCommitLoadForMainFrame]):
(-[WKWebView _didCommitLayerTree:WebKit::]):
* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/ios/WKContentView.mm:
(-[WKContentView _didCommitLoadForMainFrame]):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (168567 => 168568)


--- trunk/Source/WebKit2/ChangeLog	2014-05-10 01:53:20 UTC (rev 168567)
+++ trunk/Source/WebKit2/ChangeLog	2014-05-10 02:09:03 UTC (rev 168568)
@@ -1,3 +1,23 @@
+2014-05-09  Benjamin Poulain  <[email protected]>
+
+        [iOS][WK2] Reset the scroll position on the first frame after didCommitLoad
+        https://bugs.webkit.org/show_bug.cgi?id=132765
+
+        Reviewed by Tim Horton.
+
+        Since WebCore does not update our scroll view on load, we need to do that ourself.
+
+        In case where we need to restore the state from the history, RemoteLayerTreeDrawingAreaProxy
+        will always invoke the scrolling after didCommitLayerTree() (since r167916).
+        Consequently, it is now safe again to reset the scroll position ourself on the first frame.
+
+        * UIProcess/API/Cocoa/WKWebView.mm:
+        (-[WKWebView _didCommitLoadForMainFrame]):
+        (-[WKWebView _didCommitLayerTree:WebKit::]):
+        * UIProcess/API/Cocoa/WKWebViewInternal.h:
+        * UIProcess/ios/WKContentView.mm:
+        (-[WKContentView _didCommitLoadForMainFrame]):
+
 2014-05-09  Anders Carlsson  <[email protected]>
 
         Update availability macros

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


--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm	2014-05-10 01:53:20 UTC (rev 168567)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm	2014-05-10 02:09:03 UTC (rev 168568)
@@ -114,6 +114,7 @@
     UIView *_extendedBackgroundLayerTopInset;
     UIView *_extendedBackgroundLayerBottomInset;
 
+    BOOL _needsResetViewStateAfterCommitLoadForMainFrame;
     BOOL _isAnimatingResize;
     CATransform3D _resizeAnimationTransformAdjustments;
     RetainPtr<UIView> _resizeAnimationView;
@@ -456,6 +457,11 @@
     _extendedBackgroundLayerBottomInset.backgroundColor = uiBackgroundColor.get();
 }
 
+- (void)_didCommitLoadForMainFrame
+{
+    _needsResetViewStateAfterCommitLoadForMainFrame = YES;
+}
+
 - (void)_didCommitLayerTree:(const WebKit::RemoteLayerTreeTransaction&)layerTreeTransaction
 {
     if (_customContentView)
@@ -477,6 +483,11 @@
 
     if (_gestureController)
         _gestureController->setRenderTreeSize(layerTreeTransaction.renderTreeSize());
+
+    if (_needsResetViewStateAfterCommitLoadForMainFrame) {
+        _needsResetViewStateAfterCommitLoadForMainFrame = NO;
+        [_scrollView setContentOffset:CGPointMake(-_obscuredInsets.left, -_obscuredInsets.top)];
+    }
 }
 
 - (void)_dynamicViewportUpdateChangedTargetToScale:(double)newScale position:(CGPoint)newScrollPosition

Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewInternal.h (168567 => 168568)


--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewInternal.h	2014-05-10 01:53:20 UTC (rev 168567)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewInternal.h	2014-05-10 02:09:03 UTC (rev 168568)
@@ -58,6 +58,7 @@
 }
 
 #if PLATFORM(IOS)
+- (void)_didCommitLoadForMainFrame;
 - (void)_didCommitLayerTree:(const WebKit::RemoteLayerTreeTransaction&)layerTreeTransaction;
 
 - (void)_dynamicViewportUpdateChangedTargetToScale:(double)newScale position:(CGPoint)newScrollPosition;

Modified: trunk/Source/WebKit2/UIProcess/ios/WKContentView.mm (168567 => 168568)


--- trunk/Source/WebKit2/UIProcess/ios/WKContentView.mm	2014-05-10 01:53:20 UTC (rev 168567)
+++ trunk/Source/WebKit2/UIProcess/ios/WKContentView.mm	2014-05-10 02:09:03 UTC (rev 168568)
@@ -443,6 +443,7 @@
 - (void)_didCommitLoadForMainFrame
 {
     [self _stopAssistingNode];
+    [_webView _didCommitLoadForMainFrame];
 }
 
 - (void)_didCommitLayerTree:(const WebKit::RemoteLayerTreeTransaction&)layerTreeTransaction
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to