Changeset 214403 in webkit
- Timestamp:
- Mar 25, 2017 1:24:17 PM (7 years ago)
- Location:
- trunk/Source
- Files:
-
- 29 edited
- 1 copied
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r214400 r214403 1 2017-03-24 Wenson Hsieh <wenson_hsieh@apple.com> 2 3 [WK2] Add a UI delegate SPI hook to enable or disable navigation on drop 4 https://bugs.webkit.org/show_bug.cgi?id=169168 5 <rdar://problem/30688374> 6 7 Reviewed by Tim Horton. 8 9 Refactor client hooks for the drag destination action in WebCore to ask for the drag destination action mask 10 upon initializing the DragData. In DragController, rather than setting m_dragDestinationAction to the result of 11 m_client.actionMaskForDrag, we instead set it to the DragData's destination action. 12 13 Tests to come in a future patch. 14 15 * loader/EmptyClients.cpp: 16 * page/DragClient.h: 17 18 Rather than pass in a DragData, pass in only the platform data that we need to hand to the delegate. This is 19 because we now ask for drag destination actions prior to creating the DragData. 20 21 * page/DragController.cpp: 22 (WebCore::DragController::dragEnteredOrUpdated): 23 24 Update the available drag destination actions in WebCore using the destination actions stored in DragData rather 25 than calling out to the client delegate. 26 27 * loader/EmptyClients.cpp: 28 * platform/DragData.cpp: 29 (WebCore::DragData::DragData): 30 * platform/DragData.h: 31 (WebCore::DragData::dragDestinationAction): 32 (WebCore::DragData::operator =): 33 * platform/mac/DragDataMac.mm: 34 (WebCore::DragData::DragData): 35 1 36 2017-03-25 Aaron Chu <aaron_chu@apple.com> 2 37 -
trunk/Source/WebCore/loader/EmptyClients.cpp
r214266 r214403 130 130 void willPerformDragDestinationAction(DragDestinationAction, const DragData&) final { } 131 131 void willPerformDragSourceAction(DragSourceAction, const IntPoint&, DataTransfer&) final { } 132 DragDestinationAction actionMaskForDrag(const DragData&) final { return DragDestinationActionNone; }133 132 DragSourceAction dragSourceActionMaskForPoint(const IntPoint&) final { return DragSourceActionNone; } 134 133 void startDrag(DragImage, const IntPoint&, const IntPoint&, const FloatPoint&, DataTransfer&, Frame&, DragSourceAction) final { } -
trunk/Source/WebCore/page/DragClient.h
r213627 r214403 27 27 28 28 #include "DragActions.h" 29 #include "DragData.h" 29 30 #include "DragItem.h" 30 31 #include "FloatPoint.h" … … 34 35 35 36 class DataTransfer; 36 class DragData;37 37 class Element; 38 38 class Frame; … … 48 48 virtual void willPerformDragSourceAction(DragSourceAction, const IntPoint&, DataTransfer&) = 0; 49 49 virtual void didConcludeEditDrag() { } 50 virtual DragDestinationAction actionMaskForDrag(const DragData&) = 0;51 50 virtual DragSourceAction dragSourceActionMaskForPoint(const IntPoint& rootViewPoint) = 0; 52 51 -
trunk/Source/WebCore/page/DragController.cpp
r214331 r214403 282 282 mouseMovedIntoDocument(m_page.mainFrame().documentAtPoint(dragData.clientPosition())); 283 283 284 m_dragDestinationAction = m_client.actionMaskForDrag(dragData);284 m_dragDestinationAction = dragData.dragDestinationAction(); 285 285 if (m_dragDestinationAction == DragDestinationActionNone) { 286 286 clearDragCaret(); // FIXME: Why not call mouseMovedIntoDocument(nullptr)? -
trunk/Source/WebCore/platform/DragData.cpp
r204972 r214403 33 33 34 34 #if !PLATFORM(COCOA) 35 DragData::DragData(DragDataRef data, const IntPoint& clientPosition, const IntPoint& globalPosition, 36 DragOperation sourceOperationMask, DragApplicationFlags flags) 35 DragData::DragData(DragDataRef data, const IntPoint& clientPosition, const IntPoint& globalPosition, DragOperation sourceOperationMask, DragApplicationFlags flags, DragDestinationAction destinationAction) 37 36 : m_clientPosition(clientPosition) 38 37 , m_globalPosition(globalPosition) … … 40 39 , m_draggingSourceOperationMask(sourceOperationMask) 41 40 , m_applicationFlags(flags) 41 , m_dragDestinationAction(destinationAction) 42 42 { 43 43 } 44 44 45 DragData::DragData(const String&, const IntPoint& clientPosition, const IntPoint& globalPosition, 46 DragOperation sourceOperationMask, DragApplicationFlags flags) 45 DragData::DragData(const String&, const IntPoint& clientPosition, const IntPoint& globalPosition, DragOperation sourceOperationMask, DragApplicationFlags flags, DragDestinationAction destinationAction) 47 46 : m_clientPosition(clientPosition) 48 47 , m_globalPosition(globalPosition) … … 50 49 , m_draggingSourceOperationMask(sourceOperationMask) 51 50 , m_applicationFlags(flags) 51 , m_dragDestinationAction(destinationAction) 52 52 { 53 53 } -
trunk/Source/WebCore/platform/DragData.h
r212484 r214403 79 79 80 80 // clientPosition is taken to be the position of the drag event within the target window, with (0,0) at the top left 81 WEBCORE_EXPORT DragData(DragDataRef, const IntPoint& clientPosition, const IntPoint& globalPosition, DragOperation, DragApplicationFlags = DragApplicationNone );82 WEBCORE_EXPORT DragData(const String& dragStorageName, const IntPoint& clientPosition, const IntPoint& globalPosition, DragOperation, DragApplicationFlags = DragApplicationNone );81 WEBCORE_EXPORT DragData(DragDataRef, const IntPoint& clientPosition, const IntPoint& globalPosition, DragOperation, DragApplicationFlags = DragApplicationNone, DragDestinationAction actions = DragDestinationActionAny); 82 WEBCORE_EXPORT DragData(const String& dragStorageName, const IntPoint& clientPosition, const IntPoint& globalPosition, DragOperation, DragApplicationFlags = DragApplicationNone, DragDestinationAction actions = DragDestinationActionAny); 83 83 // This constructor should used only by WebKit2 IPC because DragData 84 84 // is initialized by the decoder and not in the constructor. … … 106 106 bool containsFiles() const; 107 107 unsigned numberOfFiles() const; 108 DragDestinationAction dragDestinationAction() const { return m_dragDestinationAction; } 108 109 void setFileNames(Vector<String>& fileNames) { m_fileNames = WTFMove(fileNames); } 109 110 const Vector<String>& fileNames() const { return m_fileNames; } … … 122 123 m_draggingSourceOperationMask = data.m_draggingSourceOperationMask; 123 124 m_applicationFlags = data.m_applicationFlags; 125 m_dragDestinationAction = data.m_dragDestinationAction; 124 126 return *this; 125 127 } … … 133 135 DragApplicationFlags m_applicationFlags; 134 136 Vector<String> m_fileNames; 137 DragDestinationAction m_dragDestinationAction; 135 138 #if PLATFORM(COCOA) 136 139 String m_pasteboardName; -
trunk/Source/WebCore/platform/mac/DragDataMac.mm
r212930 r214403 84 84 namespace WebCore { 85 85 86 DragData::DragData(DragDataRef data, const IntPoint& clientPosition, const IntPoint& globalPosition, 87 DragOperation sourceOperationMask, DragApplicationFlags flags) 86 DragData::DragData(DragDataRef data, const IntPoint& clientPosition, const IntPoint& globalPosition, DragOperation sourceOperationMask, DragApplicationFlags flags, DragDestinationAction destinationAction) 88 87 : m_clientPosition(clientPosition) 89 88 , m_globalPosition(globalPosition) … … 91 90 , m_draggingSourceOperationMask(sourceOperationMask) 92 91 , m_applicationFlags(flags) 92 , m_dragDestinationAction(destinationAction) 93 93 #if PLATFORM(MAC) 94 94 , m_pasteboardName([[m_platformDragData draggingPasteboard] name]) … … 99 99 } 100 100 101 DragData::DragData(const String& dragStorageName, const IntPoint& clientPosition, const IntPoint& globalPosition, 102 DragOperation sourceOperationMask, DragApplicationFlags flags) 101 DragData::DragData(const String& dragStorageName, const IntPoint& clientPosition, const IntPoint& globalPosition, DragOperation sourceOperationMask, DragApplicationFlags flags, DragDestinationAction destinationAction) 103 102 : m_clientPosition(clientPosition) 104 103 , m_globalPosition(globalPosition) … … 106 105 , m_draggingSourceOperationMask(sourceOperationMask) 107 106 , m_applicationFlags(flags) 107 , m_dragDestinationAction(destinationAction) 108 108 , m_pasteboardName(dragStorageName) 109 109 { -
trunk/Source/WebKit/ChangeLog
r214177 r214403 1 2017-03-24 Wenson Hsieh <wenson_hsieh@apple.com> 2 3 [WK2] Add a UI delegate SPI hook to enable or disable navigation on drop 4 https://bugs.webkit.org/show_bug.cgi?id=169168 5 <rdar://problem/30688374> 6 7 Reviewed by Tim Horton. 8 9 See WebKit ChangeLog for more details. Renames WebDefaultUIDelegate.m => WebDefaultUIDelegate.mm. 10 11 * WebKit.xcodeproj/project.pbxproj: 12 1 13 2017-03-20 Dan Bernstein <mitz@apple.com> 2 14 -
trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj
r214177 r214403 330 330 939811070824BF01008DF038 /* WebView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51A8B57A042834F700CA2D3A /* WebView.mm */; }; 331 331 939811080824BF01008DF038 /* WebPolicyDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51443F9B0429392B00CA2D3A /* WebPolicyDelegate.mm */; }; 332 9398110A0824BF01008DF038 /* WebDefaultUIDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 515E27D00458CA4B00CA2D3A /* WebDefaultUIDelegate.m */; };332 9398110A0824BF01008DF038 /* WebDefaultUIDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 515E27D00458CA4B00CA2D3A /* WebDefaultUIDelegate.mm */; }; 333 333 939811120824BF01008DF038 /* WebNSURLExtras.mm in Sources */ = {isa = PBXBuildFile; fileRef = BE6DC39A04C62C4E004D0EF6 /* WebNSURLExtras.mm */; }; 334 334 939811130824BF01008DF038 /* WebHistory.mm in Sources */ = {isa = PBXBuildFile; fileRef = 65DA2608052CC18700A97B31 /* WebHistory.mm */; }; … … 967 967 515E27CC0458C86500CA2D3A /* WebUIDelegate.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebUIDelegate.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; }; 968 968 515E27CF0458CA4B00CA2D3A /* WebDefaultUIDelegate.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebDefaultUIDelegate.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; }; 969 515E27D00458CA4B00CA2D3A /* WebDefaultUIDelegate.m */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebDefaultUIDelegate.m; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };969 515E27D00458CA4B00CA2D3A /* WebDefaultUIDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebDefaultUIDelegate.mm; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; }; 970 970 516F296F03A6C45A00CA2D3A /* WebHistoryItemInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebHistoryItemInternal.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; }; 971 971 5185F62510712B80007AA393 /* WebNavigationData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebNavigationData.h; sourceTree = "<group>"; }; … … 1951 1951 5152FAE0033FC50400CA2ACD /* WebDefaultPolicyDelegate.m */, 1952 1952 515E27CF0458CA4B00CA2D3A /* WebDefaultUIDelegate.h */, 1953 515E27D00458CA4B00CA2D3A /* WebDefaultUIDelegate.m */,1953 515E27D00458CA4B00CA2D3A /* WebDefaultUIDelegate.mm */, 1954 1954 ); 1955 1955 name = "Default Delegates"; … … 3581 3581 939810F00824BF01008DF038 /* WebDefaultPolicyDelegate.m in Sources */, 3582 3582 A10C1D1D18202F9C0036883A /* WebDefaultResourceLoadDelegate.m in Sources */, 3583 9398110A0824BF01008DF038 /* WebDefaultUIDelegate.m in Sources */,3583 9398110A0824BF01008DF038 /* WebDefaultUIDelegate.mm in Sources */, 3584 3584 A10C1D1F18202F9C0036883A /* WebDefaultUIKitDelegate.m in Sources */, 3585 3585 BC542C430FD7766F00D8AB5D /* WebDelegateImplementationCaching.mm in Sources */, -
trunk/Source/WebKit/mac/ChangeLog
r214284 r214403 1 2017-03-24 Wenson Hsieh <wenson_hsieh@apple.com> 2 3 [WK2] Add a UI delegate SPI hook to enable or disable navigation on drop 4 https://bugs.webkit.org/show_bug.cgi?id=169168 5 <rdar://problem/30688374> 6 7 Reviewed by Tim Horton. 8 9 Refactors WebDragClient::actionMaskForDrag to take platform data only, rather than the entire DragData. See the 10 WebCore ChangeLog entry for more details. Also renames WebDefaultUIDelegate.m to WebDefaultUIDelegate.mm, since 11 we need to import a C++ header for linkedOnOrAfter(). 12 13 The default delegate implementation of webView:dragDestinationActionMaskForDraggingInfo: now checks if the current 14 application is linking against 10.12 or earlier, and if so, will allow any drag destination action instead of 15 the new default value of everything but DragDestinationActionLoad. 16 17 * DefaultDelegates/WebDefaultUIDelegate.mm: Renamed from Source/WebKit/mac/DefaultDelegates/WebDefaultUIDelegate.m. 18 (-[WebDefaultUIDelegate webView:dragDestinationActionMaskForDraggingInfo:]): 19 * Misc/WebKitVersionChecks.h: 20 * WebCoreSupport/WebDragClient.h: 21 * WebCoreSupport/WebDragClient.mm: 22 (WebDragClient::actionMaskForDrag): Deleted. 23 * WebView/WebView.mm: 24 (-[WebView draggingEntered:]): 25 (-[WebView draggingUpdated:]): 26 1 27 2017-03-21 Wenson Hsieh <wenson_hsieh@apple.com> 2 28 -
trunk/Source/WebKit/mac/DefaultDelegates/WebDefaultUIDelegate.mm
r214402 r214403 35 35 #if !PLATFORM(IOS) 36 36 #import "WebJavaScriptTextInputPanel.h" 37 #import "WebKitVersionChecks.h" 37 38 #endif 38 39 … … 53 54 54 55 // Return a object with vanilla implementations of the protocol's methods 55 // Note this feature relies on our default delegate being stateless. 56 // Note this feature relies on our default delegate being stateless. This 56 57 // is probably an invalid assumption for the WebUIDelegate. 57 58 // If we add any real functionality to this default delegate we probably … … 59 60 + (WebDefaultUIDelegate *)sharedUIDelegate 60 61 { 61 if (!sharedDelegate) {62 if (!sharedDelegate) 62 63 sharedDelegate = [[WebDefaultUIDelegate alloc] init]; 63 }64 64 return sharedDelegate; 65 65 } … … 102 102 { 103 103 #if !PLATFORM(IOS) 104 if ([[wv window] isKeyWindow] || [[[wv window] attachedSheet] isKeyWindow]) {104 if ([[wv window] isKeyWindow] || [[[wv window] attachedSheet] isKeyWindow]) 105 105 [NSApp _cycleWindowsReversed:FALSE]; 106 }107 106 #endif 108 107 } … … 197 196 [panel showWindow:nil]; 198 197 NSString *result; 199 if ([NSApp runModalForWindow:[panel window]]) {198 if ([NSApp runModalForWindow:[panel window]]) 200 199 result = [panel text]; 201 } else {200 else 202 201 result = nil; 203 }204 202 [[panel window] close]; 205 203 [panel release]; … … 223 221 - (NSUInteger)webView:(WebView *)webView dragDestinationActionMaskForDraggingInfo:(id <NSDraggingInfo>)draggingInfo 224 222 { 225 return WebDragDestinationActionAny; 223 if (!linkedOnOrAfter(SDKVersion::FirstWithDropToNavigateDisallowedByDefault)) 224 return WebDragDestinationActionAny; 225 226 return WebDragDestinationActionAny & ~WebDragDestinationActionLoad; 226 227 } 227 228 -
trunk/Source/WebKit/mac/Misc/WebKitVersionChecks.h
r212555 r214403 84 84 #if PLATFORM(IOS) 85 85 FirstToExcludeLocalStorageFromBackup = DYLD_IOS_VERSION_11_0, 86 #else 87 FirstWithDropToNavigateDisallowedByDefault = DYLD_MACOSX_VERSION_10_13 86 88 #endif 87 89 }; -
trunk/Source/WebKit/mac/WebCoreSupport/WebDragClient.h
r214111 r214403 38 38 void willPerformDragDestinationAction(WebCore::DragDestinationAction, const WebCore::DragData&) override; 39 39 void willPerformDragSourceAction(WebCore::DragSourceAction, const WebCore::IntPoint&, WebCore::DataTransfer&) override; 40 WebCore::DragDestinationAction actionMaskForDrag(const WebCore::DragData&) override;41 40 void dragControllerDestroyed() override; 42 41 WebCore::DragSourceAction dragSourceActionMaskForPoint(const WebCore::IntPoint& windowPoint) override; -
trunk/Source/WebKit/mac/WebCoreSupport/WebDragClient.mm
r214111 r214403 88 88 } 89 89 90 WebCore::DragDestinationAction WebDragClient::actionMaskForDrag(const WebCore::DragData& dragData)91 {92 return (WebCore::DragDestinationAction)[[m_webView _UIDelegateForwarder] webView:m_webView dragDestinationActionMaskForDraggingInfo:dragData.platformData()];93 }94 95 90 void WebDragClient::willPerformDragDestinationAction(WebCore::DragDestinationAction action, const WebCore::DragData& dragData) 96 91 { … … 195 190 } 196 191 197 WebCore::DragDestinationAction WebDragClient::actionMaskForDrag(const WebCore::DragData&)198 {199 return DragDestinationActionNone;200 }201 202 192 void WebDragClient::willPerformDragDestinationAction(WebCore::DragDestinationAction, const WebCore::DragData&) 203 193 { -
trunk/Source/WebKit/mac/WebView/WebView.mm
r214284 r214403 6620 6620 } 6621 6621 6622 - (DragDestinationAction)actionMaskForDraggingInfo:(id <NSDraggingInfo>)draggingInfo 6623 { 6624 return (DragDestinationAction)[[self _UIDelegateForwarder] webView:self dragDestinationActionMaskForDraggingInfo:draggingInfo]; 6625 } 6626 6622 6627 - (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)draggingInfo 6623 6628 { 6624 6629 IntPoint client([draggingInfo draggingLocation]); 6625 6630 IntPoint global(globalPoint([draggingInfo draggingLocation], [self window])); 6626 DragData dragData(draggingInfo, client, global, static_cast<DragOperation>([draggingInfo draggingSourceOperationMask]), [self applicationFlags:draggingInfo]); 6631 6632 DragData dragData(draggingInfo, client, global, static_cast<DragOperation>([draggingInfo draggingSourceOperationMask]), [self applicationFlags:draggingInfo], [self actionMaskForDraggingInfo:draggingInfo]); 6627 6633 return core(self)->dragController().dragEntered(dragData); 6628 6634 } … … 6636 6642 IntPoint client([draggingInfo draggingLocation]); 6637 6643 IntPoint global(globalPoint([draggingInfo draggingLocation], [self window])); 6638 DragData dragData(draggingInfo, client, global, static_cast<DragOperation>([draggingInfo draggingSourceOperationMask]), [self applicationFlags:draggingInfo]); 6644 6645 DragData dragData(draggingInfo, client, global, static_cast<DragOperation>([draggingInfo draggingSourceOperationMask]), [self applicationFlags:draggingInfo], [self actionMaskForDraggingInfo:draggingInfo]); 6639 6646 return page->dragController().dragUpdated(dragData); 6640 6647 } -
trunk/Source/WebKit/mac/WebView/WebViewPrivate.h
r214284 r214403 56 56 #endif 57 57 58 #define WEBKIT_DI_BLOCK 159 60 58 @class UIColor; 61 59 @class UIImage; -
trunk/Source/WebKit/win/ChangeLog
r213846 r214403 1 2017-03-24 Wenson Hsieh <wenson_hsieh@apple.com> 2 3 [WK2] Add a UI delegate SPI hook to enable or disable navigation on drop 4 https://bugs.webkit.org/show_bug.cgi?id=169168 5 <rdar://problem/30688374> 6 7 Reviewed by Tim Horton. 8 9 Minor tweak to adjust for a changed interface. See WebKit and WebCore ChangeLogs for more information. 10 11 * WebCoreSupport/WebDragClient.cpp: 12 (WebDragClient::actionMaskForDrag): 13 * WebCoreSupport/WebDragClient.h: 14 1 15 2017-03-13 Per Arne Vollan <pvollan@apple.com> 2 16 -
trunk/Source/WebKit/win/WebCoreSupport/WebDragClient.cpp
r212407 r214403 63 63 { 64 64 ASSERT(webView); 65 }66 67 DragDestinationAction WebDragClient::actionMaskForDrag(const DragData& dragData)68 {69 COMPtr<IWebUIDelegate> delegateRef = 0;70 //Default behaviour (eg. no delegate, or callback not implemented) is to allow71 //any action72 WebDragDestinationAction mask = WebDragDestinationActionAny;73 if (SUCCEEDED(m_webView->uiDelegate(&delegateRef)))74 delegateRef->dragDestinationActionMaskForDraggingInfo(m_webView, dragData.platformData(), &mask);75 76 return (DragDestinationAction)mask;77 65 } 78 66 -
trunk/Source/WebKit/win/WebCoreSupport/WebDragClient.h
r212390 r214403 36 36 virtual void dragControllerDestroyed(); 37 37 38 virtual WebCore::DragDestinationAction actionMaskForDrag(const WebCore::DragData&);39 38 virtual WebCore::DragSourceAction dragSourceActionMaskForPoint(const WebCore::IntPoint&); 40 39 virtual void willPerformDragDestinationAction(WebCore::DragDestinationAction, const WebCore::DragData&); -
trunk/Source/WebKit2/ChangeLog
r214391 r214403 1 2017-03-24 Wenson Hsieh <wenson_hsieh@apple.com> 2 3 [WK2] Add a UI delegate SPI hook to enable or disable navigation on drop 4 https://bugs.webkit.org/show_bug.cgi?id=169168 5 <rdar://problem/30688374> 6 7 Reviewed by Tim Horton. 8 9 Support customizing the set of allowed actions on drop in WebKit2 by introducing a new method to WKUIDelegatePrivate 10 that returns a WKDragDestinationAction given platform dragging info. These flags are then used to initialize the 11 DragData sent over to the web process, where they update DragController's view of the allowed destination actions. 12 13 Moving forward, the default action mask for WKWebViews will include everything except WKDragDestinationActionLoad, 14 though for applciations linked on or before 10.12, we will still default to WKDragDestinationActionAny to mitigate 15 any compatibility risk. 16 17 * Shared/API/Cocoa/WKDragDestinationAction.h: 18 19 Introduce WK2 client-facing versions of WebCore::DragDestinationAction flags. 20 21 * Shared/WebCoreArgumentCoders.cpp: 22 (IPC::ArgumentCoder<DragData>::encode): 23 (IPC::ArgumentCoder<DragData>::decode): 24 25 Serialize DragData's destination actions when sending DragData over IPC. 26 27 * UIProcess/API/Cocoa/WKUIDelegatePrivate.h: 28 * UIProcess/API/Cocoa/WKWebView.mm: 29 (-[WKWebView _web_dragDestinationActionForDraggingInfo:]): 30 31 For WKWebView, allow all drag destination actions except for loading (i.e. drop-to-navigate). 32 33 * UIProcess/API/mac/WKView.mm: 34 (-[WKView _web_dragDestinationActionForDraggingInfo:]): 35 36 For WKView, allow all types of drag destination actions. 37 38 * UIProcess/Cocoa/VersionChecks.h: 39 * UIProcess/Cocoa/WebViewImpl.h: 40 * UIProcess/Cocoa/WebViewImpl.mm: 41 (WebKit::WebViewImpl::draggingEntered): 42 (WebKit::WebViewImpl::draggingUpdated): 43 * WebKit2.xcodeproj/project.pbxproj: 44 * WebProcess/WebCoreSupport/WebDragClient.cpp: 45 (WebKit::WebDragClient::actionMaskForDrag): 46 * WebProcess/WebCoreSupport/WebDragClient.h: 47 1 48 2017-03-24 Simon Fraser <simon.fraser@apple.com> 2 49 -
trunk/Source/WebKit2/Shared/API/Cocoa/WKDragDestinationAction.h
r214402 r214403 1 1 /* 2 * Copyright (C) 201 5-2017 Apple Inc. All rights reserved.2 * Copyright (C) 2017 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 24 24 */ 25 25 26 # pragma once26 #import <WebKit/WKFoundation.h> 27 27 28 #i mport <wtf/spi/darwin/dyldSPI.h>28 #if WK_API_ENABLED 29 29 30 namespace WebKit { 30 #import <Foundation/Foundation.h> 31 31 32 enum class SDKVersion : uint32_t { 33 #if PLATFORM(IOS) 34 FirstWithNetworkCache = DYLD_IOS_VERSION_9_0, 35 FirstWithMediaTypesRequiringUserActionForPlayback = DYLD_IOS_VERSION_10_0, 36 FirstWithExceptionsForDuplicateCompletionHandlerCalls = DYLD_IOS_VERSION_11_0, 37 FirstToExcludeLocalStorageFromBackup = DYLD_IOS_VERSION_11_0, 38 #elif PLATFORM(MAC) 39 FirstWithNetworkCache = DYLD_MACOSX_VERSION_10_11, 40 FirstWithExceptionsForDuplicateCompletionHandlerCalls = DYLD_MACOSX_VERSION_10_13, 32 typedef NS_OPTIONS(NSUInteger, WKDragDestinationAction) { 33 WKDragDestinationActionNone = 0, 34 WKDragDestinationActionDHTML = 1, 35 WKDragDestinationActionEdit = 2, 36 WKDragDestinationActionLoad = 4, 37 WKDragDestinationActionAny = NSUIntegerMax 38 } WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA)); 39 41 40 #endif 42 };43 44 bool linkedOnOrAfter(SDKVersion);45 46 } -
trunk/Source/WebKit2/Shared/WebCoreArgumentCoders.cpp
r214231 r214403 1224 1224 encoder << dragData.fileNames(); 1225 1225 #endif 1226 encoder.encodeEnum(dragData.dragDestinationAction()); 1226 1227 } 1227 1228 … … 1255 1256 #endif 1256 1257 1257 dragData = DragData(pasteboardName, clientPosition, globalPosition, draggingSourceOperationMask, applicationFlags); 1258 DragDestinationAction destinationAction; 1259 if (!decoder.decodeEnum(destinationAction)) 1260 return false; 1261 1262 dragData = DragData(pasteboardName, clientPosition, globalPosition, draggingSourceOperationMask, applicationFlags, destinationAction); 1258 1263 dragData.setFileNames(fileNames); 1259 1264 -
trunk/Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegatePrivate.h
r214264 r214403 28 28 #if WK_API_ENABLED 29 29 30 #import <WebKit/WKDragDestinationAction.h> 30 31 #import <WebKit/WKSecurityOrigin.h> 31 32 #import <WebKit/WKWebViewPrivate.h> … … 66 67 - (void)_webView:(WKWebView *)webView checkUserMediaPermissionForURL:(NSURL *)url mainFrameURL:(NSURL *)mainFrameURL frameIdentifier:(NSUInteger)frameIdentifier decisionHandler:(void (^)(NSString *salt, BOOL authorized))decisionHandler WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA)); 67 68 - (void)_webView:(WKWebView *)webView mediaCaptureStateDidChange:(_WKMediaCaptureState)state WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA)); 69 - (WKDragDestinationAction)_webView:(WKWebView *)webView dragDestinationActionMaskForDraggingInfo:(id)draggingInfo WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA)); 68 70 #if TARGET_OS_IPHONE 69 71 - (BOOL)_webView:(WKWebView *)webView shouldIncludeAppLinkActionsForElement:(_WKActivatedElementInfo *)element WK_API_AVAILABLE(ios(9.0)); -
trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm
r214391 r214403 46 46 #import "RemoteObjectRegistryMessages.h" 47 47 #import "UIDelegate.h" 48 #import "VersionChecks.h" 48 49 #import "ViewGestureController.h" 49 50 #import "ViewSnapshotStore.h" … … 3489 3490 } 3490 3491 3492 #if ENABLE(DRAG_SUPPORT) && WK_API_ENABLED 3493 3494 - (WKDragDestinationAction)_web_dragDestinationActionForDraggingInfo:(id <NSDraggingInfo>)draggingInfo 3495 { 3496 id <WKUIDelegatePrivate> uiDelegate = (id <WKUIDelegatePrivate>)[self UIDelegate]; 3497 if ([uiDelegate respondsToSelector:@selector(_webView:dragDestinationActionMaskForDraggingInfo:)]) 3498 return [uiDelegate _webView:self dragDestinationActionMaskForDraggingInfo:draggingInfo]; 3499 3500 if (!linkedOnOrAfter(WebKit::SDKVersion::FirstWithDropToNavigateDisallowedByDefault)) 3501 return WKDragDestinationActionAny; 3502 3503 return WKDragDestinationActionAny & ~WKDragDestinationActionLoad; 3504 } 3505 3506 #endif 3507 3491 3508 - (void)_web_dismissContentRelativeChildWindows 3492 3509 { -
trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm
r212810 r214403 33 33 #import "APIPageConfiguration.h" 34 34 #import "WKBrowsingContextGroupPrivate.h" 35 #import "WKDragDestinationAction.h" 35 36 #import "WKNSData.h" 36 37 #import "WKProcessGroupPrivate.h" … … 1009 1010 } 1010 1011 1012 #if ENABLE(DRAG_SUPPORT) && WK_API_ENABLED 1013 1014 - (WKDragDestinationAction)_web_dragDestinationActionForDraggingInfo:(id <NSDraggingInfo>)draggingInfo 1015 { 1016 return WKDragDestinationActionAny; 1017 } 1018 1019 #endif 1020 1011 1021 - (void)_web_dismissContentRelativeChildWindows 1012 1022 { -
trunk/Source/WebKit2/UIProcess/Cocoa/VersionChecks.h
r212555 r214403 39 39 FirstWithNetworkCache = DYLD_MACOSX_VERSION_10_11, 40 40 FirstWithExceptionsForDuplicateCompletionHandlerCalls = DYLD_MACOSX_VERSION_10_13, 41 FirstWithDropToNavigateDisallowedByDefault = DYLD_MACOSX_VERSION_10_13 41 42 #endif 42 43 }; -
trunk/Source/WebKit2/UIProcess/Cocoa/WebViewImpl.h
r212810 r214403 30 30 31 31 #include "PluginComplexTextInputState.h" 32 #include "WKDragDestinationAction.h" 32 33 #include "WKLayoutMode.h" 33 34 #include "WebPageProxy.h" … … 91 92 92 93 - (void)_web_didChangeContentSize:(NSSize)newSize; 94 95 #if ENABLE(DRAG_SUPPORT) && WK_API_ENABLED 96 - (WKDragDestinationAction)_web_dragDestinationActionForDraggingInfo:(id <NSDraggingInfo>)draggingInfo; 97 #endif 93 98 94 99 @optional -
trunk/Source/WebKit2/UIProcess/Cocoa/WebViewImpl.mm
r212810 r214403 3578 3578 WebCore::IntPoint client([m_view convertPoint:draggingInfo.draggingLocation fromView:nil]); 3579 3579 WebCore::IntPoint global(WebCore::globalPoint(draggingInfo.draggingLocation, m_view.window)); 3580 WebCore::DragData dragData(draggingInfo, client, global, static_cast<WebCore::DragOperation>(draggingInfo.draggingSourceOperationMask), applicationFlagsForDrag(m_view, draggingInfo)); 3580 #if WK_API_ENABLED 3581 auto dragDestinationAction = static_cast<WebCore::DragDestinationAction>([m_view _web_dragDestinationActionForDraggingInfo:draggingInfo]); 3582 #else 3583 auto dragDestinationAction = WebCore::DragDestinationActionAny; 3584 #endif 3585 WebCore::DragData dragData(draggingInfo, client, global, static_cast<WebCore::DragOperation>(draggingInfo.draggingSourceOperationMask), applicationFlagsForDrag(m_view, draggingInfo), dragDestinationAction); 3581 3586 3582 3587 m_page->resetCurrentDragInformation(); … … 3589 3594 WebCore::IntPoint client([m_view convertPoint:draggingInfo.draggingLocation fromView:nil]); 3590 3595 WebCore::IntPoint global(WebCore::globalPoint(draggingInfo.draggingLocation, m_view.window)); 3591 WebCore::DragData dragData(draggingInfo, client, global, static_cast<WebCore::DragOperation>(draggingInfo.draggingSourceOperationMask), applicationFlagsForDrag(m_view, draggingInfo)); 3596 #if WK_API_ENABLED 3597 auto dragDestinationAction = static_cast<WebCore::DragDestinationAction>([m_view _web_dragDestinationActionForDraggingInfo:draggingInfo]); 3598 #else 3599 auto dragDestinationAction = WebCore::DragDestinationActionAny; 3600 #endif 3601 WebCore::DragData dragData(draggingInfo, client, global, static_cast<WebCore::DragOperation>(draggingInfo.draggingSourceOperationMask), applicationFlagsForDrag(m_view, draggingInfo), dragDestinationAction); 3592 3602 m_page->dragUpdated(dragData, draggingInfo.draggingPasteboard.name); 3593 3603 -
trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj
r214266 r214403 1997 1997 EDCA71B7128DDA8C00201B26 /* WKBundlePageOverlay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A22F1001289FCD90085E74F /* WKBundlePageOverlay.cpp */; }; 1998 1998 F036978815F4BF0500C3A80E /* WebColorPicker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F036978715F4BF0500C3A80E /* WebColorPicker.cpp */; }; 1999 F409BA181E6E64BC009DA28E /* WKDragDestinationAction.h in Headers */ = {isa = PBXBuildFile; fileRef = F409BA171E6E64B3009DA28E /* WKDragDestinationAction.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1999 2000 F43370971E4D72ED00052B0E /* _WKTestingDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = F43370961E4D6A4400052B0E /* _WKTestingDelegate.h */; settings = {ATTRIBUTES = (Private, ); }; }; 2000 2001 F6113E25126CE1820057D0A7 /* APIUserContentURLPattern.h in Headers */ = {isa = PBXBuildFile; fileRef = F6113E24126CE1820057D0A7 /* APIUserContentURLPattern.h */; }; … … 4313 4314 ECBFC1DB1E6A4D66000300C7 /* ExtraPublicSymbolsForTAPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ExtraPublicSymbolsForTAPI.h; sourceTree = "<group>"; }; 4314 4315 F036978715F4BF0500C3A80E /* WebColorPicker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebColorPicker.cpp; sourceTree = "<group>"; }; 4316 F409BA171E6E64B3009DA28E /* WKDragDestinationAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKDragDestinationAction.h; sourceTree = "<group>"; }; 4315 4317 F43370961E4D6A4400052B0E /* _WKTestingDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _WKTestingDelegate.h; sourceTree = "<group>"; }; 4316 4318 F6113E24126CE1820057D0A7 /* APIUserContentURLPattern.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APIUserContentURLPattern.h; sourceTree = "<group>"; }; … … 5737 5739 37A709A61E3EA0FD00CA5969 /* WKDataDetectorTypes.h */, 5738 5740 37A709A81E3EA40C00CA5969 /* WKDataDetectorTypesInternal.h */, 5741 F409BA171E6E64B3009DA28E /* WKDragDestinationAction.h */, 5739 5742 37DFA6FF1810BB92001F4A9F /* WKFoundation.h */, 5740 5743 1A9E32991822E1CC00F5D04C /* WKRemoteObject.h */, … … 8167 8170 E1A31732134CEA6C007C9A4F /* AttributedString.h in Headers */, 8168 8171 512F589712A8838800629530 /* AuthenticationChallengeProxy.h in Headers */, 8172 F409BA181E6E64BC009DA28E /* WKDragDestinationAction.h in Headers */, 8169 8173 512F589912A8838800629530 /* AuthenticationDecisionListener.h in Headers */, 8170 8174 518E8EF916B2091C00E91429 /* AuthenticationManager.h in Headers */, -
trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebDragClient.cpp
r212379 r214403 47 47 } 48 48 49 DragDestinationAction WebDragClient::actionMaskForDrag(const DragData&)50 {51 return DragDestinationActionAny;52 }53 54 49 DragSourceAction WebDragClient::dragSourceActionMaskForPoint(const IntPoint&) 55 50 { -
trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebDragClient.h
r213627 r214403 45 45 void willPerformDragDestinationAction(WebCore::DragDestinationAction, const WebCore::DragData&) override; 46 46 void willPerformDragSourceAction(WebCore::DragSourceAction, const WebCore::IntPoint&, WebCore::DataTransfer&) override; 47 WebCore::DragDestinationAction actionMaskForDrag(const WebCore::DragData&) override;48 47 WebCore::DragSourceAction dragSourceActionMaskForPoint(const WebCore::IntPoint& windowPoint) override; 49 48
Note: See TracChangeset
for help on using the changeset viewer.