Title: [218949] trunk/Source/WebCore
Revision
218949
Author
[email protected]
Date
2017-06-29 11:14:54 -0700 (Thu, 29 Jun 2017)

Log Message

[iOS DnD] Adopt +objectWithItemProviderData: for serializing NSItemProviderReading-conformant objects
https://bugs.webkit.org/show_bug.cgi?id=173971
<rdar://problem/33006605>

Reviewed by Tim Horton.

Moves off of a very-recently-deprecated API, in favor of its replacement. Guarded by a runtime check and staging
declarations. No change in behavior.

* platform/ios/WebItemProviderPasteboard.mm:
(-[WebItemProviderPasteboard valuesForPasteboardType:inItemSet:]):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (218948 => 218949)


--- trunk/Source/WebCore/ChangeLog	2017-06-29 18:13:37 UTC (rev 218948)
+++ trunk/Source/WebCore/ChangeLog	2017-06-29 18:14:54 UTC (rev 218949)
@@ -1,3 +1,17 @@
+2017-06-29  Wenson Hsieh  <[email protected]>
+
+        [iOS DnD] Adopt +objectWithItemProviderData: for serializing NSItemProviderReading-conformant objects
+        https://bugs.webkit.org/show_bug.cgi?id=173971
+        <rdar://problem/33006605>
+
+        Reviewed by Tim Horton.
+
+        Moves off of a very-recently-deprecated API, in favor of its replacement. Guarded by a runtime check and staging
+        declarations. No change in behavior.
+
+        * platform/ios/WebItemProviderPasteboard.mm:
+        (-[WebItemProviderPasteboard valuesForPasteboardType:inItemSet:]):
+
 2017-06-29  Basuke Suzuki  <[email protected]>
 
         [Curl] Separate global curl settings from ResourceHandleManager as CurlContext class

Modified: trunk/Source/WebCore/platform/ios/WebItemProviderPasteboard.mm (218948 => 218949)


--- trunk/Source/WebCore/platform/ios/WebItemProviderPasteboard.mm	2017-06-29 18:13:37 UTC (rev 218948)
+++ trunk/Source/WebCore/platform/ios/WebItemProviderPasteboard.mm	2017-06-29 18:14:54 UTC (rev 218949)
@@ -49,6 +49,12 @@
 SOFT_LINK_CLASS(UIKit, UIImage)
 SOFT_LINK_CLASS(UIKit, UIItemProvider)
 
+// FIXME: Remove once +objectWithItemProviderData:typeIdentifier:error: is available in the public SDK.
+@interface NSObject (Foundation_NSItemProvider_Staging)
++ (id <NSItemProviderReading>)objectWithItemProviderData:(NSData *)data typeIdentifier:(NSString *)typeIdentifier error:(NSError **)outError;
+- (id <NSItemProviderReading>)initWithItemProviderData:(NSData *)data typeIdentifier:(NSString *)typeIdentifier error:(NSError **)outError;
+@end
+
 using namespace WebCore;
 
 typedef void(^ItemProviderDataLoadCompletionHandler)(NSData *, NSError *);
@@ -356,8 +362,13 @@
         if (!preloadedData)
             return;
 
-        if (auto readObject = adoptNS([[readableClass alloc] initWithItemProviderData:preloadedData typeIdentifier:(NSString *)typeIdentifierToLoad error:nil]))
-            [values addObject:readObject.get()];
+        if ([readableClass respondsToSelector:@selector(objectWithItemProviderData:typeIdentifier:error:)]) {
+            if (id <NSItemProviderReading> readObject = [readableClass objectWithItemProviderData:preloadedData typeIdentifier:(NSString *)typeIdentifierToLoad error:nil])
+                [values addObject:readObject];
+        } else {
+            if (auto readObject = adoptNS([[readableClass alloc] initWithItemProviderData:preloadedData typeIdentifier:(NSString *)typeIdentifierToLoad error:nil]))
+                [values addObject:readObject.get()];
+        }
     }];
 
     return values.autorelease();
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to