Diff
Modified: trunk/Source/WebKit/ChangeLog (221657 => 221658)
--- trunk/Source/WebKit/ChangeLog 2017-09-06 01:18:15 UTC (rev 221657)
+++ trunk/Source/WebKit/ChangeLog 2017-09-06 01:23:38 UTC (rev 221658)
@@ -1,3 +1,52 @@
+2017-09-05 Alex Christensen <achristen...@webkit.org>
+
+ Add WKUIDelegatePrivate equivalent of WKPageUIClient's mouseDidMoveOverElement
+ https://bugs.webkit.org/show_bug.cgi?id=176428
+ <rdar://problem/29270035>
+
+ Reviewed by Tim Horton.
+
+ Covered by a new API test.
+
+ * UIProcess/API/APIUIClient.h:
+ (API::UIClient::mouseDidMoveOverElement):
+ * UIProcess/API/C/WKPage.cpp:
+ (WKPageSetPageUIClient):
+ * UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
+ * UIProcess/Cocoa/UIDelegate.h:
+ * UIProcess/Cocoa/UIDelegate.mm:
+ (WebKit::UIDelegate::setDelegate):
+ (WebKit::UIDelegate::ContextMenuClient::menuFromProposedMenu):
+ (WebKit::UIDelegate::UIClient::createNewPageCommon):
+ (WebKit::UIDelegate::UIClient::runJavaScriptAlert):
+ (WebKit::UIDelegate::UIClient::runJavaScriptConfirm):
+ (WebKit::UIDelegate::UIClient::runJavaScriptPrompt):
+ (WebKit::UIDelegate::UIClient::runBeforeUnloadConfirmPanel):
+ (WebKit::UIDelegate::UIClient::takeFocus):
+ (WebKit::UIDelegate::UIClient::focus):
+ (WebKit::UIDelegate::UIClient::unfocus):
+ (WebKit::UIDelegate::UIClient::didExceedBackgroundResourceLimitWhileInForeground):
+ (WebKit::UIDelegate::UIClient::didNotHandleWheelEvent):
+ (WebKit::toNSEventModifierFlags):
+ (WebKit::UIDelegate::UIClient::mouseDidMoveOverElement):
+ (WebKit::UIDelegate::UIClient::toolbarsAreVisible):
+ (WebKit::UIDelegate::UIClient::didClickAutoFillButton):
+ (WebKit::UIDelegate::UIClient::handleAutoplayEvent):
+ (WebKit::requestUserMediaAuthorizationForDevices):
+ (WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest):
+ (WebKit::UIDelegate::UIClient::checkUserMediaPermissionForOrigin):
+ (WebKit::UIDelegate::UIClient::printFrame):
+ (WebKit::UIDelegate::UIClient::close):
+ (WebKit::UIDelegate::UIClient::fullscreenMayReturnToInline):
+ (WebKit::UIDelegate::UIClient::didEnterFullscreen):
+ (WebKit::UIDelegate::UIClient::didExitFullscreen):
+ (WebKit::UIDelegate::UIClient::requestPointerLock):
+ (WebKit::UIDelegate::UIClient::didLosePointerLock):
+ (WebKit::UIDelegate::UIClient::hasVideoInPictureInPictureDidChange):
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::mouseDidMoveOverElement):
+ * UIProcess/WebPageProxy.h:
+
2017-09-05 Brent Fulgham <bfulg...@apple.com>
Relax keychain access to permit users to permanently allow client certificates
Modified: trunk/Source/WebKit/UIProcess/API/APIUIClient.h (221657 => 221658)
--- trunk/Source/WebKit/UIProcess/API/APIUIClient.h 2017-09-06 01:18:15 UTC (rev 221657)
+++ trunk/Source/WebKit/UIProcess/API/APIUIClient.h 2017-09-06 01:23:38 UTC (rev 221658)
@@ -91,7 +91,7 @@
virtual void runJavaScriptPrompt(WebKit::WebPageProxy*, const WTF::String&, const WTF::String&, WebKit::WebFrameProxy*, const WebCore::SecurityOriginData&, Function<void (const WTF::String&)>&& completionHandler) { completionHandler(WTF::String()); }
virtual void setStatusText(WebKit::WebPageProxy*, const WTF::String&) { }
- virtual void mouseDidMoveOverElement(WebKit::WebPageProxy*, const WebKit::WebHitTestResultData&, WebKit::WebEvent::Modifiers, Object*) { }
+ virtual void mouseDidMoveOverElement(WebKit::WebPageProxy&, const WebKit::WebHitTestResultData&, WebKit::WebEvent::Modifiers, Object*) { }
#if ENABLE(NETSCAPE_PLUGIN_API)
virtual void unavailablePluginButtonClicked(WebKit::WebPageProxy&, WKPluginUnavailabilityReason, Dictionary&) { }
#endif // ENABLE(NETSCAPE_PLUGIN_API)
Modified: trunk/Source/WebKit/UIProcess/API/C/WKPage.cpp (221657 => 221658)
--- trunk/Source/WebKit/UIProcess/API/C/WKPage.cpp 2017-09-06 01:18:15 UTC (rev 221657)
+++ trunk/Source/WebKit/UIProcess/API/C/WKPage.cpp 2017-09-06 01:23:38 UTC (rev 221658)
@@ -1770,7 +1770,7 @@
m_client.setStatusText(toAPI(page), toAPI(text.impl()), m_client.base.clientInfo);
}
- void mouseDidMoveOverElement(WebPageProxy* page, const WebHitTestResultData& data, WebKit::WebEvent::Modifiers modifiers, API::Object* userData) final
+ void mouseDidMoveOverElement(WebPageProxy& page, const WebHitTestResultData& data, WebKit::WebEvent::Modifiers modifiers, API::Object* userData) final
{
if (!m_client.mouseDidMoveOverElement && !m_client.mouseDidMoveOverElement_deprecatedForUseWithV0)
return;
@@ -1779,12 +1779,12 @@
return;
if (!m_client.base.version) {
- m_client.mouseDidMoveOverElement_deprecatedForUseWithV0(toAPI(page), toAPI(modifiers), toAPI(userData), m_client.base.clientInfo);
+ m_client.mouseDidMoveOverElement_deprecatedForUseWithV0(toAPI(&page), toAPI(modifiers), toAPI(userData), m_client.base.clientInfo);
return;
}
- RefPtr<API::HitTestResult> webHitTestResult = API::HitTestResult::create(data);
- m_client.mouseDidMoveOverElement(toAPI(page), toAPI(webHitTestResult.get()), toAPI(modifiers), toAPI(userData), m_client.base.clientInfo);
+ auto apiHitTestResult = API::HitTestResult::create(data);
+ m_client.mouseDidMoveOverElement(toAPI(&page), toAPI(apiHitTestResult.ptr()), toAPI(modifiers), toAPI(userData), m_client.base.clientInfo);
}
#if ENABLE(NETSCAPE_PLUGIN_API)
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKUIDelegatePrivate.h (221657 => 221658)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKUIDelegatePrivate.h 2017-09-06 01:18:15 UTC (rev 221657)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKUIDelegatePrivate.h 2017-09-06 01:23:38 UTC (rev 221658)
@@ -158,6 +158,7 @@
- (void)_webView:(WKWebView *)webView didClickAutoFillButtonWithUserInfo:(id <NSSecureCoding>)userInfo WK_API_AVAILABLE(macosx(WK_MAC_TBA));
- (void)_webView:(WKWebView *)webView getToolbarsAreVisibleWithCompletionHandler:(void(^)(BOOL))completionHandler WK_API_AVAILABLE(macosx(WK_MAC_TBA));
- (void)_webView:(WKWebView *)webView saveDataToFile:(NSData *)data suggestedFilename:(NSString *)suggestedFilename mimeType:(NSString *)mimeType originatingURL:(NSURL *)url WK_API_AVAILABLE(macosx(WK_MAC_TBA));
+- (void)_webView:(WKWebView *)webview mouseDidMoveOverElement:(_WKHitTestResult *)hitTestResult withFlags:(NSEventModifierFlags)flags userInfo:(id <NSSecureCoding>)userInfo;
- (void)_webView:(WKWebView *)webView didExceedBackgroundResourceLimitWhileInForeground:(_WKResourceLimit)limit WK_API_AVAILABLE(macosx(WK_MAC_TBA));
- (void)_webView:(WKWebView *)webView unavailablePlugInButtonClickedWithReason:(_WKPlugInUnavailabilityReason)reason plugInInfo:(NSDictionary *)plugInInfo;
- (NSMenu *)_webView:(WKWebView *)webView contextMenu:(NSMenu *)menu forElement:(_WKContextMenuElementInfo *)element WK_API_AVAILABLE(macosx(10.12));
Modified: trunk/Source/WebKit/UIProcess/API/glib/WebKitUIClient.cpp (221657 => 221658)
--- trunk/Source/WebKit/UIProcess/API/glib/WebKitUIClient.cpp 2017-09-06 01:18:15 UTC (rev 221657)
+++ trunk/Source/WebKit/UIProcess/API/glib/WebKitUIClient.cpp 2017-09-06 01:23:38 UTC (rev 221658)
@@ -92,7 +92,7 @@
completionHandler(webkitWebViewRunJavaScriptBeforeUnloadConfirm(m_webView, message.utf8()));
}
- void mouseDidMoveOverElement(WebPageProxy*, const WebHitTestResultData& data, WebEvent::Modifiers modifiers, API::Object*) override
+ void mouseDidMoveOverElement(WebPageProxy&, const WebHitTestResultData& data, WebEvent::Modifiers modifiers, API::Object*) final
{
webkitWebViewMouseTargetChanged(m_webView, data, modifiers);
}
Modified: trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.h (221657 => 221658)
--- trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.h 2017-09-06 01:18:15 UTC (rev 221657)
+++ trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.h 2017-09-06 01:23:38 UTC (rev 221658)
@@ -103,6 +103,7 @@
void didNotHandleWheelEvent(WebPageProxy*, const NativeWebWheelEvent&) final;
void handleAutoplayEvent(WebPageProxy&, WebCore::AutoplayEvent, OptionSet<WebCore::AutoplayEventFlags>) final;
void unavailablePluginButtonClicked(WebKit::WebPageProxy&, WKPluginUnavailabilityReason, API::Dictionary&) final;
+ void mouseDidMoveOverElement(WebPageProxy&, const WebHitTestResultData&, WebEvent::Modifiers, API::Object*);
void didClickAutoFillButton(WebPageProxy&, API::Object*) final;
void toolbarsAreVisible(WebKit::WebPageProxy&, Function<void(bool)>&&) final;
bool runOpenPanel(WebPageProxy*, WebFrameProxy*, const WebCore::SecurityOriginData&, API::OpenPanelParameters*, WebOpenPanelResultListenerProxy*) final;
@@ -155,6 +156,7 @@
bool webViewHandleAutoplayEventWithFlags : 1;
bool webViewUnavailablePlugInButtonClicked : 1;
bool webViewDidClickAutoFillButtonWithUserInfo : 1;
+ bool webViewMouseDidMoveOverElementWithFlagsUserInfo : 1;
bool webViewGetToolbarsAreVisibleWithCompletionHandler : 1;
bool webViewDidExceedBackgroundResourceLimitWhileInForeground : 1;
bool webViewSaveDataToFileSuggestedFilenameMimeTypeOriginatingURL : 1;
Modified: trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm (221657 => 221658)
--- trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm 2017-09-06 01:18:15 UTC (rev 221657)
+++ trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm 2017-09-06 01:23:38 UTC (rev 221658)
@@ -29,6 +29,7 @@
#if WK_API_ENABLED
#import "APIFrameInfo.h"
+#import "APIHitTestResult.h"
#import "CompletionHandlerCallChecker.h"
#import "NativeWebWheelEvent.h"
#import "NavigationActionData.h"
@@ -48,6 +49,7 @@
#import "WebProcessProxy.h"
#import "_WKContextMenuElementInfo.h"
#import "_WKFrameHandleInternal.h"
+#import "_WKHitTestResultInternal.h"
#import <WebCore/SecurityOriginData.h>
#import <WebCore/URL.h>
#import <wtf/BlockPtr.h>
@@ -112,6 +114,7 @@
m_delegateMethods.webViewUnavailablePlugInButtonClicked = [delegate respondsToSelector:@selector(_webView:unavailablePlugInButtonClickedWithReason:plugInInfo:)];
m_delegateMethods.webViewHandleAutoplayEventWithFlags = [delegate respondsToSelector:@selector(_webView:handleAutoplayEvent:withFlags:)];
m_delegateMethods.webViewDidClickAutoFillButtonWithUserInfo = [delegate respondsToSelector:@selector(_webView:didClickAutoFillButtonWithUserInfo:)];
+ m_delegateMethods.webViewMouseDidMoveOverElementWithFlagsUserInfo = [delegate respondsToSelector:@selector(_webView:mouseDidMoveOverElement:withFlags:userInfo:)];
m_delegateMethods.webViewDidExceedBackgroundResourceLimitWhileInForeground = [delegate respondsToSelector:@selector(_webView:didExceedBackgroundResourceLimitWhileInForeground:)];
m_delegateMethods.webViewSaveDataToFileSuggestedFilenameMimeTypeOriginatingURL = [delegate respondsToSelector:@selector(_webView:saveDataToFile:suggestedFilename:mimeType:originatingURL:)];
m_delegateMethods.webViewRunOpenPanelWithParametersInitiatedByFrameCompletionHandler = [delegate respondsToSelector:@selector(webView:runOpenPanelWithParameters:initiatedByFrame:completionHandler:)];
@@ -160,7 +163,7 @@
{
}
-RetainPtr<NSMenu> UIDelegate::ContextMenuClient::menuFromProposedMenu(WebKit::WebPageProxy&, NSMenu *menu, const WebKit::WebHitTestResultData&, API::Object* userInfo)
+RetainPtr<NSMenu> UIDelegate::ContextMenuClient::menuFromProposedMenu(WebPageProxy&, NSMenu *menu, const WebHitTestResultData&, API::Object* userInfo)
{
if (!m_uiDelegate.m_delegateMethods.webViewContextMenuForElement && !m_uiDelegate.m_delegateMethods.webViewContextMenuForElementUserInfo)
return menu;
@@ -187,7 +190,7 @@
{
}
-RefPtr<WebKit::WebPageProxy> UIDelegate::UIClient::createNewPageCommon(WebKit::WebPageProxy* page, API::FrameInfo& sourceFrameInfo, WebCore::ResourceRequest&& request, const WebCore::WindowFeatures& windowFeatures, WebKit::NavigationActionData&& navigationActionData, WTF::Function<void(RefPtr<WebKit::WebPageProxy>&&)>&& completionHandler)
+RefPtr<WebPageProxy> UIDelegate::UIClient::createNewPageCommon(WebPageProxy* page, API::FrameInfo& sourceFrameInfo, WebCore::ResourceRequest&& request, const WebCore::WindowFeatures& windowFeatures, NavigationActionData&& navigationActionData, WTF::Function<void(RefPtr<WebPageProxy>&&)>&& completionHandler)
{
auto delegate = m_uiDelegate.m_delegate.get();
ASSERT(delegate);
@@ -263,7 +266,7 @@
createNewPageCommon(page, originatingFrameInfo, WTFMove(request), windowFeatures, WTFMove(navigationActionData), WTFMove(completionHandler));
}
-void UIDelegate::UIClient::runJavaScriptAlert(WebKit::WebPageProxy*, const WTF::String& message, WebKit::WebFrameProxy* webFrameProxy, const WebCore::SecurityOriginData& securityOriginData, Function<void ()>&& completionHandler)
+void UIDelegate::UIClient::runJavaScriptAlert(WebPageProxy*, const WTF::String& message, WebFrameProxy* webFrameProxy, const WebCore::SecurityOriginData& securityOriginData, Function<void()>&& completionHandler)
{
if (!m_uiDelegate.m_delegateMethods.webViewRunJavaScriptAlertPanelWithMessageInitiatedByFrameCompletionHandler) {
completionHandler();
@@ -285,7 +288,7 @@
}).get()];
}
-void UIDelegate::UIClient::runJavaScriptConfirm(WebKit::WebPageProxy*, const WTF::String& message, WebKit::WebFrameProxy* webFrameProxy, const WebCore::SecurityOriginData& securityOriginData, Function<void (bool)>&& completionHandler)
+void UIDelegate::UIClient::runJavaScriptConfirm(WebPageProxy*, const WTF::String& message, WebFrameProxy* webFrameProxy, const WebCore::SecurityOriginData& securityOriginData, Function<void(bool)>&& completionHandler)
{
if (!m_uiDelegate.m_delegateMethods.webViewRunJavaScriptConfirmPanelWithMessageInitiatedByFrameCompletionHandler) {
completionHandler(false);
@@ -307,7 +310,7 @@
}).get()];
}
-void UIDelegate::UIClient::runJavaScriptPrompt(WebKit::WebPageProxy*, const WTF::String& message, const WTF::String& defaultValue, WebKit::WebFrameProxy* webFrameProxy, const WebCore::SecurityOriginData& securityOriginData, Function<void (const WTF::String&)>&& completionHandler)
+void UIDelegate::UIClient::runJavaScriptPrompt(WebPageProxy*, const WTF::String& message, const WTF::String& defaultValue, WebFrameProxy* webFrameProxy, const WebCore::SecurityOriginData& securityOriginData, Function<void(const WTF::String&)>&& completionHandler)
{
if (!m_uiDelegate.m_delegateMethods.webViewRunJavaScriptTextInputPanelWithPromptDefaultTextInitiatedByFrameCompletionHandler) {
completionHandler(String());
@@ -334,7 +337,7 @@
return m_uiDelegate.m_delegateMethods.webViewRunBeforeUnloadConfirmPanelWithMessageInitiatedByFrameCompletionHandler;
}
-void UIDelegate::UIClient::runBeforeUnloadConfirmPanel(WebKit::WebPageProxy*, const WTF::String& message, WebKit::WebFrameProxy* webFrameProxy, const WebCore::SecurityOriginData& securityOriginData, Function<void (bool)>&& completionHandler)
+void UIDelegate::UIClient::runBeforeUnloadConfirmPanel(WebPageProxy*, const WTF::String& message, WebFrameProxy* webFrameProxy, const WebCore::SecurityOriginData& securityOriginData, Function<void(bool)>&& completionHandler)
{
if (!m_uiDelegate.m_delegateMethods.webViewRunBeforeUnloadConfirmPanelWithMessageInitiatedByFrameCompletionHandler) {
completionHandler(false);
@@ -396,7 +399,7 @@
return _WKFocusDirectionForward;
}
-void UIDelegate::UIClient::takeFocus(WebKit::WebPageProxy*, WKFocusDirection direction)
+void UIDelegate::UIClient::takeFocus(WebPageProxy*, WKFocusDirection direction)
{
if (!m_uiDelegate.m_delegateMethods.webViewTakeFocus)
return;
@@ -408,7 +411,7 @@
[(id <WKUIDelegatePrivate>)delegate _webView:m_uiDelegate.m_webView takeFocus:toWKFocusDirection(direction)];
}
-void UIDelegate::UIClient::focus(WebKit::WebPageProxy*)
+void UIDelegate::UIClient::focus(WebPageProxy*)
{
if (!m_uiDelegate.m_delegateMethods.focusWebView)
return;
@@ -420,7 +423,7 @@
[(id <WKUIDelegatePrivate>)delegate _focusWebView:m_uiDelegate.m_webView];
}
-void UIDelegate::UIClient::unfocus(WebKit::WebPageProxy*)
+void UIDelegate::UIClient::unfocus(WebPageProxy*)
{
if (!m_uiDelegate.m_delegateMethods.unfocusWebView)
return;
@@ -470,7 +473,7 @@
return _WKResourceLimitMemory;
}
-void UIDelegate::UIClient::didExceedBackgroundResourceLimitWhileInForeground(WebKit::WebPageProxy&, WKResourceLimit limit)
+void UIDelegate::UIClient::didExceedBackgroundResourceLimitWhileInForeground(WebPageProxy&, WKResourceLimit limit)
{
if (!m_uiDelegate.m_delegateMethods.webViewDidExceedBackgroundResourceLimitWhileInForeground)
return;
@@ -482,7 +485,7 @@
[static_cast<id <WKUIDelegatePrivate>>(delegate) _webView:m_uiDelegate.m_webView didExceedBackgroundResourceLimitWhileInForeground:toWKResourceLimit(limit)];
}
-void UIDelegate::UIClient::didNotHandleWheelEvent(WebKit::WebPageProxy*, const WebKit::NativeWebWheelEvent& event)
+void UIDelegate::UIClient::didNotHandleWheelEvent(WebPageProxy*, const NativeWebWheelEvent& event)
{
if (!m_uiDelegate.m_delegateMethods.webViewDidNotHandleWheelEvent)
return;
@@ -494,6 +497,35 @@
[(id <WKUIDelegatePrivate>)delegate _webView:m_uiDelegate.m_webView didNotHandleWheelEvent:event.nativeEvent()];
}
+static NSEventModifierFlags toNSEventModifierFlags(WebEvent::Modifiers modifiers)
+{
+ NSEventModifierFlags flags = 0;
+ if (modifiers & WebEvent::ShiftKey)
+ flags |= NSEventModifierFlagShift;
+ if (modifiers & WebEvent::ControlKey)
+ flags |= NSEventModifierFlagControl;
+ if (modifiers & WebEvent::AltKey)
+ flags |= NSEventModifierFlagOption;
+ if (modifiers & WebEvent::MetaKey)
+ flags |= NSEventModifierFlagCommand;
+ if (modifiers & WebEvent::CapsLockKey)
+ flags |= NSEventModifierFlagCapsLock;
+ return flags;
+}
+
+void UIDelegate::UIClient::mouseDidMoveOverElement(WebPageProxy&, const WebHitTestResultData& data, WebEvent::Modifiers modifiers, API::Object* userInfo)
+{
+ if (!m_uiDelegate.m_delegateMethods.webViewMouseDidMoveOverElementWithFlagsUserInfo)
+ return;
+
+ auto delegate = m_uiDelegate.m_delegate.get();
+ if (!delegate)
+ return;
+
+ auto apiHitTestResult = API::HitTestResult::create(data);
+ [(id <WKUIDelegatePrivate>)delegate _webView:m_uiDelegate.m_webView mouseDidMoveOverElement:wrapper(apiHitTestResult.get()) withFlags:toNSEventModifierFlags(modifiers) userInfo:userInfo ? static_cast<id <NSSecureCoding>>(userInfo->wrapper()) : nil];
+}
+
static _WKAutoplayEventFlags toWKAutoplayEventFlags(OptionSet<WebCore::AutoplayEventFlags> flags)
{
_WKAutoplayEventFlags wkFlags = _WKAutoplayEventFlagsNone;
@@ -519,7 +551,7 @@
return _WKAutoplayEventDidPlayMediaPreventedFromAutoplaying;
}
-void UIDelegate::UIClient::toolbarsAreVisible(WebKit::WebPageProxy&, Function<void(bool)>&& completionHandler)
+void UIDelegate::UIClient::toolbarsAreVisible(WebPageProxy&, Function<void(bool)>&& completionHandler)
{
if (!m_uiDelegate.m_delegateMethods.webViewGetToolbarsAreVisibleWithCompletionHandler)
return completionHandler(true);
@@ -545,10 +577,10 @@
if (!delegate)
return;
- [(id <WKUIDelegatePrivate>)delegate _webView:m_uiDelegate.m_webView didClickAutoFillButtonWithUserInfo:userInfo ?static_cast<id <NSSecureCoding>>(userInfo->wrapper()) : nil];
+ [(id <WKUIDelegatePrivate>)delegate _webView:m_uiDelegate.m_webView didClickAutoFillButtonWithUserInfo:userInfo ? static_cast<id <NSSecureCoding>>(userInfo->wrapper()) : nil];
}
-void UIDelegate::UIClient::handleAutoplayEvent(WebKit::WebPageProxy&, WebCore::AutoplayEvent event, OptionSet<WebCore::AutoplayEventFlags> flags)
+void UIDelegate::UIClient::handleAutoplayEvent(WebPageProxy&, WebCore::AutoplayEvent event, OptionSet<WebCore::AutoplayEventFlags> flags)
{
if (!m_uiDelegate.m_delegateMethods.webViewHandleAutoplayEventWithFlags)
return;
@@ -619,7 +651,7 @@
}
#endif
-static void requestUserMediaAuthorizationForDevices(const WebKit::WebFrameProxy& frame, WebKit::UserMediaPermissionRequestProxy& request, id <WKUIDelegatePrivate> delegate, WKWebView& webView)
+static void requestUserMediaAuthorizationForDevices(const WebFrameProxy& frame, UserMediaPermissionRequestProxy& request, id <WKUIDelegatePrivate> delegate, WKWebView& webView)
{
auto decisionHandler = BlockPtr<void(BOOL)>::fromCallable([protectedRequest = makeRef(request)](BOOL authorized) {
if (!authorized) {
@@ -645,7 +677,7 @@
[delegate _webView:protectedWebView.get() requestUserMediaAuthorizationForDevices:devices url:requestFrameURL mainFrameURL:mainFrameURL decisionHandler:decisionHandler.get()];
}
-bool UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest(WebKit::WebPageProxy& page, WebKit::WebFrameProxy& frame, API::SecurityOrigin& userMediaOrigin, API::SecurityOrigin& topLevelOrigin, WebKit::UserMediaPermissionRequestProxy& request)
+bool UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest(WebPageProxy& page, WebFrameProxy& frame, API::SecurityOrigin& userMediaOrigin, API::SecurityOrigin& topLevelOrigin, UserMediaPermissionRequestProxy& request)
{
auto delegate = m_uiDelegate.m_delegate.get();
if (!delegate || !m_uiDelegate.m_delegateMethods.webViewRequestUserMediaAuthorizationForDevicesURLMainFrameURLDecisionHandler) {
@@ -721,7 +753,7 @@
return true;
}
-bool UIDelegate::UIClient::checkUserMediaPermissionForOrigin(WebKit::WebPageProxy& page, WebKit::WebFrameProxy& frame, API::SecurityOrigin& userMediaOrigin, API::SecurityOrigin& topLevelOrigin, WebKit::UserMediaPermissionCheckProxy& request)
+bool UIDelegate::UIClient::checkUserMediaPermissionForOrigin(WebPageProxy& page, WebFrameProxy& frame, API::SecurityOrigin& userMediaOrigin, API::SecurityOrigin& topLevelOrigin, UserMediaPermissionCheckProxy& request)
{
auto delegate = m_uiDelegate.m_delegate.get();
if (!delegate || !m_uiDelegate.m_delegateMethods.webViewCheckUserMediaPermissionForURLMainFrameURLFrameIdentifierDecisionHandler) {
@@ -787,7 +819,7 @@
}).get()];
}
-void UIDelegate::UIClient::printFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy* webFrameProxy)
+void UIDelegate::UIClient::printFrame(WebPageProxy*, WebFrameProxy* webFrameProxy)
{
ASSERT_ARG(webFrameProxy, webFrameProxy);
@@ -801,7 +833,7 @@
[(id <WKUIDelegatePrivate>)delegate _webView:m_uiDelegate.m_webView printFrame:wrapper(API::FrameHandle::create(webFrameProxy->frameID()))];
}
-void UIDelegate::UIClient::close(WebKit::WebPageProxy*)
+void UIDelegate::UIClient::close(WebPageProxy*)
{
if (m_uiDelegate.m_delegateMethods.webViewClose) {
auto delegate = m_uiDelegate.m_delegate.get();
@@ -822,7 +854,7 @@
[delegate webViewDidClose:m_uiDelegate.m_webView];
}
-void UIDelegate::UIClient::fullscreenMayReturnToInline(WebKit::WebPageProxy*)
+void UIDelegate::UIClient::fullscreenMayReturnToInline(WebPageProxy*)
{
if (!m_uiDelegate.m_delegateMethods.webViewFullscreenMayReturnToInline)
return;
@@ -834,7 +866,7 @@
[(id <WKUIDelegatePrivate>)delegate _webViewFullscreenMayReturnToInline:m_uiDelegate.m_webView];
}
-void UIDelegate::UIClient::didEnterFullscreen(WebKit::WebPageProxy*)
+void UIDelegate::UIClient::didEnterFullscreen(WebPageProxy*)
{
if (!m_uiDelegate.m_delegateMethods.webViewDidEnterFullscreen)
return;
@@ -846,7 +878,7 @@
[(id <WKUIDelegatePrivate>)delegate _webViewDidEnterFullscreen:m_uiDelegate.m_webView];
}
-void UIDelegate::UIClient::didExitFullscreen(WebKit::WebPageProxy*)
+void UIDelegate::UIClient::didExitFullscreen(WebPageProxy*)
{
if (!m_uiDelegate.m_delegateMethods.webViewDidExitFullscreen)
return;
@@ -925,7 +957,7 @@
#if ENABLE(POINTER_LOCK)
-void UIDelegate::UIClient::requestPointerLock(WebKit::WebPageProxy*)
+void UIDelegate::UIClient::requestPointerLock(WebPageProxy*)
{
if (!m_uiDelegate.m_delegateMethods.webViewRequestPointerLock)
return;
@@ -937,7 +969,7 @@
[static_cast<id <WKUIDelegatePrivate>>(delegate) _webViewRequestPointerLock:m_uiDelegate.m_webView];
}
-void UIDelegate::UIClient::didLosePointerLock(WebKit::WebPageProxy*)
+void UIDelegate::UIClient::didLosePointerLock(WebPageProxy*)
{
if (!m_uiDelegate.m_delegateMethods.webViewDidLosePointerLock)
return;
@@ -951,7 +983,7 @@
#endif
-void UIDelegate::UIClient::hasVideoInPictureInPictureDidChange(WebKit::WebPageProxy*, bool hasVideoInPictureInPicture)
+void UIDelegate::UIClient::hasVideoInPictureInPictureDidChange(WebPageProxy*, bool hasVideoInPictureInPicture)
{
if (!m_uiDelegate.m_delegateMethods.webViewHasVideoInPictureInPictureDidChange)
return;
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (221657 => 221658)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2017-09-06 01:18:15 UTC (rev 221657)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2017-09-06 01:23:38 UTC (rev 221658)
@@ -3980,13 +3980,13 @@
m_uiClient->setStatusText(this, text);
}
-void WebPageProxy::mouseDidMoveOverElement(const WebHitTestResultData& hitTestResultData, uint32_t opaqueModifiers, const UserData& userData)
+void WebPageProxy::mouseDidMoveOverElement(WebHitTestResultData&& hitTestResultData, uint32_t opaqueModifiers, UserData&& userData)
{
m_lastMouseMoveHitTestResult = API::HitTestResult::create(hitTestResultData);
WebEvent::Modifiers modifiers = static_cast<WebEvent::Modifiers>(opaqueModifiers);
- m_uiClient->mouseDidMoveOverElement(this, hitTestResultData, modifiers, m_process->transformHandlesToObjects(userData.object()).get());
+ m_uiClient->mouseDidMoveOverElement(*this, hitTestResultData, modifiers, m_process->transformHandlesToObjects(userData.object()).get());
}
void WebPageProxy::connectionWillOpen(IPC::Connection& connection)
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.h (221657 => 221658)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.h 2017-09-06 01:18:15 UTC (rev 221657)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.h 2017-09-06 01:23:38 UTC (rev 221658)
@@ -1296,7 +1296,7 @@
void runJavaScriptConfirm(uint64_t frameID, const WebCore::SecurityOriginData&, const String&, Ref<Messages::WebPageProxy::RunJavaScriptConfirm::DelayedReply>&&);
void runJavaScriptPrompt(uint64_t frameID, const WebCore::SecurityOriginData&, const String&, const String&, RefPtr<Messages::WebPageProxy::RunJavaScriptPrompt::DelayedReply>);
void setStatusText(const String&);
- void mouseDidMoveOverElement(const WebHitTestResultData&, uint32_t modifiers, const UserData&);
+ void mouseDidMoveOverElement(WebHitTestResultData&&, uint32_t modifiers, UserData&&);
#if ENABLE(NETSCAPE_PLUGIN_API)
void unavailablePluginButtonClicked(uint32_t opaquePluginUnavailabilityReason, const String& mimeType, const String& pluginURLString, const String& pluginsPageURLString, const String& frameURLString, const String& pageURLString);
Modified: trunk/Tools/ChangeLog (221657 => 221658)
--- trunk/Tools/ChangeLog 2017-09-06 01:18:15 UTC (rev 221657)
+++ trunk/Tools/ChangeLog 2017-09-06 01:23:38 UTC (rev 221658)
@@ -1,3 +1,18 @@
+2017-09-05 Alex Christensen <achristen...@webkit.org>
+
+ Add WKUIDelegatePrivate equivalent of WKPageUIClient's mouseDidMoveOverElement
+ https://bugs.webkit.org/show_bug.cgi?id=176428
+ <rdar://problem/29270035>
+
+ Reviewed by Tim Horton.
+
+ * TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:
+ (-[MouseMoveOverElementDelegate _webView:mouseDidMoveOverElement:withFlags:userInfo:]):
+ (TEST):
+ * TestWebKitAPI/cocoa/TestWKWebView.h:
+ * TestWebKitAPI/cocoa/TestWKWebView.mm:
+ (-[TestWKWebView mouseMoveToPoint:withFlags:]):
+
2017-09-05 Matthew Stewart <matthew_r_stew...@apple.com>
Benchmark Runner WebDriver maximize window on browser launch
Modified: trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm (221657 => 221658)
--- trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm 2017-09-06 01:18:15 UTC (rev 221657)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm 2017-09-06 01:23:38 UTC (rev 221658)
@@ -35,6 +35,7 @@
#import <WebKit/WKRetainPtr.h>
#import <WebKit/WKUIDelegatePrivate.h>
#import <WebKit/WKWebViewPrivate.h>
+#import <WebKit/_WKHitTestResult.h>
#import <wtf/RetainPtr.h>
#if PLATFORM(MAC)
@@ -186,6 +187,31 @@
TestWebKitAPI::Util::run(&done);
}
+@interface MouseMoveOverElementDelegate : NSObject <WKUIDelegatePrivate>
+@end
+
+@implementation MouseMoveOverElementDelegate
+
+- (void)_webView:(WKWebView *)webview mouseDidMoveOverElement:(_WKHitTestResult *)hitTestResult withFlags:(NSEventModifierFlags)flags userInfo:(id <NSSecureCoding>)userInfo
+{
+ EXPECT_STREQ(hitTestResult.absoluteLinkURL.absoluteString.UTF8String, "http://example.com/path");
+ EXPECT_STREQ(hitTestResult.linkLabel.UTF8String, "link label");
+ EXPECT_STREQ(hitTestResult.linkTitle.UTF8String, "link title");
+ EXPECT_EQ(flags, NSEventModifierFlagShift);
+ done = true;
+}
+
+@end
+
+TEST(WebKit, MouseMoveOverElement)
+{
+ auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:CGRectMake(0, 0, 800, 600)]);
+ [webView setUIDelegate:[[[MouseMoveOverElementDelegate alloc] init] autorelease]];
+ [webView synchronouslyLoadHTMLString:@"<a href='' title='link title'>link label</a>"];
+ [webView mouseMoveToPoint:NSMakePoint(20, 600 - 20) withFlags:NSEventModifierFlagShift];
+ TestWebKitAPI::Util::run(&done);
+}
+
static bool readyForClick;
@interface AutoFillDelegate : NSObject <WKUIDelegatePrivate>
Modified: trunk/Tools/TestWebKitAPI/cocoa/TestWKWebView.h (221657 => 221658)
--- trunk/Tools/TestWebKitAPI/cocoa/TestWKWebView.h 2017-09-06 01:18:15 UTC (rev 221657)
+++ trunk/Tools/TestWebKitAPI/cocoa/TestWKWebView.h 2017-09-06 01:23:38 UTC (rev 221658)
@@ -63,6 +63,7 @@
// Simulates clicking with a pressure-sensitive device, if possible.
- (void)mouseDownAtPoint:(NSPoint)point simulatePressure:(BOOL)simulatePressure;
- (void)mouseUpAtPoint:(NSPoint)point;
+- (void)mouseMoveToPoint:(NSPoint)point withFlags:(NSEventModifierFlags)flags;
- (void)sendClicksAtPoint:(NSPoint)point numberOfClicks:(NSUInteger)numberOfClicks;
- (void)typeCharacter:(char)character;
@end
Modified: trunk/Tools/TestWebKitAPI/cocoa/TestWKWebView.mm (221657 => 221658)
--- trunk/Tools/TestWebKitAPI/cocoa/TestWKWebView.mm 2017-09-06 01:18:15 UTC (rev 221657)
+++ trunk/Tools/TestWebKitAPI/cocoa/TestWKWebView.mm 2017-09-06 01:23:38 UTC (rev 221658)
@@ -336,6 +336,11 @@
[_hostWindow _mouseUpAtPoint:point clickCount:1];
}
+- (void)mouseMoveToPoint:(NSPoint)point withFlags:(NSEventModifierFlags)flags
+{
+ [self mouseMoved:[NSEvent mouseEventWithType:NSEventTypeMouseMoved location:point modifierFlags:flags timestamp:GetCurrentEventTime() windowNumber:[_hostWindow windowNumber] context:[NSGraphicsContext currentContext] eventNumber:++gEventNumber clickCount:0 pressure:0]];
+}
+
- (void)sendClicksAtPoint:(NSPoint)point numberOfClicks:(NSUInteger)numberOfClicks
{
for (NSUInteger clickCount = 1; clickCount <= numberOfClicks; ++clickCount) {