[iOS] Remove all usages of UIItemProvider, UIItemProviderReading, and related classes
[WebKit-https.git] / Tools / TestWebKitAPI / ios / DragAndDropSimulatorIOS.mm
index 43eecd9..2b00c9f 100644 (file)
@@ -26,7 +26,7 @@
 #include "config.h"
 #include "DragAndDropSimulator.h"
 
-#if ENABLE(DRAG_SUPPORT) && PLATFORM(IOS) && WK_API_ENABLED
+#if ENABLE(DRAG_SUPPORT) && PLATFORM(IOS_FAMILY) && WK_API_ENABLED
 
 #import "InstanceMethodSwizzler.h"
 #import "PlatformUtilities.h"
@@ -120,7 +120,7 @@ using namespace TestWebKitAPI;
     return YES;
 }
 
-- (BOOL)canLoadObjectsOfClass:(Class<UIItemProviderReading>)aClass
+- (BOOL)canLoadObjectsOfClass:(Class<NSItemProviderReading>)aClass
 {
     for (UIDragItem *item in self.items) {
         if ([item.itemProvider canLoadObjectOfClass:aClass])
@@ -129,9 +129,9 @@ using namespace TestWebKitAPI;
     return NO;
 }
 
-- (BOOL)canLoadObjectsOfClasses:(NSArray<Class<UIItemProviderReading>> *)classes
+- (BOOL)canLoadObjectsOfClasses:(NSArray<Class<NSItemProviderReading>> *)classes
 {
-    for (Class<UIItemProviderReading> aClass in classes) {
+    for (Class<NSItemProviderReading> aClass in classes) {
         BOOL canLoad = NO;
         for (UIDragItem *item in self.items)
             canLoad |= [item.itemProvider canLoadObjectOfClass:aClass];
@@ -171,10 +171,10 @@ using namespace TestWebKitAPI;
 
 @implementation MockDropSession
 
-- (instancetype)initWithProviders:(NSArray<UIItemProvider *> *)providers location:(CGPoint)locationInWindow window:(UIWindow *)window allowMove:(BOOL)allowMove
+- (instancetype)initWithProviders:(NSArray<NSItemProvider *> *)providers location:(CGPoint)locationInWindow window:(UIWindow *)window allowMove:(BOOL)allowMove
 {
     auto items = adoptNS([[NSMutableArray alloc] init]);
-    for (UIItemProvider *itemProvider in providers)
+    for (NSItemProvider *itemProvider in providers)
         [items addObject:[[[UIDragItem alloc] initWithItemProvider:itemProvider] autorelease]];
 
     return [super initWithItems:items.get() location:locationInWindow window:window allowMove:allowMove];
@@ -215,7 +215,7 @@ using namespace TestWebKitAPI;
     return NO;
 }
 
-- (BOOL)canCreateItemsOfClass:(Class<UIItemProviderReading>)aClass
+- (BOOL)canCreateItemsOfClass:(Class<NSItemProviderReading>)aClass
 {
     ASSERT_NOT_REACHED();
     return NO;
@@ -315,9 +315,23 @@ static NSArray *dragAndDropEventNames()
     bool _isDoneWithCurrentRun;
     DragAndDropPhase _phase;
 
+    BOOL _suppressedSelectionCommandsDuringDrop;
     RetainPtr<UIDropProposal> _currentDropProposal;
 }
 
+- (instancetype)initWithWebViewFrame:(CGRect)frame
+{
+    return [self initWithWebViewFrame:frame configuration:nil];
+}
+
+- (instancetype)initWithWebViewFrame:(CGRect)frame configuration:(WKWebViewConfiguration *)configuration
+{
+    if (configuration)
+        return [self initWithWebView:[[[TestWKWebView alloc] initWithFrame:frame configuration:configuration] autorelease]];
+
+    return [self initWithWebView:[[[TestWKWebView alloc] initWithFrame:frame] autorelease]];
+}
+
 - (instancetype)initWithWebView:(TestWKWebView *)webView
 {
     if (self = [super init]) {
@@ -344,6 +358,7 @@ static NSArray *dragAndDropEventNames()
 
 - (void)_resetSimulatedState
 {
+    _suppressedSelectionCommandsDuringDrop = NO;
     _phase = DragAndDropPhaseBeginning;
     _currentProgress = 0;
     _isDoneWithCurrentRun = false;
@@ -501,7 +516,7 @@ static NSArray *dragAndDropEventNames()
 
     switch (_phase) {
     case DragAndDropPhaseBeginning: {
-        NSMutableArray<UIItemProvider *> *itemProviders = [NSMutableArray array];
+        NSMutableArray<NSItemProvider *> *itemProviders = [NSMutableArray array];
         NSArray *items = [[_webView dragInteractionDelegate] dragInteraction:[_webView dragInteraction] itemsForBeginningSession:_dragSession.get()];
         if (!items.count) {
             _phase = DragAndDropPhaseCancelled;
@@ -555,6 +570,11 @@ static NSArray *dragAndDropEventNames()
     [self _scheduleAdvanceProgress];
 }
 
+- (void)clearExternalDragInformation
+{
+    _externalItemProviders = nil;
+}
+
 - (CGPoint)_currentLocation
 {
     CGFloat distanceX = _endLocation.x - _startLocation.x;
@@ -623,10 +643,16 @@ static NSArray *dragAndDropEventNames()
     [[_webView dragInteractionDelegate] dragInteraction:[_webView dragInteraction] sessionDidTransferItems:_dragSession.get()];
 }
 
+- (TestWKWebView *)webView
+{
+    return _webView.get();
+}
+
 #pragma mark - WKUIDelegatePrivate
 
-- (void)_webView:(WKWebView *)webView dataInteractionOperationWasHandled:(BOOL)handled forSession:(id)session itemProviders:(NSArray<UIItemProvider *> *)itemProviders
+- (void)_webView:(WKWebView *)webView dataInteractionOperationWasHandled:(BOOL)handled forSession:(id)session itemProviders:(NSArray<NSItemProvider *> *)itemProviders
 {
+    _suppressedSelectionCommandsDuringDrop = [_webView textInputContentView]._shouldSuppressSelectionCommands;
     _isDoneWithCurrentRun = true;
 
     if (self.dropCompletionBlock)
@@ -638,7 +664,7 @@ static NSArray *dragAndDropEventNames()
     return self.overrideDragUpdateBlock ? self.overrideDragUpdateBlock(operation, session) : operation;
 }
 
-- (NSArray *)_webView:(WKWebView *)webView adjustedDataInteractionItemProvidersForItemProvider:(UIItemProvider *)itemProvider representingObjects:(NSArray *)representingObjects additionalData:(NSDictionary *)additionalData
+- (NSArray *)_webView:(WKWebView *)webView adjustedDataInteractionItemProvidersForItemProvider:(NSItemProvider *)itemProvider representingObjects:(NSArray *)representingObjects additionalData:(NSDictionary *)additionalData
 {
     return self.convertItemProvidersBlock ? self.convertItemProvidersBlock(itemProvider, representingObjects, additionalData) : @[ itemProvider ];
 }
@@ -662,7 +688,7 @@ static NSArray *dragAndDropEventNames()
     return self.overridePerformDropBlock ? self.overridePerformDropBlock(session) : session.items;
 }
 
-- (void)_webView:(WKWebView *)webView didInsertAttachment:(_WKAttachment *)attachment
+- (void)_webView:(WKWebView *)webView didInsertAttachment:(_WKAttachment *)attachment withSource:(NSString *)source
 {
     [_insertedAttachments addObject:attachment];
 }
@@ -686,4 +712,4 @@ static NSArray *dragAndDropEventNames()
 
 @end
 
-#endif // ENABLE(DRAG_SUPPORT) && PLATFORM(IOS) && WK_API_ENABLED
+#endif // ENABLE(DRAG_SUPPORT) && PLATFORM(IOS_FAMILY) && WK_API_ENABLED