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