Title: [221714] trunk
Revision
221714
Author
achristen...@apple.com
Date
2017-09-06 20:42:39 -0700 (Wed, 06 Sep 2017)

Log Message

Add WKUIDelegatePrivate equivalent of WKPageUIClient's pageDidScroll
https://bugs.webkit.org/show_bug.cgi?id=176482
<rdar://problem/29270035>

Reviewed by Tim Horton.
Source/WebKit:

        
Covered by a new API test!

* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
* UIProcess/Cocoa/UIDelegate.h:
* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::setDelegate):
(WebKit::UIDelegate::UIClient::pageDidScroll):

Tools:


* TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:
(-[DidScrollDelegate _webViewDidScroll:]):
(TEST):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (221713 => 221714)


--- trunk/Source/WebKit/ChangeLog	2017-09-07 03:29:21 UTC (rev 221713)
+++ trunk/Source/WebKit/ChangeLog	2017-09-07 03:42:39 UTC (rev 221714)
@@ -1,3 +1,19 @@
+2017-09-06  Alex Christensen  <achristen...@webkit.org>
+
+        Add WKUIDelegatePrivate equivalent of WKPageUIClient's pageDidScroll
+        https://bugs.webkit.org/show_bug.cgi?id=176482
+        <rdar://problem/29270035>
+
+        Reviewed by Tim Horton.
+        
+        Covered by a new API test!
+
+        * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
+        * UIProcess/Cocoa/UIDelegate.h:
+        * UIProcess/Cocoa/UIDelegate.mm:
+        (WebKit::UIDelegate::setDelegate):
+        (WebKit::UIDelegate::UIClient::pageDidScroll):
+
 2017-09-06  Youenn Fablet  <you...@apple.com>
 
         NetworkProcess Cache and Caches should be cleared when the last related WebProcess Cache or CacheStorage is destroyed

Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKUIDelegatePrivate.h (221713 => 221714)


--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKUIDelegatePrivate.h	2017-09-07 03:29:21 UTC (rev 221713)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKUIDelegatePrivate.h	2017-09-07 03:42:39 UTC (rev 221714)
@@ -152,6 +152,7 @@
 - (void)_showWebView:(WKWebView *)webView WK_API_AVAILABLE(macosx(WK_MAC_TBA));
 - (void)_focusWebView:(WKWebView *)webView WK_API_AVAILABLE(macosx(WK_MAC_TBA));
 - (void)_unfocusWebView:(WKWebView *)webView WK_API_AVAILABLE(macosx(WK_MAC_TBA));
+- (void)_webViewDidScroll:(WKWebView *)webView WK_API_AVAILABLE(macosx(WK_MAC_TBA));
 - (void)_webView:(WKWebView *)webView takeFocus:(_WKFocusDirection)direction WK_API_AVAILABLE(macosx(WK_MAC_TBA));
 - (void)_webView:(WKWebView *)webView didNotHandleWheelEvent:(NSEvent *)event WK_API_AVAILABLE(macosx(WK_MAC_TBA));
 - (void)_webView:(WKWebView *)webView handleAutoplayEvent:(_WKAutoplayEvent)event withFlags:(_WKAutoplayEventFlags)flags WK_API_AVAILABLE(macosx(WK_MAC_TBA));

Modified: trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.h (221713 => 221714)


--- trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.h	2017-09-07 03:29:21 UTC (rev 221713)
+++ trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.h	2017-09-07 03:42:39 UTC (rev 221714)
@@ -100,6 +100,7 @@
         void takeFocus(WebPageProxy*, WKFocusDirection) final;
         void focus(WebPageProxy*) final;
         void unfocus(WebPageProxy*) final;
+        void pageDidScroll(WebPageProxy*) final;
         void didNotHandleWheelEvent(WebPageProxy*, const NativeWebWheelEvent&) final;
         void handleAutoplayEvent(WebPageProxy&, WebCore::AutoplayEvent, OptionSet<WebCore::AutoplayEventFlags>) final;
         void unavailablePluginButtonClicked(WebKit::WebPageProxy&, WKPluginUnavailabilityReason, API::Dictionary&) final;
@@ -152,6 +153,7 @@
         bool focusWebView : 1;
         bool unfocusWebView : 1;
         bool webViewTakeFocus : 1;
+        bool webViewDidScroll : 1;
         bool webViewDidNotHandleWheelEvent : 1;
         bool webViewHandleAutoplayEventWithFlags : 1;
         bool webViewUnavailablePlugInButtonClicked : 1;

Modified: trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm (221713 => 221714)


--- trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm	2017-09-07 03:29:21 UTC (rev 221713)
+++ trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm	2017-09-07 03:42:39 UTC (rev 221714)
@@ -109,6 +109,7 @@
     m_delegateMethods.focusWebView = [delegate respondsToSelector:@selector(_focusWebView:)];
     m_delegateMethods.unfocusWebView = [delegate respondsToSelector:@selector(_unfocusWebView:)];
     m_delegateMethods.webViewTakeFocus = [delegate respondsToSelector:@selector(_webView:takeFocus:)];
+    m_delegateMethods.webViewDidScroll = [delegate respondsToSelector:@selector(_webViewDidScroll:)];
     m_delegateMethods.webViewGetToolbarsAreVisibleWithCompletionHandler = [delegate respondsToSelector:@selector(_webView:getToolbarsAreVisibleWithCompletionHandler:)];
     m_delegateMethods.webViewDidNotHandleWheelEvent = [delegate respondsToSelector:@selector(_webView:didNotHandleWheelEvent:)];
     m_delegateMethods.webViewUnavailablePlugInButtonClicked = [delegate respondsToSelector:@selector(_webView:unavailablePlugInButtonClickedWithReason:plugInInfo:)];
@@ -411,6 +412,18 @@
     [(id <WKUIDelegatePrivate>)delegate _webView:m_uiDelegate.m_webView takeFocus:toWKFocusDirection(direction)];
 }
 
+void UIDelegate::UIClient::pageDidScroll(WebPageProxy*)
+{
+    if (!m_uiDelegate.m_delegateMethods.webViewDidScroll)
+        return;
+    
+    auto delegate = m_uiDelegate.m_delegate.get();
+    if (!delegate)
+        return;
+    
+    [(id <WKUIDelegatePrivate>)delegate _webViewDidScroll:m_uiDelegate.m_webView];
+}
+
 void UIDelegate::UIClient::focus(WebPageProxy*)
 {
     if (!m_uiDelegate.m_delegateMethods.focusWebView)

Modified: trunk/Tools/ChangeLog (221713 => 221714)


--- trunk/Tools/ChangeLog	2017-09-07 03:29:21 UTC (rev 221713)
+++ trunk/Tools/ChangeLog	2017-09-07 03:42:39 UTC (rev 221714)
@@ -1,3 +1,15 @@
+2017-09-06  Alex Christensen  <achristen...@webkit.org>
+
+        Add WKUIDelegatePrivate equivalent of WKPageUIClient's pageDidScroll
+        https://bugs.webkit.org/show_bug.cgi?id=176482
+        <rdar://problem/29270035>
+
+        Reviewed by Tim Horton.
+
+        * TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:
+        (-[DidScrollDelegate _webViewDidScroll:]):
+        (TEST):
+
 2017-09-06  Eric Carlson  <eric.carl...@apple.com>
 
         Require LoggingHelper overrides to provide identifier

Modified: trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm (221713 => 221714)


--- trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm	2017-09-07 03:29:21 UTC (rev 221713)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm	2017-09-07 03:42:39 UTC (rev 221714)
@@ -249,7 +249,7 @@
     TestWebKitAPI::Util::run(&done);
 }
 
-@interface PinnedStateObserver : NSObject <WKUIDelegatePrivate>
+@interface PinnedStateObserver : NSObject
 @end
 
 @implementation PinnedStateObserver
@@ -275,6 +275,27 @@
     TestWebKitAPI::Util::run(&done);
 }
 
+@interface DidScrollDelegate : NSObject <WKUIDelegatePrivate>
+@end
+
+@implementation DidScrollDelegate
+
+- (void)_webViewDidScroll:(WKWebView *)webView
+{
+    done = true;
+}
+
+@end
+
+TEST(WebKit, DidScroll)
+{
+    auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:CGRectMake(0, 0, 800, 600)]);
+    auto delegate = adoptNS([[DidScrollDelegate alloc] init]);
+    [webView setUIDelegate:delegate.get()];
+    [webView loadHTMLString:@"<body _onload_='scroll(100, 100)' style='height:10000vh;'/>" baseURL:[NSURL URLWithString:@"http://example.com/"]];
+    TestWebKitAPI::Util::run(&done);
+}
+
 static NSEvent *tabEvent(NSWindow *window, NSEventType type, NSEventModifierFlags flags)
 {
     return [NSEvent keyEventWithType:type location:NSMakePoint(5, 5) modifierFlags:flags timestamp:GetCurrentEventTime() windowNumber:[window windowNumber] context:[NSGraphicsContext currentContext] characters:@"\t" charactersIgnoringModifiers:@"\t" isARepeat:NO keyCode:0];
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to