Diff
Modified: trunk/Source/WebCore/ChangeLog (262394 => 262395)
--- trunk/Source/WebCore/ChangeLog 2020-06-01 21:25:45 UTC (rev 262394)
+++ trunk/Source/WebCore/ChangeLog 2020-06-01 22:04:42 UTC (rev 262395)
@@ -1,3 +1,18 @@
+2020-06-01 David Kilzer <ddkil...@apple.com>
+
+ Don't use casts to convert between WebCore::DragDestinationAction and {Web,WK}DragDestinationAction types
+ <https://webkit.org/b/212507>
+
+ Reviewed by Darin Adler.
+
+ * page/DragActions.h:
+ (WebCore::anyDragDestinationAction): Add.
+ (WebCore::DragDestinationActionAny): Delete.
+ - Rename DragDestinationActionAny() to
+ anyDragDestinationAction() to match WebKit style.
+ * platform/DragData.h:
+ - Update to use anyDragDestinationAction().
+
2020-06-01 Simon Fraser <simon.fra...@apple.com>
Add ENABLE(TOUCH_ACTION_REGIONS) to wrap code that's only relevant for platforms that consult touch-action for event handling
Modified: trunk/Source/WebCore/page/DragActions.h (262394 => 262395)
--- trunk/Source/WebCore/page/DragActions.h 2020-06-01 21:25:45 UTC (rev 262394)
+++ trunk/Source/WebCore/page/DragActions.h 2020-06-01 22:04:42 UTC (rev 262395)
@@ -32,7 +32,7 @@
namespace WebCore {
-// WebCore::DragDestinationAction must be kept in sync with WebDragDestinationAction and WKDragDestinationAction.
+// See WebDragDestinationAction and WKDragDestinationAction.
enum class DragDestinationAction : uint8_t {
DHTML = 1,
Edit = 2,
@@ -39,7 +39,7 @@
Load = 4
};
-inline constexpr OptionSet<DragDestinationAction> DragDestinationActionAny()
+constexpr OptionSet<DragDestinationAction> anyDragDestinationAction()
{
return OptionSet<DragDestinationAction> { DragDestinationAction::DHTML, DragDestinationAction::Edit, DragDestinationAction::Load };
}
Modified: trunk/Source/WebCore/platform/DragData.h (262394 => 262395)
--- trunk/Source/WebCore/platform/DragData.h 2020-06-01 21:25:45 UTC (rev 262394)
+++ trunk/Source/WebCore/platform/DragData.h 2020-06-01 22:04:42 UTC (rev 262395)
@@ -75,8 +75,8 @@
enum class DraggingPurpose { ForEditing, ForFileUpload, ForColorControl };
// clientPosition is taken to be the position of the drag event within the target window, with (0,0) at the top left
- WEBCORE_EXPORT DragData(DragDataRef, const IntPoint& clientPosition, const IntPoint& globalPosition, DragOperation, DragApplicationFlags = DragApplicationNone, OptionSet<DragDestinationAction> actionMask = DragDestinationActionAny());
- WEBCORE_EXPORT DragData(const String& dragStorageName, const IntPoint& clientPosition, const IntPoint& globalPosition, DragOperation, DragApplicationFlags = DragApplicationNone, OptionSet<DragDestinationAction> actionMask = DragDestinationActionAny());
+ WEBCORE_EXPORT DragData(DragDataRef, const IntPoint& clientPosition, const IntPoint& globalPosition, DragOperation, DragApplicationFlags = DragApplicationNone, OptionSet<DragDestinationAction> = anyDragDestinationAction());
+ WEBCORE_EXPORT DragData(const String& dragStorageName, const IntPoint& clientPosition, const IntPoint& globalPosition, DragOperation, DragApplicationFlags = DragApplicationNone, OptionSet<DragDestinationAction> = anyDragDestinationAction());
// This constructor should used only by WebKit2 IPC because DragData
// is initialized by the decoder and not in the constructor.
DragData() = default;
Modified: trunk/Source/WebKit/ChangeLog (262394 => 262395)
--- trunk/Source/WebKit/ChangeLog 2020-06-01 21:25:45 UTC (rev 262394)
+++ trunk/Source/WebKit/ChangeLog 2020-06-01 22:04:42 UTC (rev 262395)
@@ -1,3 +1,24 @@
+2020-06-01 David Kilzer <ddkil...@apple.com>
+
+ Don't use casts to convert between WebCore::DragDestinationAction and {Web,WK}DragDestinationAction types
+ <https://webkit.org/b/212507>
+
+ Reviewed by Darin Adler.
+
+ * Shared/API/Cocoa/_WKDragActionsInternal.h: Add.
+ (WebKit::coreDragDestinationActionMask):
+ - Add conversion function to avoid casting.
+ * UIProcess/Cocoa/WebViewImpl.mm:
+ (WebKit::WebViewImpl::draggingEntered):
+ (WebKit::WebViewImpl::draggingUpdated):
+ * UIProcess/ios/WKContentViewInteraction.mm:
+ (-[WKContentView dragDataForDropSession:dragDestinationAction:]):
+ - Make use of coreDragDestinationActionMask() conversion
+ function.
+ - Extract `dragOperationMask` varible for future updates.
+ * WebKit.xcodeproj/project.pbxproj:
+ - Add _WKDragActionsInternal.h to project.
+
2020-06-01 Alex Christensen <achristen...@webkit.org>
Fix Glib build after r262391
Added: trunk/Source/WebKit/Shared/API/Cocoa/_WKDragActionsInternal.h (0 => 262395)
--- trunk/Source/WebKit/Shared/API/Cocoa/_WKDragActionsInternal.h (rev 0)
+++ trunk/Source/WebKit/Shared/API/Cocoa/_WKDragActionsInternal.h 2020-06-01 22:04:42 UTC (rev 262395)
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2020 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import <WebCore/DragActions.h>
+#import <WebKit/WKDragDestinationAction.h>
+
+namespace WebKit {
+
+inline OptionSet<WebCore::DragDestinationAction> coreDragDestinationActionMask(WKDragDestinationAction action)
+{
+ OptionSet<WebCore::DragDestinationAction> result;
+ if (action & WKDragDestinationActionDHTML)
+ result.add(WebCore::DragDestinationAction::DHTML);
+ if (action & WKDragDestinationActionEdit)
+ result.add(WebCore::DragDestinationAction::Edit);
+ if (action & WKDragDestinationActionLoad)
+ result.add(WebCore::DragDestinationAction::Load);
+ return result;
+}
+
+} // namespace WebKit
Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm (262394 => 262395)
--- trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm 2020-06-01 21:25:45 UTC (rev 262394)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm 2020-06-01 22:04:42 UTC (rev 262395)
@@ -76,6 +76,7 @@
#import "WebPageProxy.h"
#import "WebProcessPool.h"
#import "WebProcessProxy.h"
+#import "_WKDragActionsInternal.h"
#import "_WKRemoteObjectRegistryInternal.h"
#import "_WKThumbnailViewInternal.h"
#import <Carbon/Carbon.h>
@@ -3945,8 +3946,9 @@
{
WebCore::IntPoint client([m_view convertPoint:draggingInfo.draggingLocation fromView:nil]);
WebCore::IntPoint global(WebCore::globalPoint(draggingInfo.draggingLocation, [m_view window]));
- auto dragDestinationActionMask = OptionSet<WebCore::DragDestinationAction>::fromRaw([m_view _web_dragDestinationActionForDraggingInfo:draggingInfo]);
- WebCore::DragData dragData(draggingInfo, client, global, static_cast<WebCore::DragOperation>(draggingInfo.draggingSourceOperationMask), applicationFlagsForDrag(m_view.getAutoreleased(), draggingInfo), dragDestinationActionMask);
+ auto dragDestinationActionMask = coreDragDestinationActionMask([m_view _web_dragDestinationActionForDraggingInfo:draggingInfo]);
+ auto dragOperationMask = static_cast<WebCore::DragOperation>(draggingInfo.draggingSourceOperationMask);
+ WebCore::DragData dragData(draggingInfo, client, global, dragOperationMask, applicationFlagsForDrag(m_view.getAutoreleased(), draggingInfo), dragDestinationActionMask);
m_page->resetCurrentDragInformation();
m_page->dragEntered(dragData, draggingInfo.draggingPasteboard.name);
@@ -3958,8 +3960,9 @@
{
WebCore::IntPoint client([m_view convertPoint:draggingInfo.draggingLocation fromView:nil]);
WebCore::IntPoint global(WebCore::globalPoint(draggingInfo.draggingLocation, [m_view window]));
- auto dragDestinationActionMask = OptionSet<WebCore::DragDestinationAction>::fromRaw([m_view _web_dragDestinationActionForDraggingInfo:draggingInfo]);
- WebCore::DragData dragData(draggingInfo, client, global, static_cast<WebCore::DragOperation>(draggingInfo.draggingSourceOperationMask), applicationFlagsForDrag(m_view.getAutoreleased(), draggingInfo), dragDestinationActionMask);
+ auto dragDestinationActionMask = coreDragDestinationActionMask([m_view _web_dragDestinationActionForDraggingInfo:draggingInfo]);
+ auto dragOperationMask = static_cast<WebCore::DragOperation>(draggingInfo.draggingSourceOperationMask);
+ WebCore::DragData dragData(draggingInfo, client, global, dragOperationMask, applicationFlagsForDrag(m_view.getAutoreleased(), draggingInfo), dragDestinationActionMask);
m_page->dragUpdated(dragData, draggingInfo.draggingPasteboard.name);
NSInteger numberOfValidItemsForDrop = m_page->currentDragNumberOfFilesToBeAccepted();
Modified: trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm (262394 => 262395)
--- trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm 2020-06-01 21:25:45 UTC (rev 262394)
+++ trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm 2020-06-01 22:04:42 UTC (rev 262395)
@@ -86,6 +86,7 @@
#import "WebPageProxyMessages.h"
#import "WebProcessProxy.h"
#import "_WKActivatedElementInfoInternal.h"
+#import "_WKDragActionsInternal.h"
#import "_WKElementAction.h"
#import "_WKElementActionInternal.h"
#import "_WKFocusedElementInfo.h"
@@ -7320,8 +7321,7 @@
[self computeClientAndGlobalPointsForDropSession:session outClientPoint:&client outGlobalPoint:&global];
WebCore::DragOperation dragOperationMask = static_cast<WebCore::DragOperation>(session.allowsMoveOperation ? WebCore::DragOperationEvery : (WebCore::DragOperationEvery & ~WebCore::DragOperationMove));
- auto dragDestinationActionMask = OptionSet<WebCore::DragDestinationAction>::fromRaw(dragDestinationAction);
- return { session, WebCore::roundedIntPoint(client), WebCore::roundedIntPoint(global), dragOperationMask, WebCore::DragApplicationNone, dragDestinationActionMask };
+ return { session, WebCore::roundedIntPoint(client), WebCore::roundedIntPoint(global), dragOperationMask, WebCore::DragApplicationNone, WebKit::coreDragDestinationActionMask(dragDestinationAction) };
}
- (void)cleanUpDragSourceSessionState
Modified: trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj (262394 => 262395)
--- trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj 2020-06-01 21:25:45 UTC (rev 262394)
+++ trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj 2020-06-01 22:04:42 UTC (rev 262395)
@@ -937,6 +937,7 @@
4482734724528F6000A95493 /* CocoaImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 4482734624528F6000A95493 /* CocoaImage.h */; };
449D90DA21FDC30B00F677C0 /* LocalAuthenticationSoftLink.mm in Sources */ = {isa = PBXBuildFile; fileRef = 449D90D821FD63FE00F677C0 /* LocalAuthenticationSoftLink.mm */; };
44E936FD2447C2D8009FA3E3 /* LegacyCustomProtocolID.h in Headers */ = {isa = PBXBuildFile; fileRef = 44E936FC2447C256009FA3E3 /* LegacyCustomProtocolID.h */; };
+ 44EC3EA9247F5C090059489C /* _WKDragActionsInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 44EC3EA8247F5C080059489C /* _WKDragActionsInternal.h */; };
460F488F1F996F7100CF4B87 /* WebSWContextManagerConnectionMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 460F488D1F996F6C00CF4B87 /* WebSWContextManagerConnectionMessageReceiver.cpp */; };
460F48901F996F7100CF4B87 /* WebSWContextManagerConnectionMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 460F488E1F996F6C00CF4B87 /* WebSWContextManagerConnectionMessages.h */; };
461CCCA5231485A700B659B9 /* UIRemoteObjectRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = 463236852314833F00A48FA7 /* UIRemoteObjectRegistry.h */; };
@@ -3536,6 +3537,7 @@
449D90D821FD63FE00F677C0 /* LocalAuthenticationSoftLink.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = LocalAuthenticationSoftLink.mm; sourceTree = "<group>"; };
44A481C621F2D27B00F2F919 /* ClientCertificateAuthenticationXPCConstants.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ClientCertificateAuthenticationXPCConstants.cpp; sourceTree = "<group>"; };
44E936FC2447C256009FA3E3 /* LegacyCustomProtocolID.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LegacyCustomProtocolID.h; sourceTree = "<group>"; };
+ 44EC3EA8247F5C080059489C /* _WKDragActionsInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _WKDragActionsInternal.h; sourceTree = "<group>"; };
4603011A234BE31D009C8217 /* WebBackForwardCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebBackForwardCache.cpp; sourceTree = "<group>"; };
4603011B234BE31E009C8217 /* WebBackForwardCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebBackForwardCache.h; sourceTree = "<group>"; };
460F488D1F996F6C00CF4B87 /* WebSWContextManagerConnectionMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebSWContextManagerConnectionMessageReceiver.cpp; path = DerivedSources/WebKit2/WebSWContextManagerConnectionMessageReceiver.cpp; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -7511,6 +7513,7 @@
37DFA6FE1810BB2D001F4A9F /* Cocoa */ = {
isa = PBXGroup;
children = (
+ 44EC3EA8247F5C080059489C /* _WKDragActionsInternal.h */,
373D122118A473010066D9CC /* _WKFrameHandle.h */,
373D122018A473010066D9CC /* _WKFrameHandle.mm */,
373D122618A473F60066D9CC /* _WKFrameHandleInternal.h */,
@@ -10527,6 +10530,7 @@
A1A4FE5A18DCE9FA00B5EA8A /* _WKDownload.h in Headers */,
A1A4FE6118DD54A400B5EA8A /* _WKDownloadDelegate.h in Headers */,
A1A4FE5C18DCE9FA00B5EA8A /* _WKDownloadInternal.h in Headers */,
+ 44EC3EA9247F5C090059489C /* _WKDragActionsInternal.h in Headers */,
379A873A18BBFE0F00588AF2 /* _WKElementAction.h in Headers */,
379A873C18BBFF0700588AF2 /* _WKElementActionInternal.h in Headers */,
1AD01BC91905D37E00C9C45F /* _WKErrorRecoveryAttempting.h in Headers */,
Modified: trunk/Source/WebKitLegacy/mac/ChangeLog (262394 => 262395)
--- trunk/Source/WebKitLegacy/mac/ChangeLog 2020-06-01 21:25:45 UTC (rev 262394)
+++ trunk/Source/WebKitLegacy/mac/ChangeLog 2020-06-01 22:04:42 UTC (rev 262395)
@@ -1,3 +1,23 @@
+2020-06-01 David Kilzer <ddkil...@apple.com>
+
+ Don't use casts to convert between WebCore::DragDestinationAction and {Web,WK}DragDestinationAction types
+ <https://webkit.org/b/212507>
+
+ Reviewed by Darin Adler.
+
+ * WebCoreSupport/WebDragClient.mm:
+ (kit):
+ - Add conversion function to avoid casting.
+ (WebDragClient::willPerformDragDestinationAction):
+ - Make use of kit() conversion function.
+ * WebView/WebView.mm:
+ (coreDragDestinationActionMask):
+ - Add conversion function to avoid casting.
+ (-[WebView dragDataForSession:client:global:operation:]):
+ (-[WebView actionMaskForDraggingInfo:]):
+ - Make use of coreDragDestinationActionMask() conversion
+ function.
+
2020-06-01 Sam Weinig <wei...@apple.com>
Extended Color: Replace Color constructors taking numeric values with type specific factory functions
Modified: trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebDragClient.mm (262394 => 262395)
--- trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebDragClient.mm 2020-06-01 21:25:45 UTC (rev 262394)
+++ trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebDragClient.mm 2020-06-01 22:04:42 UTC (rev 262395)
@@ -68,6 +68,20 @@
#if PLATFORM(MAC)
+static WebDragDestinationAction kit(WebCore::DragDestinationAction action)
+{
+ switch (action) {
+ case WebCore::DragDestinationAction::DHTML:
+ return WebDragDestinationActionDHTML;
+ case WebCore::DragDestinationAction::Edit:
+ return WebDragDestinationActionEdit;
+ case WebCore::DragDestinationAction::Load:
+ return WebDragDestinationActionLoad;
+ }
+ ASSERT_NOT_REACHED();
+ return WebDragDestinationActionNone;
+}
+
bool WebDragClient::useLegacyDragClient()
{
return false;
@@ -86,7 +100,7 @@
void WebDragClient::willPerformDragDestinationAction(WebCore::DragDestinationAction action, const WebCore::DragData& dragData)
{
- [[m_webView _UIDelegateForwarder] webView:m_webView willPerformDragDestinationAction:static_cast<WebDragDestinationAction>(action) forDraggingInfo:dragData.platformData()];
+ [[m_webView _UIDelegateForwarder] webView:m_webView willPerformDragDestinationAction:kit(action) forDraggingInfo:dragData.platformData()];
}
Modified: trunk/Source/WebKitLegacy/mac/WebView/WebView.mm (262394 => 262395)
--- trunk/Source/WebKitLegacy/mac/WebView/WebView.mm 2020-06-01 21:25:45 UTC (rev 262394)
+++ trunk/Source/WebKitLegacy/mac/WebView/WebView.mm 2020-06-01 22:04:42 UTC (rev 262395)
@@ -112,7 +112,6 @@
#import "WebStorageNamespaceProvider.h"
#import "WebTextCompletionController.h"
#import "WebTextIterator.h"
-#import "WebUIDelegate.h"
#import "WebUIDelegatePrivate.h"
#import "WebValidationMessageClient.h"
#import "WebViewGroup.h"
@@ -578,6 +577,20 @@
#endif
@end
+#if ENABLE(DRAG_SUPPORT)
+static OptionSet<WebCore::DragDestinationAction> coreDragDestinationActionMask(WebDragDestinationAction actionMask)
+{
+ OptionSet<WebCore::DragDestinationAction> result;
+ if (actionMask & WebDragDestinationActionDHTML)
+ result.add(WebCore::DragDestinationAction::DHTML);
+ if (actionMask & WebDragDestinationActionEdit)
+ result.add(WebCore::DragDestinationAction::Edit);
+ if (actionMask & WebDragDestinationActionLoad)
+ result.add(WebCore::DragDestinationAction::Load);
+ return result;
+}
+#endif // ENABLE(DRAG_SUPPORT)
+
WebCore::FindOptions coreOptions(WebFindOptions options)
{
WebCore::FindOptions findOptions;
@@ -1911,8 +1924,8 @@
- (WebCore::DragData)dragDataForSession:(id <UIDropSession>)session client:(CGPoint)clientPosition global:(CGPoint)globalPosition operation:(uint64_t)operation
{
auto dragOperationMask = static_cast<WebCore::DragOperation>(operation);
- auto dragDestinationMask = OptionSet<WebCore::DragDestinationAction>::fromRaw([self dragDestinationActionMaskForSession:session]);
- return { session, WebCore::roundedIntPoint(clientPosition), WebCore::roundedIntPoint(globalPosition), dragOperationMask, WebCore::DragApplicationNone, dragDestinationMask };
+ auto dragDestinationActionMask = coreDragDestinationActionMask([self dragDestinationActionMaskForSession:session]);
+ return { session, WebCore::roundedIntPoint(clientPosition), WebCore::roundedIntPoint(globalPosition), dragOperationMask, WebCore::DragApplicationNone, dragDestinationActionMask };
}
- (uint64_t)_enteredDataInteraction:(id <UIDropSession>)session client:(CGPoint)clientPosition global:(CGPoint)globalPosition operation:(uint64_t)operation
@@ -1928,6 +1941,7 @@
auto dragData = [self dragDataForSession:session client:clientPosition global:globalPosition operation:operation];
return _private->page->dragController().dragUpdated(dragData);
}
+
- (void)_exitedDataInteraction:(id <UIDropSession>)session client:(CGPoint)clientPosition global:(CGPoint)globalPosition operation:(uint64_t)operation
{
WebThreadLock();
@@ -1934,6 +1948,7 @@
auto dragData = [self dragDataForSession:session client:clientPosition global:globalPosition operation:operation];
_private->page->dragController().dragExited(dragData);
}
+
- (void)_performDataInteraction:(id <UIDropSession>)session client:(CGPoint)clientPosition global:(CGPoint)globalPosition operation:(uint64_t)operation
{
[self _tryToPerformDataInteraction:session client:clientPosition global:globalPosition operation:operation];
@@ -6725,7 +6740,7 @@
- (OptionSet<WebCore::DragDestinationAction>)actionMaskForDraggingInfo:(id <NSDraggingInfo>)draggingInfo
{
- return OptionSet<WebCore::DragDestinationAction>::fromRaw([[self _UIDelegateForwarder] webView:self dragDestinationActionMaskForDraggingInfo:draggingInfo]);
+ return coreDragDestinationActionMask([[self _UIDelegateForwarder] webView:self dragDestinationActionMaskForDraggingInfo:draggingInfo]);
}
- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)draggingInfo
Modified: trunk/Source/WebKitLegacy/win/ChangeLog (262394 => 262395)
--- trunk/Source/WebKitLegacy/win/ChangeLog 2020-06-01 21:25:45 UTC (rev 262394)
+++ trunk/Source/WebKitLegacy/win/ChangeLog 2020-06-01 22:04:42 UTC (rev 262395)
@@ -1,3 +1,16 @@
+2020-06-01 David Kilzer <ddkil...@apple.com>
+
+ Don't use casts to convert between WebCore::DragDestinationAction and {Web,WK}DragDestinationAction types
+ <https://webkit.org/b/212507>
+
+ Reviewed by Darin Adler.
+
+ * WebCoreSupport/WebDragClient.cpp:
+ (kit):
+ - Add conversion function to avoid casting.
+ (WebDragClient::willPerformDragDestinationAction):
+ - Make use of kit() conversion function.
+
2020-06-01 Sam Weinig <wei...@apple.com>
Extended Color: Replace Color constructors taking numeric values with type specific factory functions
Modified: trunk/Source/WebKitLegacy/win/WebCoreSupport/WebDragClient.cpp (262394 => 262395)
--- trunk/Source/WebKitLegacy/win/WebCoreSupport/WebDragClient.cpp 2020-06-01 21:25:45 UTC (rev 262394)
+++ trunk/Source/WebKitLegacy/win/WebCoreSupport/WebDragClient.cpp 2020-06-01 22:04:42 UTC (rev 262395)
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
+ * Copyright (C) 2007-2020 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -60,6 +60,20 @@
return result;
}
+static WebDragDestinationAction kit(DragDestinationAction action)
+{
+ switch (action) {
+ case DragDestinationAction::DHTML:
+ return WebDragDestinationActionDHTML;
+ case DragDestinationAction::Edit:
+ return WebDragDestinationActionEdit;
+ case DragDestinationAction::Load:
+ return WebDragDestinationActionLoad;
+ }
+ ASSERT_NOT_REACHED();
+ return WebDragDestinationActionNone;
+}
+
WebDragClient::WebDragClient(WebView* webView)
: m_webView(webView)
{
@@ -72,7 +86,7 @@
//so we just call the delegate, and don't worry about whether it's implemented
COMPtr<IWebUIDelegate> delegateRef = 0;
if (SUCCEEDED(m_webView->uiDelegate(&delegateRef)))
- delegateRef->willPerformDragDestinationAction(m_webView, (WebDragDestinationAction)action, dragData.platformData());
+ delegateRef->willPerformDragDestinationAction(m_webView, kit(action), dragData.platformData());
}
DragSourceAction WebDragClient::dragSourceActionMaskForPoint(const IntPoint& windowPoint)