[webkit-changes] [WebKit/WebKit] 544810: Cherry-pick ae690092de53. rdar://problem/106207015
J Pascoe
noreply at github.com
Fri Mar 3 19:02:31 PST 2023
Branch: refs/heads/safari-7616.1.5-branch
Home: https://github.com/WebKit/WebKit
Commit: 544810005c51b596a7823c29b139e005e745ebb4
https://github.com/WebKit/WebKit/commit/544810005c51b596a7823c29b139e005e745ebb4
Author: J Pascoe <j_pascoe at apple.com>
Date: 2023-03-03 (Fri, 03 Mar 2023)
Changed paths:
M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml
M Source/WebCore/dom/UserGestureIndicator.cpp
M Source/WebCore/dom/UserGestureIndicator.h
M Source/WebCore/page/EventHandler.cpp
M Source/WebCore/platform/PlatformEvent.h
M Source/WebCore/platform/PlatformMouseEvent.h
M Source/WebKit/Shared/NavigationActionData.h
M Source/WebKit/Shared/NavigationActionData.serialization.in
M Source/WebKit/Shared/WebEvent.cpp
M Source/WebKit/Shared/WebEvent.h
M Source/WebKit/Shared/WebEvent.serialization.in
M Source/WebKit/Shared/WebEventConversion.cpp
M Source/WebKit/Shared/mac/WebEventFactory.mm
M Source/WebKit/UIProcess/API/APIUserInitiatedAction.h
M Source/WebKit/UIProcess/API/Cocoa/WKPreferences.mm
M Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Source/WebKit/UIProcess/WebProcessProxy.cpp
M Source/WebKit/UIProcess/WebProcessProxy.h
M Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp
M Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp
Log Message:
-----------
Cherry-pick ae690092de53. rdar://problem/106207015
Cherry-pick 261190 at main (ae690092de53). rdar://problem/106207015
Verify user gesture for popups originated from UI process
https://bugs.webkit.org/show_bug.cgi?id=253338
rdar://problem/106207015
Reviewed by Chris Dumez
For certain actions like opening a new window, we don't want the web process to be
able to fake a user gesture to the client. This patch accomplishes that by creating
an identifier whenever we parse the input event, storing it, and then invalidating it
whenever we get it back from a WebProcess wanting to perform an action where we don't
want to trust simulated gestures.
* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:
* Source/WebCore/dom/UserGestureIndicator.cpp:
(WebCore::UserGestureToken::UserGestureToken):
(WebCore::UserGestureIndicator::UserGestureIndicator):
(WebCore::UserGestureIndicator::authorizationToken):
* Source/WebCore/dom/UserGestureIndicator.h:
(WebCore::UserGestureToken::create):
(WebCore::UserGestureToken::authorizationToken):
* Source/WebCore/page/EventHandler.cpp:
(WebCore::EventHandler::handleMouseReleaseEvent):
* Source/WebCore/platform/PlatformEvent.h:
(WebCore::PlatformEvent::authorizationToken const):
* Source/WebCore/platform/PlatformMouseEvent.h:
* Source/WebKit/Shared/NavigationActionData.h:
* Source/WebKit/Shared/NavigationActionData.serialization.in:
* Source/WebKit/Shared/WebEvent.cpp:
(WebKit::WebEvent::WebEvent):
* Source/WebKit/Shared/WebEvent.h:
(WebKit::WebEvent::authorizationToken const):
* Source/WebKit/Shared/WebEvent.serialization.in:
* Source/WebKit/Shared/WebEventConversion.cpp:
(WebKit::WebKit2PlatformMouseEvent::WebKit2PlatformMouseEvent):
* Source/WebKit/Shared/mac/WebEventFactory.mm:
(WebKit::WebEventFactory::createWebMouseEvent):
(WebKit::WebEventFactory::createWebWheelEvent):
(WebKit::WebEventFactory::createWebKeyboardEvent):
* Source/WebKit/UIProcess/API/APIUserInitiatedAction.h:
* Source/WebKit/UIProcess/API/Cocoa/WKPreferences.mm:
(-[WKPreferences _setVerifyWindowOpenUserGestureFromUIProcess:]):
(-[WKPreferences _verifyWindowOpenUserGestureFromUIProcess]):
* Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h:
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::processNextQueuedMouseEvent):
(WebKit::WebPageProxy::handleKeyboardEvent):
(WebKit::WebPageProxy::createNewPage):
(WebKit::WebPageProxy::didReceiveEvent):
* Source/WebKit/UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::userInitiatedActivity):
(WebKit::WebProcessProxy::consumeIfNotVerifiablyFromUIProcess):
(WebKit::WebProcessProxy::didDestroyUserGestureToken):
* Source/WebKit/UIProcess/WebProcessProxy.h:
* Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::createWindow):
* Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::didSameDocumentNavigationForFrameViaJSHistoryAPI):
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
Canonical link: https://commits.webkit.org/261190@main
Canonical link: https://commits.webkit.org/261058.4@safari-7616.1.5-branch
More information about the webkit-changes
mailing list