API test WKAttachmentTests.CopyAndPasteBetweenWebViews fails on macOS 10.13
authorwenson_hsieh@apple.com <wenson_hsieh@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 31 Oct 2018 20:16:49 +0000 (20:16 +0000)
committerwenson_hsieh@apple.com <wenson_hsieh@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 31 Oct 2018 20:16:49 +0000 (20:16 +0000)
https://bugs.webkit.org/show_bug.cgi?id=191114
<rdar://problem/45700410>

Reviewed by Dean Jackson.

On macOS 10.12, we don't attempt secure archival at all because SECURE_ARCHIVER_API is turned off, and on macOS
10.14, NSFileWrapper supports secure coding. However, on macOS 10.13, SECURE_ARCHIVER_API is on despite
NSFileWrapper not being securely codable, so we're unable to serialize attachment data.

To fix this, we only use the secure archiver on ≥ macOS 10.14 and ≥ iOS 12.

* UIProcess/API/Cocoa/APIAttachmentCocoa.mm:
(API::Attachment::createSerializedRepresentation const):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@237648 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebKit/ChangeLog
Source/WebKit/UIProcess/API/Cocoa/APIAttachmentCocoa.mm

index 9b2065e..c153cab 100644 (file)
@@ -1,3 +1,20 @@
+2018-10-31  Wenson Hsieh  <wenson_hsieh@apple.com>
+
+        API test WKAttachmentTests.CopyAndPasteBetweenWebViews fails on macOS 10.13
+        https://bugs.webkit.org/show_bug.cgi?id=191114
+        <rdar://problem/45700410>
+
+        Reviewed by Dean Jackson.
+
+        On macOS 10.12, we don't attempt secure archival at all because SECURE_ARCHIVER_API is turned off, and on macOS
+        10.14, NSFileWrapper supports secure coding. However, on macOS 10.13, SECURE_ARCHIVER_API is on despite
+        NSFileWrapper not being securely codable, so we're unable to serialize attachment data.
+
+        To fix this, we only use the secure archiver on ≥ macOS 10.14 and ≥ iOS 12.
+
+        * UIProcess/API/Cocoa/APIAttachmentCocoa.mm:
+        (API::Attachment::createSerializedRepresentation const):
+
 2018-10-31  Zach Li  <zacharyli323@gmail.com>
 
         Add credit card autofill button
index b4ec9c8..be6d745 100644 (file)
@@ -36,6 +36,8 @@
 #endif
 #import <pal/spi/cocoa/NSKeyedArchiverSPI.h>
 
+#define CAN_SECURELY_ARCHIVE_FILE_WRAPPER (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400) || (PLATFORM(IOS_FAMILY) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 120000)
+
 namespace API {
 
 static WTF::String mimeTypeInferredFromFileExtension(const API::Attachment& attachment)
@@ -132,7 +134,12 @@ RefPtr<WebCore::SharedBuffer> Attachment::createSerializedRepresentation() const
     if (!m_fileWrapper || !m_webPage)
         return nullptr;
 
+#if CAN_SECURELY_ARCHIVE_FILE_WRAPPER
     NSData *serializedData = securelyArchivedDataWithRootObject(m_fileWrapper.get());
+#else
+    NSData *serializedData = insecurelyArchivedDataWithRootObject(m_fileWrapper.get());
+#endif
+
     if (!serializedData)
         return nullptr;