Title: [211918] branches/safari-604.1.5-branch/Source/WebCore
- Revision
- 211918
- Author
- matthew_han...@apple.com
- Date
- 2017-02-08 18:05:42 -0800 (Wed, 08 Feb 2017)
Log Message
Merge r211453. rdar://problem/30294240
Modified Paths
Diff
Modified: branches/safari-604.1.5-branch/Source/WebCore/ChangeLog (211917 => 211918)
--- branches/safari-604.1.5-branch/Source/WebCore/ChangeLog 2017-02-09 02:05:40 UTC (rev 211917)
+++ branches/safari-604.1.5-branch/Source/WebCore/ChangeLog 2017-02-09 02:05:42 UTC (rev 211918)
@@ -1,5 +1,23 @@
2017-02-08 Matthew Hanson <matt_han...@apple.com>
+ Merge r211453. rdar://problem/30294240
+
+ 2017-01-31 Wenson Hsieh <wenson_hs...@apple.com>
+
+ WebItemProviderPasteboard should be robust when UIItemProvider fails to initialize an object
+ https://bugs.webkit.org/show_bug.cgi?id=167663
+ <rdar://problem/30294240>
+
+ Reviewed by Tim Horton.
+
+ Adds a nil check for the result of -createObjectOfClass:error:.
+
+ * platform/ios/WebItemProviderPasteboard.mm:
+ (-[WebItemProviderPasteboard valuesForPasteboardType:inItemSet:]):
+ (-[WebItemProviderPasteboard _tryToCreateAndAppendObjectOfClass:toArray:usingProvider:]):
+
+2017-02-08 Matthew Hanson <matt_han...@apple.com>
+
Merge r211377. rdar://problem/30267849
2017-01-30 Wenson Hsieh <wenson_hs...@apple.com>
Modified: branches/safari-604.1.5-branch/Source/WebCore/platform/ios/WebItemProviderPasteboard.mm (211917 => 211918)
--- branches/safari-604.1.5-branch/Source/WebCore/platform/ios/WebItemProviderPasteboard.mm 2017-02-09 02:05:40 UTC (rev 211917)
+++ branches/safari-604.1.5-branch/Source/WebCore/platform/ios/WebItemProviderPasteboard.mm 2017-02-09 02:05:42 UTC (rev 211918)
@@ -169,30 +169,20 @@
return;
// FIXME: These should be refactored to use asynchronous calls.
- if (isColorType(pasteboardType) && [provider canCreateObjectOfClass:[getUIColorClass() class]]) {
- [values addObject:[provider createObjectOfClass:[getUIColorClass() class] error:nil]];
+ if (isColorType(pasteboardType) && [self _tryToCreateAndAppendObjectOfClass:[getUIColorClass() class] toArray:values usingProvider:provider])
return;
- }
- if (isImageType(pasteboardType) && [provider canCreateObjectOfClass:[getUIImageClass() class]]) {
- [values addObject:[provider createObjectOfClass:[getUIImageClass() class] error:nil]];
+ if (isImageType(pasteboardType) && [self _tryToCreateAndAppendObjectOfClass:[NSString class] toArray:values usingProvider:provider])
return;
- }
- if (isURLType(pasteboardType) && [provider canCreateObjectOfClass:[NSURL class]]) {
- [values addObject:[provider createObjectOfClass:[NSURL class] error:nil]];
+ if (isURLType(pasteboardType) && [self _tryToCreateAndAppendObjectOfClass:[NSURL class] toArray:values usingProvider:provider])
return;
- }
- if (isRichTextType(pasteboardType) && [provider canCreateObjectOfClass:[NSAttributedString class]]) {
- [values addObject:[provider createObjectOfClass:[NSAttributedString class] error:nil]];
+ if (isRichTextType(pasteboardType) && [self _tryToCreateAndAppendObjectOfClass:[NSAttributedString class] toArray:values usingProvider:provider])
return;
- }
- if (isStringType(pasteboardType) && [provider canCreateObjectOfClass:[NSString class]]) {
- [values addObject:[provider createObjectOfClass:[NSString class] error:nil]];
+ if (isStringType(pasteboardType) && [self _tryToCreateAndAppendObjectOfClass:[NSString class] toArray:values usingProvider:provider])
return;
- }
WTFLogAlways("Failed to instantiate object for type: '%s' at index: %tu", pasteboardType.UTF8String, index);
}];
@@ -199,6 +189,18 @@
return values;
}
+- (BOOL)_tryToCreateAndAppendObjectOfClass:(Class)objectClass toArray:(NSMutableArray *)array usingProvider:(UIItemProvider *)provider
+{
+ if (![provider canCreateObjectOfClass:objectClass])
+ return NO;
+
+ id object = [provider createObjectOfClass:objectClass error:nil];
+ if (object)
+ [array addObject:object];
+
+ return !!object;
+}
+
- (NSInteger)changeCount
{
return _changeCount;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes