Changeset 238360 in webkit


Ignore:
Timestamp:
Nov 17, 2018 10:17:44 PM (5 years ago)
Author:
Wenson Hsieh
Message:

[iOS] Remove all usages of UIItemProvider, UIItemProviderReading, and related classes
https://bugs.webkit.org/show_bug.cgi?id=191819

Reviewed by Dan Bernstein.

Replace UIItemProvider (and related classes) with NSItemProvider.

Source/WebCore:

  • platform/ios/PlatformPasteboardIOS.mm:

(WebCore::registerItemToPasteboard):

  • platform/ios/WebItemProviderPasteboard.h:
  • platform/ios/WebItemProviderPasteboard.mm:

(-[WebItemProviderDataRegistrar registerItemProvider:]):
(-[WebItemProviderWritableObjectRegistrar initWithObject:]):
(-[WebItemProviderWritableObjectRegistrar representingObject]):
(-[WebItemProviderWritableObjectRegistrar registerItemProvider:]):
(-[WebItemProviderRegistrationInfoList addRepresentingObject:]):
(-[WebItemProviderRegistrationInfoList itemProvider]):
(-[WebItemProviderPasteboard pasteboardTypes]):
(-[WebItemProviderPasteboard _preLoadedDataConformingToType:forItemProviderAtIndex:]):
(-[WebItemProviderPasteboard dataForPasteboardType:inItemSet:]):
(allLoadableClasses):
(classForTypeIdentifier):
(-[WebItemProviderPasteboard valuesForPasteboardType:inItemSet:]):
(-[WebItemProviderPasteboard numberOfFiles]):
(-[WebItemProviderPasteboard itemProviderAtIndex:]):
(-[WebItemProviderPasteboard enumerateItemProvidersWithBlock:]):

  • platform/mac/DragDataMac.mm:

(WebCore::DragData::containsURL const):

Source/WebCore/PAL:

  • pal/spi/ios/UIKitSPI.h:

Source/WebKit:

  • Platform/spi/ios/UIKitSPI.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _itemsForBeginningOrAddingToSessionWithRegistrationList:stagedDragSource:]):
(-[WKContentView dropInteraction:performDrop:]):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:

(platformCopyPNG):

  • TestWebKitAPI/Tests/ios/DragAndDropTestsIOS.mm:

(-[NSItemProvider registerDataRepresentationForTypeIdentifier:withData:]):

Replace usages of this deprecated method with -registerDataRepresentationForTypeIdentifier:visibility:loadHandler:.

(checkEstimatedSize):
(checkSuggestedNameAndEstimatedSize):
(TestWebKitAPI::TEST):
(-[UIItemProvider registerDataRepresentationForTypeIdentifier:withData:]): Deleted.

  • TestWebKitAPI/cocoa/DragAndDropSimulator.h:
  • TestWebKitAPI/ios/DragAndDropSimulatorIOS.mm:

(-[MockDragDropSession canLoadObjectsOfClass:]):
(-[MockDragDropSession canLoadObjectsOfClasses:]):
(-[MockDropSession initWithProviders:location:window:allowMove:]):
(-[MockDropSession canCreateItemsOfClass:]):
(-[DragAndDropSimulator _advanceProgress]):
(-[DragAndDropSimulator _webView:dataInteractionOperationWasHandled:forSession:itemProviders:]):
(-[DragAndDropSimulator _webView:adjustedDataInteractionItemProvidersForItemProvider:representingObjects:additionalData:]):

  • TestWebKitAPI/ios/UIKitSPI.h:
Location:
trunk
Files:
16 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r238359 r238360  
     12018-11-17  Wenson Hsieh  <wenson_hsieh@apple.com>
     2
     3        [iOS] Remove all usages of UIItemProvider, UIItemProviderReading, and related classes
     4        https://bugs.webkit.org/show_bug.cgi?id=191819
     5
     6        Reviewed by Dan Bernstein.
     7
     8        Replace UIItemProvider (and related classes) with NSItemProvider.
     9
     10        * platform/ios/PlatformPasteboardIOS.mm:
     11        (WebCore::registerItemToPasteboard):
     12        * platform/ios/WebItemProviderPasteboard.h:
     13        * platform/ios/WebItemProviderPasteboard.mm:
     14        (-[WebItemProviderDataRegistrar registerItemProvider:]):
     15        (-[WebItemProviderWritableObjectRegistrar initWithObject:]):
     16        (-[WebItemProviderWritableObjectRegistrar representingObject]):
     17        (-[WebItemProviderWritableObjectRegistrar registerItemProvider:]):
     18        (-[WebItemProviderRegistrationInfoList addRepresentingObject:]):
     19        (-[WebItemProviderRegistrationInfoList itemProvider]):
     20        (-[WebItemProviderPasteboard pasteboardTypes]):
     21        (-[WebItemProviderPasteboard _preLoadedDataConformingToType:forItemProviderAtIndex:]):
     22        (-[WebItemProviderPasteboard dataForPasteboardType:inItemSet:]):
     23        (allLoadableClasses):
     24        (classForTypeIdentifier):
     25        (-[WebItemProviderPasteboard valuesForPasteboardType:inItemSet:]):
     26        (-[WebItemProviderPasteboard numberOfFiles]):
     27        (-[WebItemProviderPasteboard itemProviderAtIndex:]):
     28        (-[WebItemProviderPasteboard enumerateItemProvidersWithBlock:]):
     29        * platform/mac/DragDataMac.mm:
     30        (WebCore::DragData::containsURL const):
     31
    1322018-11-17  Ross Kirsling  <ross.kirsling@sony.com>
    233
  • trunk/Source/WebCore/PAL/ChangeLog

    r238298 r238360  
     12018-11-17  Wenson Hsieh  <wenson_hsieh@apple.com>
     2
     3        [iOS] Remove all usages of UIItemProvider, UIItemProviderReading, and related classes
     4        https://bugs.webkit.org/show_bug.cgi?id=191819
     5
     6        Reviewed by Dan Bernstein.
     7
     8        Replace UIItemProvider (and related classes) with NSItemProvider.
     9
     10        * pal/spi/ios/UIKitSPI.h:
     11
    1122018-11-16  Brent Fulgham  <bfulgham@apple.com>
    213
  • trunk/Source/WebCore/PAL/pal/spi/ios/UIKitSPI.h

    r238078 r238360  
    4040
    4141#if ENABLE(DATA_INTERACTION)
    42 #import <UIKit/NSAttributedString+UIItemProvider.h>
    43 #import <UIKit/NSString+UIItemProvider.h>
     42#import <UIKit/NSItemProvider+UIKitAdditions.h>
     43#import <UIKit/NSItemProvider+UIKitAdditions_Private.h>
    4444#import <UIKit/NSURL+UIItemProvider.h>
    45 #import <UIKit/UIImage+UIItemProvider.h>
    46 #import <UIKit/UIItemProvider_Private.h>
    4745#endif
    4846
     
    118116#endif
    119117
    120 #if ENABLE(DATA_INTERACTION)
    121 
    122 NS_ASSUME_NONNULL_BEGIN
    123 
    124 @interface UIItemProvider : NSItemProvider
    125 @end
    126 
    127 #define UIItemProviderRepresentationOptionsVisibilityAll NSItemProviderRepresentationVisibilityAll
    128 
    129 @protocol UIItemProviderReading <NSItemProviderReading>
    130 
    131 @required
    132 - (nullable instancetype)initWithItemProviderData:(NSData *)data typeIdentifier:(NSString *)typeIdentifier error:(NSError **)outError;
    133 
    134 @end
    135 
    136 @protocol UIItemProviderWriting <NSItemProviderWriting>
    137 
    138 @required
    139 - (NSProgress * _Nullable)loadDataWithTypeIdentifier:(NSString *)typeIdentifier forItemProviderCompletionHandler:(void (^)(NSData * _Nullable, NSError * _Nullable))completionHandler;
    140 
    141 @end
    142 
    143 @interface NSAttributedString () <UIItemProviderReading, UIItemProviderWriting>
    144 @end
    145 
    146 @interface NSString () <UIItemProviderReading, UIItemProviderWriting>
    147 @end
    148 
    149 @interface NSURL () <UIItemProviderReading, UIItemProviderWriting>
    150 @end
    151 
    152 @interface UIImage () <UIItemProviderReading, UIItemProviderWriting>
    153 @end
    154 
    155 NS_ASSUME_NONNULL_END
    156 
    157118#endif
    158 
    159 #endif
  • trunk/Source/WebCore/platform/ios/PlatformPasteboardIOS.mm

    r237266 r238360  
    293293    [pasteboard setItems:@[ itemDictionary.get() ]];
    294294#else
    295     if (UIItemProvider *itemProvider = representationsToRegister.itemProvider)
     295    if (NSItemProvider *itemProvider = representationsToRegister.itemProvider)
    296296        [pasteboard setItemProviders:@[ itemProvider ]];
    297297    else
  • trunk/Source/WebCore/platform/ios/WebItemProviderPasteboard.h

    r233436 r238360  
    2727
    2828#if TARGET_OS_IPHONE && __IPHONE_OS_VERSION_MIN_REQUIRED >= 110000
    29 
    30 // UIItemProviders are not implemented for iOS apps for Mac, because they were depricated last year.
    31 // We need to switch over to NSItemProviders everywhere. This should just be a temporary fix.
    32 #if defined(TARGET_OS_IOSMAC) && TARGET_OS_IOSMAC
    33 
    34 #define UIItemProvider NSItemProvider
    35 #define UIItemProviderReading NSItemProviderReading
    36 #define UIItemProviderWriting NSItemProviderWriting
    37 #define UIItemProviderRepresentationOptionsVisibilityAll NSItemProviderRepresentationVisibilityAll
    38 
    39 #endif
    40 
    41 @class UIItemProvider;
    42 @protocol UIItemProviderWriting;
    4329
    4430struct CGSize;
     
    7864WEBCORE_EXPORT @interface WebItemProviderRegistrationInfoList : NSObject
    7965
    80 - (void)addRepresentingObject:(id <UIItemProviderWriting>)object;
     66- (void)addRepresentingObject:(id <NSItemProviderWriting>)object;
    8167- (void)addData:(NSData *)data forType:(NSString *)typeIdentifier;
    8268- (void)addPromisedType:(NSString *)typeIdentifier fileCallback:(void(^)(WebItemProviderFileCallback))callback;
     
    8470@property (nonatomic) CGSize preferredPresentationSize;
    8571@property (nonatomic, copy) NSString *suggestedName;
    86 @property (nonatomic, readonly, nullable) UIItemProvider *itemProvider;
     72@property (nonatomic, readonly, nullable) __kindof NSItemProvider *itemProvider;
    8773
    8874@property (nonatomic) WebPreferredPresentationStyle preferredPresentationStyle;
     
    115101- (void)decrementPendingOperationCount;
    116102
    117 - (void)enumerateItemProvidersWithBlock:(void (^)(UIItemProvider *itemProvider, NSUInteger index, BOOL *stop))block;
     103- (void)enumerateItemProvidersWithBlock:(void (^)(__kindof NSItemProvider *itemProvider, NSUInteger index, BOOL *stop))block;
    118104
    119105// The given completion block is always dispatched on the main thread.
  • trunk/Source/WebCore/platform/ios/WebItemProviderPasteboard.mm

    r234809 r238360  
    4646SOFT_LINK_CLASS(UIKit, UIColor)
    4747SOFT_LINK_CLASS(UIKit, UIImage)
    48 SOFT_LINK_CLASS(UIKit, UIItemProvider)
    4948
    5049typedef void(^ItemProviderDataLoadCompletionHandler)(NSData *, NSError *);
     
    9897- (void)registerItemProvider:(NSItemProvider *)itemProvider
    9998{
    100     [itemProvider registerDataRepresentationForTypeIdentifier:self.typeIdentifier visibility:UIItemProviderRepresentationOptionsVisibilityAll loadHandler:[itemData = _data] (ItemProviderDataLoadCompletionHandler completionHandler) -> NSProgress * {
     99    [itemProvider registerDataRepresentationForTypeIdentifier:self.typeIdentifier visibility:NSItemProviderRepresentationVisibilityAll loadHandler:[itemData = _data] (ItemProviderDataLoadCompletionHandler completionHandler) -> NSProgress * {
    101100        completionHandler(itemData.get(), nil);
    102101        return nil;
     
    112111
    113112@interface WebItemProviderWritableObjectRegistrar : NSObject <WebItemProviderRegistrar>
    114 - (instancetype)initWithObject:(id <UIItemProviderWriting>)representingObject;
    115 @property (nonatomic, readonly) id <UIItemProviderWriting> representingObject;
     113- (instancetype)initWithObject:(id <NSItemProviderWriting>)representingObject;
     114@property (nonatomic, readonly) id <NSItemProviderWriting> representingObject;
    116115@end
    117116
    118117@implementation WebItemProviderWritableObjectRegistrar {
    119     RetainPtr<id <UIItemProviderWriting>> _representingObject;
    120 }
    121 
    122 - (instancetype)initWithObject:(id <UIItemProviderWriting>)representingObject
     118    RetainPtr<id <NSItemProviderWriting>> _representingObject;
     119}
     120
     121- (instancetype)initWithObject:(id <NSItemProviderWriting>)representingObject
    123122{
    124123    if (!(self = [super init]))
     
    129128}
    130129
    131 - (id <UIItemProviderWriting>)representingObject
     130- (id <NSItemProviderWriting>)representingObject
    132131{
    133132    return _representingObject.get();
     
    141140- (void)registerItemProvider:(NSItemProvider *)itemProvider
    142141{
    143     [itemProvider registerObject:self.representingObject visibility:UIItemProviderRepresentationOptionsVisibilityAll];
     142    [itemProvider registerObject:self.representingObject visibility:NSItemProviderRepresentationVisibilityAll];
    144143}
    145144
     
    225224}
    226225
    227 - (void)addRepresentingObject:(id <UIItemProviderWriting>)object
    228 {
    229     ASSERT([object conformsToProtocol:@protocol(UIItemProviderWriting)]);
     226- (void)addRepresentingObject:(id <NSItemProviderWriting>)object
     227{
     228    ASSERT([object conformsToProtocol:@protocol(NSItemProviderWriting)]);
    230229    auto representation = adoptNS([[WebItemProviderWritableObjectRegistrar alloc] initWithObject:object]);
    231230    [_representations addObject:representation.get()];
     
    274273#endif
    275274
    276 - (UIItemProvider *)itemProvider
     275- (NSItemProvider *)itemProvider
    277276{
    278277    if (!self.numberOfItems)
    279278        return nil;
    280279
    281     auto itemProvider = adoptNS([allocUIItemProviderInstance() init]);
     280    auto itemProvider = adoptNS([NSItemProvider new]);
    282281    for (id <WebItemProviderRegistrar> representation in _representations.get())
    283282        [representation registerItemProvider:itemProvider.get()];
    284283    [itemProvider setSuggestedName:self.suggestedName];
    285     // UIItemProviders are not implemented for iOS apps for Mac, because they were depricated last year.
    286     // We need to switch over to NSItemProviders everywhere. This should just be a temporary fix.
    287284#if !PLATFORM(IOSMAC)
    288285    [itemProvider setPreferredPresentationSize:self.preferredPresentationSize];
     
    455452    NSMutableSet<NSString *> *allTypes = [NSMutableSet set];
    456453    NSMutableArray<NSString *> *allTypesInOrder = [NSMutableArray array];
    457     for (UIItemProvider *provider in _itemProviders.get()) {
     454    for (NSItemProvider *provider in _itemProviders.get()) {
    458455        for (NSString *typeIdentifier in provider.registeredTypeIdentifiers) {
    459456            if ([allTypes containsObject:typeIdentifier])
     
    502499            continue;
    503500
    504         // We've already loaded data relevant for this UTI type onto disk, so there's no need to ask the UIItemProvider for the same data again.
     501        // We've already loaded data relevant for this UTI type onto disk, so there's no need to ask the NSItemProvider for the same data again.
    505502        if (NSData *result = [NSData dataWithContentsOfURL:[loadResult fileURLForType:loadedType] options:NSDataReadingMappedIfSafe error:nil])
    506503            return result;
     
    522519    RetainPtr<WebItemProviderPasteboard> retainedSelf = self;
    523520    [itemSet enumerateIndexesUsingBlock:[retainedSelf, pasteboardType, values] (NSUInteger index, BOOL *) {
    524         UIItemProvider *provider = [retainedSelf itemProviderAtIndex:index];
     521        NSItemProvider *provider = [retainedSelf itemProviderAtIndex:index];
    525522        if (!provider)
    526523            return;
     
    532529}
    533530
    534 static NSArray<Class<UIItemProviderReading>> *allLoadableClasses()
     531static NSArray<Class<NSItemProviderReading>> *allLoadableClasses()
    535532{
    536533    return @[ [getUIColorClass() class], [getUIImageClass() class], [NSURL class], [NSString class], [NSAttributedString class] ];
     
    541538    outTypeIdentifierToLoad = typeIdentifier;
    542539
    543     // First, try to load a platform UIItemProviderReading-conformant object as-is.
    544     for (Class<UIItemProviderReading> loadableClass in allLoadableClasses()) {
     540    // First, try to load a platform NSItemProviderReading-conformant object as-is.
     541    for (Class<NSItemProviderReading> loadableClass in allLoadableClasses()) {
    545542        if ([[loadableClass readableTypeIdentifiersForItemProvider] containsObject:(NSString *)typeIdentifier])
    546543            return loadableClass;
     
    566563    RetainPtr<WebItemProviderPasteboard> retainedSelf = self;
    567564    [itemSet enumerateIndexesUsingBlock:[retainedSelf, pasteboardType, values] (NSUInteger index, BOOL *) {
    568         UIItemProvider *provider = [retainedSelf itemProviderAtIndex:index];
     565        NSItemProvider *provider = [retainedSelf itemProviderAtIndex:index];
    569566        if (!provider)
    570567            return;
     
    646643    NSArray *supportedFileTypes = Pasteboard::supportedFileUploadPasteboardTypes();
    647644    NSInteger numberOfFiles = 0;
    648     for (UIItemProvider *itemProvider in _itemProviders.get()) {
     645    for (NSItemProvider *itemProvider in _itemProviders.get()) {
    649646        if (itemProvider.preferredPresentationStyle == UIPreferredPresentationStyleInline)
    650647            continue;
     
    794791}
    795792
    796 - (UIItemProvider *)itemProviderAtIndex:(NSUInteger)index
     793- (NSItemProvider *)itemProviderAtIndex:(NSUInteger)index
    797794{
    798795    return index < [_itemProviders count] ? [_itemProviders objectAtIndex:index] : nil;
     
    814811}
    815812
    816 - (void)enumerateItemProvidersWithBlock:(void (^)(UIItemProvider *itemProvider, NSUInteger index, BOOL *stop))block
     813- (void)enumerateItemProvidersWithBlock:(void (^)(__kindof NSItemProvider *itemProvider, NSUInteger index, BOOL *stop))block
    817814{
    818815    [_itemProviders enumerateObjectsUsingBlock:block];
  • trunk/Source/WebCore/platform/mac/DragDataMac.mm

    r237266 r238360  
    275275    auto urlString = platformStrategies()->pasteboardStrategy()->stringForType(urlPasteboardType(), m_pasteboardName);
    276276    if (urlString.isEmpty()) {
    277         // On iOS, we don't get access to the contents of UIItemProviders until we perform the drag operation.
     277        // On iOS, we don't get access to the contents of NSItemProviders until we perform the drag operation.
    278278        // Thus, we consider DragData to contain an URL if it contains the `public.url` UTI type. Later down the
    279279        // road, when we perform the drag operation, we can then check if the URL's protocol is http or https,
  • trunk/Source/WebKit/ChangeLog

    r238358 r238360  
     12018-11-17  Wenson Hsieh  <wenson_hsieh@apple.com>
     2
     3        [iOS] Remove all usages of UIItemProvider, UIItemProviderReading, and related classes
     4        https://bugs.webkit.org/show_bug.cgi?id=191819
     5
     6        Reviewed by Dan Bernstein.
     7
     8        Replace UIItemProvider (and related classes) with NSItemProvider.
     9
     10        * Platform/spi/ios/UIKitSPI.h:
     11        * UIProcess/ios/WKContentViewInteraction.mm:
     12        (-[WKContentView _itemsForBeginningOrAddingToSessionWithRegistrationList:stagedDragSource:]):
     13        (-[WKContentView dropInteraction:performDrop:]):
     14
    1152018-11-17  Ross Kirsling  <ross.kirsling@sony.com>
    216
  • trunk/Source/WebKit/Platform/spi/ios/UIKitSPI.h

    r238235 r238360  
    9292#if ENABLE(DRAG_SUPPORT)
    9393#import <UIKit/NSItemProvider+UIKitAdditions_Private.h>
    94 #import <UIKit/UIItemProvider_Private.h>
    9594#endif
    9695
     
    936935#if ENABLE(DRAG_SUPPORT)
    937936
    938 @interface UIItemProvider : NSItemProvider
    939 @end
    940 
    941937WTF_EXTERN_C_BEGIN
    942938
  • trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm

    r238235 r238360  
    53055305}
    53065306
    5307 static NSArray<UIItemProvider *> *extractItemProvidersFromDragItems(NSArray<UIDragItem *> *dragItems)
    5308 {
    5309     NSMutableArray<UIItemProvider *> *providers = [NSMutableArray array];
     5307static NSArray<NSItemProvider *> *extractItemProvidersFromDragItems(NSArray<UIDragItem *> *dragItems)
     5308{
     5309    NSMutableArray<NSItemProvider *> *providers = [NSMutableArray array];
    53105310    for (UIDragItem *item in dragItems) {
    5311         RetainPtr<UIItemProvider> provider = item.itemProvider;
    5312         if (provider)
    5313             [providers addObject:provider.get()];
     5311        if (NSItemProvider *provider = item.itemProvider)
     5312            [providers addObject:provider];
    53145313    }
    53155314    return providers;
    53165315}
    53175316
    5318 static NSArray<UIItemProvider *> *extractItemProvidersFromDropSession(id <UIDropSession> session)
     5317static NSArray<NSItemProvider *> *extractItemProvidersFromDropSession(id <UIDropSession> session)
    53195318{
    53205319    return extractItemProvidersFromDragItems(session.items);
     
    54925491- (NSArray<UIDragItem *> *)_itemsForBeginningOrAddingToSessionWithRegistrationList:(WebItemProviderRegistrationInfoList *)registrationList stagedDragSource:(const DragSourceState&)stagedDragSource
    54935492{
    5494     UIItemProvider *defaultItemProvider = registrationList.itemProvider;
     5493    NSItemProvider *defaultItemProvider = registrationList.itemProvider;
    54955494    if (!defaultItemProvider)
    54965495        return @[ ];
     
    55125511
    55135512    NSMutableArray *dragItems = [NSMutableArray arrayWithCapacity:adjustedItemProviders.count];
    5514     for (UIItemProvider *itemProvider in adjustedItemProviders) {
     5513    for (NSItemProvider *itemProvider in adjustedItemProviders) {
    55155514        auto item = adoptNS([[UIDragItem alloc] initWithItemProvider:itemProvider]);
    55165515        [item _setPrivateLocalContext:@(stagedDragSource.itemIdentifier)];
     
    57765775- (void)dropInteraction:(UIDropInteraction *)interaction performDrop:(id <UIDropSession>)session
    57775776{
    5778     NSArray <UIItemProvider *> *itemProviders = extractItemProvidersFromDropSession(session);
     5777    NSArray <NSItemProvider *> *itemProviders = extractItemProvidersFromDropSession(session);
    57795778    id <WKUIDelegatePrivate> uiDelegate = self.webViewUIDelegate;
    57805779    if ([uiDelegate respondsToSelector:@selector(_webView:performDataInteractionOperationWithItemProviders:)]) {
  • trunk/Tools/ChangeLog

    r238356 r238360  
     12018-11-17  Wenson Hsieh  <wenson_hsieh@apple.com>
     2
     3        [iOS] Remove all usages of UIItemProvider, UIItemProviderReading, and related classes
     4        https://bugs.webkit.org/show_bug.cgi?id=191819
     5
     6        Reviewed by Dan Bernstein.
     7
     8        Replace UIItemProvider (and related classes) with NSItemProvider.
     9
     10        * TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:
     11        (platformCopyPNG):
     12        * TestWebKitAPI/Tests/ios/DragAndDropTestsIOS.mm:
     13        (-[NSItemProvider registerDataRepresentationForTypeIdentifier:withData:]):
     14
     15        Replace usages of this deprecated method with `-registerDataRepresentationForTypeIdentifier:visibility:loadHandler:`.
     16
     17        (checkEstimatedSize):
     18        (checkSuggestedNameAndEstimatedSize):
     19        (TestWebKitAPI::TEST):
     20        (-[UIItemProvider registerDataRepresentationForTypeIdentifier:withData:]): Deleted.
     21        * TestWebKitAPI/cocoa/DragAndDropSimulator.h:
     22        * TestWebKitAPI/ios/DragAndDropSimulatorIOS.mm:
     23        (-[MockDragDropSession canLoadObjectsOfClass:]):
     24        (-[MockDragDropSession canLoadObjectsOfClasses:]):
     25        (-[MockDropSession initWithProviders:location:window:allowMove:]):
     26        (-[MockDropSession canCreateItemsOfClass:]):
     27        (-[DragAndDropSimulator _advanceProgress]):
     28        (-[DragAndDropSimulator _webView:dataInteractionOperationWasHandled:forSession:itemProviders:]):
     29        (-[DragAndDropSimulator _webView:adjustedDataInteractionItemProvidersForItemProvider:representingObjects:additionalData:]):
     30        * TestWebKitAPI/ios/UIKitSPI.h:
     31
    1322018-11-17  Chris Dumez  <cdumez@apple.com>
    233
  • trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm

    r238186 r238360  
    533533#elif PLATFORM(IOS_FAMILY)
    534534    UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
    535     auto item = adoptNS([[UIItemProvider alloc] init]);
     535    auto item = adoptNS([[NSItemProvider alloc] init]);
    536536    [item setPreferredPresentationStyle:UIPreferredPresentationStyleAttachment];
    537537    [item registerData:testImageData() type:(__bridge NSString *)kUTTypePNG];
  • trunk/Tools/TestWebKitAPI/Tests/ios/DragAndDropTestsIOS.mm

    r238188 r238360  
    4646typedef void (^FileLoadCompletionBlock)(NSURL *, BOOL, NSError *);
    4747typedef void (^DataLoadCompletionBlock)(NSData *, NSError *);
    48 typedef void (^UIItemProviderDataLoadCompletionBlock)(NSData *, NSError *);
     48typedef void (^NSItemProviderDataLoadCompletionBlock)(NSData *, NSError *);
    4949
    5050#if !USE(APPLE_INTERNAL_SDK)
    5151
    52 @interface UIItemProviderRepresentationOptions : NSObject
     52@interface NSItemProviderRepresentationOptions : NSObject
    5353@end
    5454
    5555#endif
    5656
    57 @interface UIItemProvider()
    58 + (UIItemProvider *)itemProviderWithURL:(NSURL *)url title:(NSString *)title;
    59 - (void) registerDataRepresentationForTypeIdentifier:(NSString *)typeIdentifier options:(UIItemProviderRepresentationOptions*)options loadHandler:(NSProgress * (^)(void (^UIItemProviderDataLoadCompletionBlock)(NSData *item, NSError *error))) loadHandler;
     57@interface NSItemProvider ()
     58+ (NSItemProvider *)itemProviderWithURL:(NSURL *)url title:(NSString *)title;
    6059@end
    6160
     
    7372}
    7473
    75 @implementation UIItemProvider (DragAndDropTests)
     74@implementation NSItemProvider (DragAndDropTests)
    7675
    7776- (void)registerDataRepresentationForTypeIdentifier:(NSString *)typeIdentifier withData:(NSData *)data
    7877{
    7978    RetainPtr<NSData> retainedData = data;
    80     [self registerDataRepresentationForTypeIdentifier:typeIdentifier visibility:UIItemProviderRepresentationOptionsVisibilityAll loadHandler: [retainedData] (DataLoadCompletionBlock block) -> NSProgress * {
     79    [self registerDataRepresentationForTypeIdentifier:typeIdentifier visibility:NSItemProviderRepresentationVisibilityAll loadHandler: [retainedData] (DataLoadCompletionBlock block) -> NSProgress * {
    8180        block(retainedData.get(), nil);
    8281        return [NSProgress discreteProgressWithTotalUnitCount:100];
     
    147146static void checkEstimatedSize(DragAndDropSimulator *simulator, CGSize estimatedSize)
    148147{
    149     UIItemProvider *sourceItemProvider = [simulator sourceItemProviders].firstObject;
     148    NSItemProvider *sourceItemProvider = [simulator sourceItemProviders].firstObject;
    150149    EXPECT_EQ(estimatedSize.width, sourceItemProvider.preferredPresentationSize.width);
    151150    EXPECT_EQ(estimatedSize.height, sourceItemProvider.preferredPresentationSize.height);
     
    154153static void checkSuggestedNameAndEstimatedSize(DragAndDropSimulator *simulator, NSString *suggestedName, CGSize estimatedSize)
    155154{
    156     UIItemProvider *sourceItemProvider = [simulator sourceItemProviders].firstObject;
     155    NSItemProvider *sourceItemProvider = [simulator sourceItemProviders].firstObject;
    157156    EXPECT_WK_STREQ(suggestedName.UTF8String, sourceItemProvider.suggestedName.UTF8String);
    158157    EXPECT_EQ(estimatedSize.width, sourceItemProvider.preferredPresentationSize.width);
     
    495494
    496495    __block bool doneLoadingURL = false;
    497     UIItemProvider *sourceItemProvider = [simulator sourceItemProviders].firstObject;
     496    NSItemProvider *sourceItemProvider = [simulator sourceItemProviders].firstObject;
    498497    [sourceItemProvider loadObjectOfClass:[NSURL class] completionHandler:^(id object, NSError *error) {
    499498        NSURL *url = object;
     
    600599    [webView synchronouslyLoadTestPageNamed:@"contenteditable-in-iframe"];
    601600
    602     auto itemProvider = adoptNS([[UIItemProvider alloc] init]);
    603     [itemProvider registerObject:@"Hello world" visibility:UIItemProviderRepresentationOptionsVisibilityAll];
     601    auto itemProvider = adoptNS([[NSItemProvider alloc] init]);
     602    [itemProvider registerObject:@"Hello world" visibility:NSItemProviderRepresentationVisibilityAll];
    604603
    605604    auto simulator = adoptNS([[DragAndDropSimulator alloc] initWithWebView:webView.get()]);
     
    619618    [webView synchronouslyLoadTestPageNamed:@"file-uploading"];
    620619
    621     auto simulatedItemProvider = adoptNS([[UIItemProvider alloc] init]);
     620    auto simulatedItemProvider = adoptNS([[NSItemProvider alloc] init]);
    622621    [simulatedItemProvider setPreferredPresentationStyle:UIPreferredPresentationStyleInline];
    623622    [simulatedItemProvider registerObject:@"This item provider requested inline presentation style." visibility:NSItemProviderRepresentationVisibilityAll];
     
    635634    [webView synchronouslyLoadTestPageNamed:@"file-uploading"];
    636635
    637     auto simulatedJSONItemProvider = adoptNS([[UIItemProvider alloc] init]);
     636    auto simulatedJSONItemProvider = adoptNS([[NSItemProvider alloc] init]);
    638637    NSData *jsonData = [@"{ \"foo\": \"bar\",  \"bar\": \"baz\" }" dataUsingEncoding:NSUTF8StringEncoding];
    639638    [simulatedJSONItemProvider registerDataRepresentationForTypeIdentifier:(__bridge NSString *)kUTTypeJSON withData:jsonData];
     
    651650    [webView synchronouslyLoadTestPageNamed:@"file-uploading"];
    652651
    653     auto simulatedImageItemProvider = adoptNS([[UIItemProvider alloc] init]);
     652    auto simulatedImageItemProvider = adoptNS([[NSItemProvider alloc] init]);
    654653    NSData *imageData = UIImageJPEGRepresentation(testIconImage(), 0.5);
    655654    [simulatedImageItemProvider registerDataRepresentationForTypeIdentifier:(__bridge NSString *)kUTTypeJPEG withData:imageData];
     
    668667    [webView synchronouslyLoadTestPageNamed:@"file-uploading"];
    669668
    670     auto simulatedHTMLItemProvider = adoptNS([[UIItemProvider alloc] init]);
     669    auto simulatedHTMLItemProvider = adoptNS([[NSItemProvider alloc] init]);
    671670    NSData *htmlData = [@"<body contenteditable></body>" dataUsingEncoding:NSUTF8StringEncoding];
    672671    [simulatedHTMLItemProvider registerDataRepresentationForTypeIdentifier:(__bridge NSString *)kUTTypeHTML withData:htmlData];
     
    688687    [webView stringByEvaluatingJavaScript:@"upload.dropEffect = 'move'"];
    689688
    690     auto simulatedHTMLItemProvider = adoptNS([[UIItemProvider alloc] init]);
     689    auto simulatedHTMLItemProvider = adoptNS([[NSItemProvider alloc] init]);
    691690    NSData *htmlData = [@"<body contenteditable></body>" dataUsingEncoding:NSUTF8StringEncoding];
    692691    [simulatedHTMLItemProvider registerDataRepresentationForTypeIdentifier:(__bridge NSString *)kUTTypeHTML withData:htmlData];
     
    705704    [webView synchronouslyLoadTestPageNamed:@"file-uploading"];
    706705
    707     auto archiveProvider = adoptNS([[UIItemProvider alloc] init]);
     706    auto archiveProvider = adoptNS([[NSItemProvider alloc] init]);
    708707    [archiveProvider registerDataRepresentationForTypeIdentifier:(__bridge NSString *)kUTTypeZipArchive withData:testZIPArchive()];
    709708
    710     auto urlProvider = adoptNS([[UIItemProvider alloc] init]);
    711     [urlProvider registerObject:[NSURL URLWithString:@"https://webkit.org"] visibility:UIItemProviderRepresentationOptionsVisibilityAll];
     709    auto urlProvider = adoptNS([[NSItemProvider alloc] init]);
     710    [urlProvider registerObject:[NSURL URLWithString:@"https://webkit.org"] visibility:NSItemProviderRepresentationVisibilityAll];
    712711
    713712    auto simulator = adoptNS([[DragAndDropSimulator alloc] initWithWebView:webView.get()]);
     
    724723    [webView synchronouslyLoadTestPageNamed:@"file-uploading"];
    725724
    726     auto itemProvider = adoptNS([[UIItemProvider alloc] init]);
     725    auto itemProvider = adoptNS([[NSItemProvider alloc] init]);
    727726    [itemProvider registerDataRepresentationForTypeIdentifier:(__bridge NSString *)kUTTypeZipArchive withData:testZIPArchive()];
    728727
     
    740739    [webView synchronouslyLoadTestPageNamed:@"file-uploading"];
    741740
    742     auto simulatedImageItemProvider = adoptNS([[UIItemProvider alloc] init]);
     741    auto simulatedImageItemProvider = adoptNS([[NSItemProvider alloc] init]);
    743742    NSData *imageData = UIImageJPEGRepresentation(testIconImage(), 0.5);
    744743    [simulatedImageItemProvider registerDataRepresentationForTypeIdentifier:(__bridge NSString *)kUTTypeJPEG withData:imageData];
    745744
    746     auto simulatedHTMLItemProvider = adoptNS([[UIItemProvider alloc] init]);
     745    auto simulatedHTMLItemProvider = adoptNS([[NSItemProvider alloc] init]);
    747746    NSData *htmlData = [@"<body contenteditable></body>" dataUsingEncoding:NSUTF8StringEncoding];
    748747    [simulatedHTMLItemProvider registerDataRepresentationForTypeIdentifier:(__bridge NSString *)kUTTypeHTML withData:htmlData];
     
    762761    [webView stringByEvaluatingJavaScript:@"input.setAttribute('multiple', '')"];
    763762
    764     auto simulatedImageItemProvider = adoptNS([[UIItemProvider alloc] init]);
     763    auto simulatedImageItemProvider = adoptNS([[NSItemProvider alloc] init]);
    765764    NSData *imageData = UIImageJPEGRepresentation(testIconImage(), 0.5);
    766765    [simulatedImageItemProvider registerDataRepresentationForTypeIdentifier:(__bridge NSString *)kUTTypeJPEG withData:imageData];
    767766
    768     auto simulatedHTMLItemProvider = adoptNS([[UIItemProvider alloc] init]);
     767    auto simulatedHTMLItemProvider = adoptNS([[NSItemProvider alloc] init]);
    769768    NSData *htmlData = [@"<body contenteditable></body>" dataUsingEncoding:NSUTF8StringEncoding];
    770769    [simulatedHTMLItemProvider registerDataRepresentationForTypeIdentifier:(__bridge NSString *)kUTTypeHTML withData:htmlData];
     
    783782    [webView synchronouslyLoadTestPageNamed:@"file-uploading"];
    784783
    785     auto simulatedImageItemProvider = adoptNS([[UIItemProvider alloc] init]);
     784    auto simulatedImageItemProvider = adoptNS([[NSItemProvider alloc] init]);
    786785    NSData *imageData = UIImageJPEGRepresentation(testIconImage(), 0.5);
    787786    [simulatedImageItemProvider registerDataRepresentationForTypeIdentifier:(__bridge NSString *)kUTTypeJPEG withData:imageData];
    788787
    789     auto firstSimulatedHTMLItemProvider = adoptNS([[UIItemProvider alloc] init]);
     788    auto firstSimulatedHTMLItemProvider = adoptNS([[NSItemProvider alloc] init]);
    790789    NSData *firstHTMLData = [@"<body contenteditable></body>" dataUsingEncoding:NSUTF8StringEncoding];
    791790    [firstSimulatedHTMLItemProvider registerDataRepresentationForTypeIdentifier:(__bridge NSString *)kUTTypeHTML withData:firstHTMLData];
    792791
    793     auto secondSimulatedHTMLItemProvider = adoptNS([[UIItemProvider alloc] init]);
     792    auto secondSimulatedHTMLItemProvider = adoptNS([[NSItemProvider alloc] init]);
    794793    NSData *secondHTMLData = [@"<html><body>hello world</body></html>" dataUsingEncoding:NSUTF8StringEncoding];
    795794    [secondSimulatedHTMLItemProvider registerDataRepresentationForTypeIdentifier:(__bridge NSString *)kUTTypeHTML withData:secondHTMLData];
     
    811810
    812811    auto simulator = adoptNS([[DragAndDropSimulator alloc] initWithWebView:webView.get()]);
    813     auto itemProvider = adoptNS([[UIItemProvider alloc] init]);
     812    auto itemProvider = adoptNS([[NSItemProvider alloc] init]);
    814813    NSData *htmlData = [@"<h1>This is a test</h1>" dataUsingEncoding:NSUTF8StringEncoding];
    815814    [itemProvider registerDataRepresentationForTypeIdentifier:(__bridge NSString *)kUTTypeHTML withData:htmlData];
     
    831830    NSDictionary *textAttributes = @{ NSFontAttributeName: [UIFont boldSystemFontOfSize:20] };
    832831    NSAttributedString *richText = [[NSAttributedString alloc] initWithString:@"This is a test" attributes:textAttributes];
    833     auto itemProvider = adoptNS([[UIItemProvider alloc] initWithObject:richText]);
     832    auto itemProvider = adoptNS([[NSItemProvider alloc] initWithObject:richText]);
    834833    [simulator setExternalItemProviders:@[ itemProvider.get() ]];
    835834    [simulator runFrom:CGPointMake(300, 400) to:CGPointMake(100, 300)];
     
    847846    NSDictionary *textAttributes = @{ NSForegroundColorAttributeName: [UIColor redColor] };
    848847    NSAttributedString *richText = [[NSAttributedString alloc] initWithString:@"This is a test" attributes:textAttributes];
    849     auto itemProvider = adoptNS([[UIItemProvider alloc] initWithObject:richText]);
     848    auto itemProvider = adoptNS([[NSItemProvider alloc] initWithObject:richText]);
    850849    [simulator setExternalItemProviders:@[ itemProvider.get() ]];
    851850    [simulator runFrom:CGPointMake(300, 400) to:CGPointMake(100, 300)];
     
    862861
    863862    auto simulator = adoptNS([[DragAndDropSimulator alloc] initWithWebView:webView.get()]);
    864     auto firstItem = adoptNS([[UIItemProvider alloc] init]);
    865     [firstItem registerObject:[NSURL URLWithString:@"https://www.apple.com/iphone/"] visibility:UIItemProviderRepresentationOptionsVisibilityAll];
    866     auto secondItem = adoptNS([[UIItemProvider alloc] init]);
    867     [secondItem registerObject:[NSURL URLWithString:@"https://www.apple.com/mac/"] visibility:UIItemProviderRepresentationOptionsVisibilityAll];
    868     auto thirdItem = adoptNS([[UIItemProvider alloc] init]);
    869     [thirdItem registerObject:[NSURL URLWithString:@"https://webkit.org/"] visibility:UIItemProviderRepresentationOptionsVisibilityAll];
     863    auto firstItem = adoptNS([[NSItemProvider alloc] init]);
     864    [firstItem registerObject:[NSURL URLWithString:@"https://www.apple.com/iphone/"] visibility:NSItemProviderRepresentationVisibilityAll];
     865    auto secondItem = adoptNS([[NSItemProvider alloc] init]);
     866    [secondItem registerObject:[NSURL URLWithString:@"https://www.apple.com/mac/"] visibility:NSItemProviderRepresentationVisibilityAll];
     867    auto thirdItem = adoptNS([[NSItemProvider alloc] init]);
     868    [thirdItem registerObject:[NSURL URLWithString:@"https://webkit.org/"] visibility:NSItemProviderRepresentationVisibilityAll];
    870869    [simulator setExternalItemProviders:@[ firstItem.get(), secondItem.get(), thirdItem.get() ]];
    871870    [simulator runFrom:CGPointMake(300, 400) to:CGPointMake(100, 300)];
     
    896895    // than the plain text, and erroneously insert the image. If we respect source fidelities, we'll insert text rather
    897896    // than an image.
    898     auto simulatedItemProviderWithTextFirst = adoptNS([[UIItemProvider alloc] init]);
    899     [simulatedItemProviderWithTextFirst registerObject:@"Hello world" visibility:UIItemProviderRepresentationOptionsVisibilityAll];
    900     [simulatedItemProviderWithTextFirst registerObject:testIconImage() visibility:UIItemProviderRepresentationOptionsVisibilityAll];
     897    auto simulatedItemProviderWithTextFirst = adoptNS([[NSItemProvider alloc] init]);
     898    [simulatedItemProviderWithTextFirst registerObject:@"Hello world" visibility:NSItemProviderRepresentationVisibilityAll];
     899    [simulatedItemProviderWithTextFirst registerObject:testIconImage() visibility:NSItemProviderRepresentationVisibilityAll];
    901900    [simulator setExternalItemProviders:@[ simulatedItemProviderWithTextFirst.get() ]];
    902901
     
    907906
    908907    // Now we register the item providers in reverse, and expect the image to be inserted instead of text.
    909     auto simulatedItemProviderWithImageFirst = adoptNS([[UIItemProvider alloc] init]);
    910     [simulatedItemProviderWithImageFirst registerObject:testIconImage() visibility:UIItemProviderRepresentationOptionsVisibilityAll];
    911     [simulatedItemProviderWithImageFirst registerObject:@"Hello world" visibility:UIItemProviderRepresentationOptionsVisibilityAll];
     908    auto simulatedItemProviderWithImageFirst = adoptNS([[NSItemProvider alloc] init]);
     909    [simulatedItemProviderWithImageFirst registerObject:testIconImage() visibility:NSItemProviderRepresentationVisibilityAll];
     910    [simulatedItemProviderWithImageFirst registerObject:@"Hello world" visibility:NSItemProviderRepresentationVisibilityAll];
    912911    [simulator setExternalItemProviders:@[ simulatedItemProviderWithImageFirst.get() ]];
    913912
     
    931930    NSString *textPayload = @"Ceci n'est pas une string";
    932931    auto simulator = adoptNS([[DragAndDropSimulator alloc] initWithWebView:webView.get()]);
    933     auto simulatedItemProvider = adoptNS([[UIItemProvider alloc] init]);
    934     [simulatedItemProvider registerDataRepresentationForTypeIdentifier:(__bridge NSString *)kUTTypeUTF8PlainText options:nil loadHandler:^NSProgress *(UIItemProviderDataLoadCompletionBlock completionBlock)
     932    auto simulatedItemProvider = adoptNS([[NSItemProvider alloc] init]);
     933    [simulatedItemProvider registerDataRepresentationForTypeIdentifier:(__bridge NSString *)kUTTypeUTF8PlainText visibility:NSItemProviderRepresentationVisibilityAll loadHandler:^NSProgress *(NSItemProviderDataLoadCompletionBlock completionBlock)
    935934    {
    936935        completionBlock([textPayload dataUsingEncoding:NSUTF8StringEncoding], nil);
     
    951950
    952951    auto simulator = adoptNS([[DragAndDropSimulator alloc] initWithWebView:webView.get()]);
    953     auto simulatedItemProvider = adoptNS([[UIItemProvider alloc] init]);
    954     [simulatedItemProvider registerDataRepresentationForTypeIdentifier:(__bridge NSString *)kUTTypeJPEG options:nil loadHandler:^NSProgress *(UIItemProviderDataLoadCompletionBlock completionBlock)
     952    auto simulatedItemProvider = adoptNS([[NSItemProvider alloc] init]);
     953    [simulatedItemProvider registerDataRepresentationForTypeIdentifier:(__bridge NSString *)kUTTypeJPEG visibility:NSItemProviderRepresentationVisibilityAll loadHandler:^NSProgress *(NSItemProviderDataLoadCompletionBlock completionBlock)
    955954    {
    956955        completionBlock(UIImageJPEGRepresentation(testIconImage(), 0.5), nil);
     
    971970    NSURL *titledURL = [NSURL URLWithString:@"https://www.apple.com"];
    972971    titledURL._title = @"Apple";
    973     auto simulatedItemProvider = adoptNS([[UIItemProvider alloc] init]);
    974     [simulatedItemProvider registerObject:titledURL visibility:UIItemProviderRepresentationOptionsVisibilityAll];
     972    auto simulatedItemProvider = adoptNS([[NSItemProvider alloc] init]);
     973    [simulatedItemProvider registerObject:titledURL visibility:NSItemProviderRepresentationVisibilityAll];
    975974
    976975    auto simulator = adoptNS([[DragAndDropSimulator alloc] initWithWebView:webView.get()]);
     
    989988
    990989    NSURL *URL = [NSURL URLWithString:@"file:///some/file/that/is/not/real"];
    991     UIItemProvider *simulatedItemProvider = [UIItemProvider itemProviderWithURL:URL title:@""];
     990    NSItemProvider *simulatedItemProvider = [NSItemProvider itemProviderWithURL:URL title:@""];
    992991
    993992    auto simulator = adoptNS([[DragAndDropSimulator alloc] initWithWebView:webView.get()]);
     
    10041003    [webView synchronouslyLoadTestPageNamed:@"file-uploading"];
    10051004
    1006     auto simulatedImageItemProvider = adoptNS([[UIItemProvider alloc] init]);
     1005    auto simulatedImageItemProvider = adoptNS([[NSItemProvider alloc] init]);
    10071006    NSData *imageData = UIImageJPEGRepresentation(testIconImage(), 0.5);
    10081007    [simulatedImageItemProvider registerDataRepresentationForTypeIdentifier:(__bridge NSString *)kUTTypeJPEG withData:imageData];
    10091008
    1010     auto simulatedHTMLItemProvider = adoptNS([[UIItemProvider alloc] init]);
     1009    auto simulatedHTMLItemProvider = adoptNS([[NSItemProvider alloc] init]);
    10111010    NSData *firstHTMLData = [@"<body contenteditable></body>" dataUsingEncoding:NSUTF8StringEncoding];
    10121011    [simulatedHTMLItemProvider registerDataRepresentationForTypeIdentifier:(__bridge NSString *)kUTTypeHTML withData:firstHTMLData];
     
    11321131    }];
    11331132
    1134     auto firstItemProvider = adoptNS([[UIItemProvider alloc] init]);
    1135     [firstItemProvider registerObject:@"This is a string." visibility:UIItemProviderRepresentationOptionsVisibilityAll];
    1136     auto secondItemProvider = adoptNS([[UIItemProvider alloc] init]);
    1137     [secondItemProvider registerObject:[NSURL URLWithString:@"https://webkit.org/"] visibility:UIItemProviderRepresentationOptionsVisibilityAll];
     1133    auto firstItemProvider = adoptNS([[NSItemProvider alloc] init]);
     1134    [firstItemProvider registerObject:@"This is a string." visibility:NSItemProviderRepresentationVisibilityAll];
     1135    auto secondItemProvider = adoptNS([[NSItemProvider alloc] init]);
     1136    [secondItemProvider registerObject:[NSURL URLWithString:@"https://webkit.org/"] visibility:NSItemProviderRepresentationVisibilityAll];
    11381137    [simulator setExternalItemProviders:@[ firstItemProvider.get(), secondItemProvider.get() ]];
    11391138    [simulator runFrom:CGPointMake(300, 400) to:CGPointMake(100, 300)];
     
    11471146    [webView synchronouslyLoadTestPageNamed:@"simple"];
    11481147
    1149     auto simulatedItemProvider = adoptNS([[UIItemProvider alloc] init]);
     1148    auto simulatedItemProvider = adoptNS([[NSItemProvider alloc] init]);
    11501149    [simulatedItemProvider registerDataRepresentationForTypeIdentifier:(__bridge NSString *)kUTTypeHTML withData:[@"<body></body>" dataUsingEncoding:NSUTF8StringEncoding]];
    11511150
     
    11801179    [webView stringByEvaluatingJavaScript:@"getSelection().removeAllRanges()"];
    11811180
    1182     auto simulatedItemProvider = adoptNS([[UIItemProvider alloc] init]);
    1183     [simulatedItemProvider registerDataRepresentationForTypeIdentifier:(__bridge NSString *)kUTTypeUTF8PlainText options:nil loadHandler:^NSProgress *(UIItemProviderDataLoadCompletionBlock completionBlock)
     1181    auto simulatedItemProvider = adoptNS([[NSItemProvider alloc] init]);
     1182    [simulatedItemProvider registerDataRepresentationForTypeIdentifier:(__bridge NSString *)kUTTypeUTF8PlainText visibility:NSItemProviderRepresentationVisibilityAll loadHandler:^NSProgress *(NSItemProviderDataLoadCompletionBlock completionBlock)
    11841183    {
    11851184        completionBlock([@"Hello world" dataUsingEncoding:NSUTF8StringEncoding], nil);
     
    12031202    [webView stringByEvaluatingJavaScript:@"getSelection().removeAllRanges()"];
    12041203
    1205     auto simulatedItemProvider = adoptNS([[UIItemProvider alloc] init]);
    1206     [simulatedItemProvider registerDataRepresentationForTypeIdentifier:(__bridge NSString *)kUTTypeUTF8PlainText options:nil loadHandler:^NSProgress *(UIItemProviderDataLoadCompletionBlock completionBlock)
     1204    auto simulatedItemProvider = adoptNS([[NSItemProvider alloc] init]);
     1205    [simulatedItemProvider registerDataRepresentationForTypeIdentifier:(__bridge NSString *)kUTTypeUTF8PlainText visibility:NSItemProviderRepresentationVisibilityAll loadHandler:^NSProgress *(NSItemProviderDataLoadCompletionBlock completionBlock)
    12071206    {
    12081207        completionBlock([@"Hello world" dataUsingEncoding:NSUTF8StringEncoding], nil);
     
    12261225    __block RetainPtr<NSString> injectedString;
    12271226    auto simulator = adoptNS([[DragAndDropSimulator alloc] initWithWebView:webView.get()]);
    1228     [simulator setConvertItemProvidersBlock:^NSArray *(UIItemProvider *itemProvider, NSArray *, NSDictionary *data)
     1227    [simulator setConvertItemProvidersBlock:^NSArray *(NSItemProvider *itemProvider, NSArray *, NSDictionary *data)
    12291228    {
    12301229        injectedString = adoptNS([[NSString alloc] initWithData:data[InjectedBundlePasteboardDataType] encoding:NSUTF8StringEncoding]);
     
    12461245    __block RetainPtr<NSString> injectedString;
    12471246    auto simulator = adoptNS([[DragAndDropSimulator alloc] initWithWebView:webView.get()]);
    1248     [simulator setConvertItemProvidersBlock:^NSArray *(UIItemProvider *itemProvider, NSArray *, NSDictionary *data)
     1247    [simulator setConvertItemProvidersBlock:^NSArray *(NSItemProvider *itemProvider, NSArray *, NSDictionary *data)
    12491248    {
    12501249        injectedString = adoptNS([[NSString alloc] initWithData:data[InjectedBundlePasteboardDataType] encoding:NSUTF8StringEncoding]);
     
    12921291
    12931292    auto simulator = adoptNS([[DragAndDropSimulator alloc] initWithWebView:webView.get()]);
    1294     [simulator setConvertItemProvidersBlock:^NSArray *(UIItemProvider *, NSArray *, NSDictionary *)
     1293    [simulator setConvertItemProvidersBlock:^NSArray *(NSItemProvider *, NSArray *, NSDictionary *)
    12951294    {
    12961295        return @[ ];
     
    13031302
    13041303    [webView stringByEvaluatingJavaScript:@"output.innerHTML = ''"];
    1305     [simulator setConvertItemProvidersBlock:^NSArray *(UIItemProvider *itemProvider, NSArray *, NSDictionary *)
     1304    [simulator setConvertItemProvidersBlock:^NSArray *(NSItemProvider *itemProvider, NSArray *, NSDictionary *)
    13061305    {
    13071306        return @[ itemProvider ];
     
    14241423
    14251424    WebItemProviderPasteboard *pasteboard = [WebItemProviderPasteboard sharedInstance];
    1426     auto fastItem = adoptNS([[UIItemProvider alloc] init]);
    1427     [fastItem registerDataRepresentationForTypeIdentifier:(__bridge NSString *)kUTTypeUTF8PlainText options:nil loadHandler:^NSProgress *(UIItemProviderDataLoadCompletionBlock completionBlock)
     1425    auto fastItem = adoptNS([[NSItemProvider alloc] init]);
     1426    [fastItem registerDataRepresentationForTypeIdentifier:(__bridge NSString *)kUTTypeUTF8PlainText visibility:NSItemProviderRepresentationVisibilityAll loadHandler:^NSProgress *(NSItemProviderDataLoadCompletionBlock completionBlock)
    14281427    {
    14291428        completionBlock([fastString dataUsingEncoding:NSUTF8StringEncoding], nil);
     
    14311430    }];
    14321431
    1433     auto slowItem = adoptNS([[UIItemProvider alloc] init]);
    1434     [slowItem registerDataRepresentationForTypeIdentifier:(__bridge NSString *)kUTTypeUTF8PlainText options:nil loadHandler:^NSProgress *(UIItemProviderDataLoadCompletionBlock completionBlock)
     1432    auto slowItem = adoptNS([[NSItemProvider alloc] init]);
     1433    [slowItem registerDataRepresentationForTypeIdentifier:(__bridge NSString *)kUTTypeUTF8PlainText visibility:NSItemProviderRepresentationVisibilityAll loadHandler:^NSProgress *(NSItemProviderDataLoadCompletionBlock completionBlock)
    14351434    {
    14361435        sleep(2_s);
     
    15461545
    15471546    auto simulator = adoptNS([[DragAndDropSimulator alloc] initWithWebView:webView.get()]);
    1548     auto itemProvider = adoptNS([[UIItemProvider alloc] init]);
     1547    auto itemProvider = adoptNS([[NSItemProvider alloc] init]);
    15491548    [itemProvider registerDataRepresentationForTypeIdentifier:(__bridge NSString *)kUTTypePNG withData:testIconImageData()];
    15501549    NSString *markupString = @"<script>bar()</script><strong onmousedown=javascript:void(0)>HELLO WORLD</strong>";
     
    16321631    auto simulator = adoptNS([[DragAndDropSimulator alloc] initWithWebView:webView.get()]);
    16331632
    1634     auto itemProvider = adoptNS([[UIItemProvider alloc] init]);
     1633    auto itemProvider = adoptNS([[NSItemProvider alloc] init]);
    16351634    NSURL *iconURL = [[NSBundle mainBundle] URLForResource:@"icon" withExtension:@"png" subdirectory:@"TestWebKitAPI.resources"];
    16361635    [itemProvider registerFileRepresentationForTypeIdentifier:(__bridge NSString *)kUTTypePNG fileOptions:0 visibility:NSItemProviderRepresentationVisibilityAll loadHandler:[protectedIconURL = retainPtr(iconURL)] (FileLoadCompletionBlock completionHandler) -> NSProgress * {
     
    16381637        return nil;
    16391638    }];
    1640     [itemProvider registerObject:iconURL visibility:UIItemProviderRepresentationOptionsVisibilityAll];
     1639    [itemProvider registerObject:iconURL visibility:NSItemProviderRepresentationVisibilityAll];
    16411640    [simulator setExternalItemProviders:@[ itemProvider.get() ]];
    16421641
     
    16561655    auto simulator = adoptNS([[DragAndDropSimulator alloc] initWithWebView:webView.get()]);
    16571656
    1658     auto itemProvider = adoptNS([[UIItemProvider alloc] init]);
     1657    auto itemProvider = adoptNS([[NSItemProvider alloc] init]);
    16591658    [itemProvider registerDataRepresentationForTypeIdentifier:(__bridge NSString *)kUTTypeJPEG visibility:NSItemProviderRepresentationVisibilityAll loadHandler:^NSProgress *(DataLoadCompletionBlock completionHandler)
    16601659    {
     
    16621661        return nil;
    16631662    }];
    1664     [itemProvider registerObject:[NSURL URLWithString:@"http://webkit.org"] visibility:UIItemProviderRepresentationOptionsVisibilityAll];
     1663    [itemProvider registerObject:[NSURL URLWithString:@"http://webkit.org"] visibility:NSItemProviderRepresentationVisibilityAll];
    16651664    [simulator setExternalItemProviders:@[ itemProvider.get() ]];
    16661665
     
    16791678
    16801679    runTestWithTemporaryTextFile(^(NSURL *fileURL) {
    1681         auto itemProvider = adoptNS([[UIItemProvider alloc] init]);
     1680        auto itemProvider = adoptNS([[NSItemProvider alloc] init]);
    16821681        [itemProvider registerFileRepresentationForTypeIdentifier:(__bridge NSString *)kUTTypeUTF8PlainText fileOptions:0 visibility:NSItemProviderRepresentationVisibilityAll loadHandler:[protectedFileURL = retainPtr(fileURL)] (FileLoadCompletionBlock completionHandler) -> NSProgress * {
    16831682            completionHandler(protectedFileURL.get(), NO, nil);
     
    17321731    auto simulator = adoptNS([[DragAndDropSimulator alloc] initWithWebView:webView.get()]);
    17331732
    1734     auto itemProvider = adoptNS([[UIItemProvider alloc] init]);
     1733    auto itemProvider = adoptNS([[NSItemProvider alloc] init]);
    17351734    NSDictionary *textAttributes = @{ NSFontAttributeName: [UIFont boldSystemFontOfSize:20] };
    17361735    NSAttributedString *richText = [[NSAttributedString alloc] initWithString:@"WebKit" attributes:textAttributes];
     
    17561755    auto simulator = adoptNS([[DragAndDropSimulator alloc] initWithWebView:webView.get()]);
    17571756
    1758     auto itemProvider = adoptNS([[UIItemProvider alloc] init]);
     1757    auto itemProvider = adoptNS([[NSItemProvider alloc] init]);
    17591758    [itemProvider registerObject:@"Hello world" visibility:NSItemProviderRepresentationVisibilityAll];
    17601759    [itemProvider setSuggestedName:@"hello.txt"];
     
    17771776    auto simulator = adoptNS([[DragAndDropSimulator alloc] initWithWebView:webView.get()]);
    17781777
    1779     auto itemProvider = adoptNS([[UIItemProvider alloc] init]);
     1778    auto itemProvider = adoptNS([[NSItemProvider alloc] init]);
    17801779    [itemProvider registerDataRepresentationForTypeIdentifier:(__bridge NSString *)kUTTypeMP3 visibility:NSItemProviderRepresentationVisibilityAll loadHandler:^NSProgress *(DataLoadCompletionBlock completionHandler)
    17811780    {
  • trunk/Tools/TestWebKitAPI/cocoa/DragAndDropSimulator.h

    r238188 r238360  
    9797@property (nonatomic) BOOL shouldAllowMoveOperation;
    9898@property (nonatomic) BlockPtr<BOOL(_WKActivatedElementInfo *)> showCustomActionSheetBlock;
    99 @property (nonatomic) BlockPtr<NSArray *(UIItemProvider *, NSArray *, NSDictionary *)> convertItemProvidersBlock;
     99@property (nonatomic) BlockPtr<NSArray *(NSItemProvider *, NSArray *, NSDictionary *)> convertItemProvidersBlock;
    100100@property (nonatomic) BlockPtr<NSArray *(id <UIDropSession>)> overridePerformDropBlock;
    101101@property (nonatomic, strong) NSArray *externalItemProviders;
  • trunk/Tools/TestWebKitAPI/ios/DragAndDropSimulatorIOS.mm

    r238188 r238360  
    121121}
    122122
    123 - (BOOL)canLoadObjectsOfClass:(Class<UIItemProviderReading>)aClass
     123- (BOOL)canLoadObjectsOfClass:(Class<NSItemProviderReading>)aClass
    124124{
    125125    for (UIDragItem *item in self.items) {
     
    130130}
    131131
    132 - (BOOL)canLoadObjectsOfClasses:(NSArray<Class<UIItemProviderReading>> *)classes
    133 {
    134     for (Class<UIItemProviderReading> aClass in classes) {
     132- (BOOL)canLoadObjectsOfClasses:(NSArray<Class<NSItemProviderReading>> *)classes
     133{
     134    for (Class<NSItemProviderReading> aClass in classes) {
    135135        BOOL canLoad = NO;
    136136        for (UIDragItem *item in self.items)
     
    172172@implementation MockDropSession
    173173
    174 - (instancetype)initWithProviders:(NSArray<UIItemProvider *> *)providers location:(CGPoint)locationInWindow window:(UIWindow *)window allowMove:(BOOL)allowMove
     174- (instancetype)initWithProviders:(NSArray<NSItemProvider *> *)providers location:(CGPoint)locationInWindow window:(UIWindow *)window allowMove:(BOOL)allowMove
    175175{
    176176    auto items = adoptNS([[NSMutableArray alloc] init]);
    177     for (UIItemProvider *itemProvider in providers)
     177    for (NSItemProvider *itemProvider in providers)
    178178        [items addObject:[[[UIDragItem alloc] initWithItemProvider:itemProvider] autorelease]];
    179179
     
    216216}
    217217
    218 - (BOOL)canCreateItemsOfClass:(Class<UIItemProviderReading>)aClass
     218- (BOOL)canCreateItemsOfClass:(Class<NSItemProviderReading>)aClass
    219219{
    220220    ASSERT_NOT_REACHED();
     
    517517    switch (_phase) {
    518518    case DragAndDropPhaseBeginning: {
    519         NSMutableArray<UIItemProvider *> *itemProviders = [NSMutableArray array];
     519        NSMutableArray<NSItemProvider *> *itemProviders = [NSMutableArray array];
    520520        NSArray *items = [[_webView dragInteractionDelegate] dragInteraction:[_webView dragInteraction] itemsForBeginningSession:_dragSession.get()];
    521521        if (!items.count) {
     
    651651#pragma mark - WKUIDelegatePrivate
    652652
    653 - (void)_webView:(WKWebView *)webView dataInteractionOperationWasHandled:(BOOL)handled forSession:(id)session itemProviders:(NSArray<UIItemProvider *> *)itemProviders
     653- (void)_webView:(WKWebView *)webView dataInteractionOperationWasHandled:(BOOL)handled forSession:(id)session itemProviders:(NSArray<NSItemProvider *> *)itemProviders
    654654{
    655655    _suppressedSelectionCommandsDuringDrop = [_webView textInputContentView]._shouldSuppressSelectionCommands;
     
    665665}
    666666
    667 - (NSArray *)_webView:(WKWebView *)webView adjustedDataInteractionItemProvidersForItemProvider:(UIItemProvider *)itemProvider representingObjects:(NSArray *)representingObjects additionalData:(NSDictionary *)additionalData
     667- (NSArray *)_webView:(WKWebView *)webView adjustedDataInteractionItemProvidersForItemProvider:(NSItemProvider *)itemProvider representingObjects:(NSArray *)representingObjects additionalData:(NSDictionary *)additionalData
    668668{
    669669    return self.convertItemProvidersBlock ? self.convertItemProvidersBlock(itemProvider, representingObjects, additionalData) : @[ itemProvider ];
  • trunk/Tools/TestWebKitAPI/ios/UIKitSPI.h

    r238188 r238360  
    4242@class UIDragInteraction;
    4343@class UIDragItem;
    44 #import <UIKit/NSString+UIItemProvider.h>
    45 #import <UIKit/NSURL+UIItemProvider.h>
     44#import <UIKit/NSItemProvider+UIKitAdditions_Private.h>
    4645#import <UIKit/UIDragInteraction_Private.h>
    47 #import <UIKit/UIImage+UIItemProvider.h>
    48 #import <UIKit/UIItemProvider.h>
    49 #import <UIKit/UIItemProvider_Private.h>
    5046#endif // ENABLE(DRAG_SUPPORT)
    5147
     
    8985@end
    9086
    91 #if ENABLE(DRAG_SUPPORT)
    92 
    9387@interface NSURL ()
    9488@property (nonatomic, copy, setter=_setTitle:) NSString *_title;
    9589@end
    96 
    97 #define UIItemProviderRepresentationOptionsVisibilityAll NSItemProviderRepresentationVisibilityAll
    98 
    99 @protocol UIItemProviderReading <NSItemProviderReading>
    100 
    101 @required
    102 - (instancetype)initWithItemProviderData:(NSData *)data typeIdentifier:(NSString *)typeIdentifier error:(NSError **)outError;
    103 
    104 @end
    105 
    106 @protocol UIItemProviderWriting <NSItemProviderWriting>
    107 
    108 @required
    109 - (NSProgress *)loadDataWithTypeIdentifier:(NSString *)typeIdentifier forItemProviderCompletionHandler:(void (^)(NSData *, NSError *))completionHandler;
    110 
    111 @end
    112 
    113 @interface NSAttributedString () <UIItemProviderReading, UIItemProviderWriting>
    114 @end
    115 @interface NSString () <UIItemProviderReading, UIItemProviderWriting>
    116 @end
    117 @interface NSURL () <UIItemProviderReading, UIItemProviderWriting>
    118 @end
    119 @interface UIImage () <UIItemProviderReading, UIItemProviderWriting>
    120 @end
    121 
    122 @interface UIItemProvider : NSItemProvider
    123 @end
    124 
    125 #endif
    12690
    12791@interface UIKeyboard : UIView
Note: See TracChangeset for help on using the changeset viewer.