Diff
Modified: trunk/Tools/ChangeLog (283711 => 283712)
--- trunk/Tools/ChangeLog 2021-10-07 15:01:56 UTC (rev 283711)
+++ trunk/Tools/ChangeLog 2021-10-07 15:02:25 UTC (rev 283712)
@@ -1,3 +1,25 @@
+2021-10-07 David Kilzer <ddkil...@apple.com>
+
+ Add back RetainPtrARC and TypeCastsCocoaARC tests to TestWTF
+ <https://webkit.org/b/231251>
+ <rdar://problem/83902809>
+
+ Reviewed by Darin Adler.
+
+ * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
+ - Add RetainPtrARC.mm and TypeCastsCocoaARC.mm to the project.
+
+ * TestWebKitAPI/Tests/WTF/cocoa/TypeCastsCocoa.mm:
+ (TestWebKitAPI::TEST):
+ - Modify tests to clean up autoreleased objects in Debug builds
+ that are optimized out of Release builds.
+ * TestWebKitAPI/Tests/WTF/cocoa/TypeCastsCocoaARC.mm: Add.
+ * TestWebKitAPI/Tests/WTF/ns/RetainPtr.mm:
+ (TestWebKitAPI::TEST):
+ - Modify tests to clean up autoreleased objects in Debug builds
+ that are optimized out of Release builds.
+ * TestWebKitAPI/Tests/WTF/ns/RetainPtrARC.mm: Add.
+
2021-10-07 Chris Dumez <cdu...@apple.com>
ASSERTION FAILED: This HTTPServer does not know how to respond to a request for /popup-after-redirection.html
Modified: trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj (283711 => 283712)
--- trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj 2021-10-07 15:01:56 UTC (rev 283711)
+++ trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj 2021-10-07 15:02:25 UTC (rev 283712)
@@ -264,6 +264,7 @@
41E67A8525D16E83007B0A4C /* STUNMessageParsingTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41E67A8425D16E83007B0A4C /* STUNMessageParsingTest.cpp */; };
44077BB123144B5000179E2D /* DataDetectorsTestIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 44077BB0231449D200179E2D /* DataDetectorsTestIOS.mm */; };
4433A396208044140091ED57 /* SynchronousTimeoutTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4433A395208044130091ED57 /* SynchronousTimeoutTests.mm */; };
+ 44652CB726FCD405005EC272 /* TypeCastsCocoaARC.mm in Sources */ = {isa = PBXBuildFile; fileRef = 44652CB626FCD405005EC272 /* TypeCastsCocoaARC.mm */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
448110C2253F40300097FC33 /* WebPreferencesTest.mm in Sources */ = {isa = PBXBuildFile; fileRef = 448110C1253F40240097FC33 /* WebPreferencesTest.mm */; };
44817A2F1F0486BF00003810 /* WKRequestActivatedElementInfo.mm in Sources */ = {isa = PBXBuildFile; fileRef = 44817A2E1F0486BF00003810 /* WKRequestActivatedElementInfo.mm */; };
448D7E471EA6C55500ECC756 /* EnvironmentUtilitiesTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 448D7E451EA6C55500ECC756 /* EnvironmentUtilitiesTest.cpp */; };
@@ -271,6 +272,7 @@
44C2FBE225E7592C00ABC72F /* WKAppHighlights.mm in Sources */ = {isa = PBXBuildFile; fileRef = 44C2FBE125E7592C00ABC72F /* WKAppHighlights.mm */; };
44CDE4D426EE6E4A009F6ACB /* TypeCastsCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = 44CDE4D326EE6E41009F6ACB /* TypeCastsCocoa.mm */; };
44CF31FD249941E8009CB6CB /* ContextMenuAction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 44CF31FB24993F66009CB6CB /* ContextMenuAction.cpp */; };
+ 44D5008E26FE9ED6000EB12F /* RetainPtrARC.mm in Sources */ = {isa = PBXBuildFile; fileRef = 44D5008D26FE9ED6000EB12F /* RetainPtrARC.mm */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
4612C2B9210A6ACE00B788A6 /* LoadFileThenReload.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4612C2B8210A6ABF00B788A6 /* LoadFileThenReload.mm */; };
4628C8E92367ABD100B073F0 /* WKSecurityOrigin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4628C8E82367ABBC00B073F0 /* WKSecurityOrigin.cpp */; };
46397B951DC2C850009A78AE /* DOMNode.mm in Sources */ = {isa = PBXBuildFile; fileRef = 46397B941DC2C850009A78AE /* DOMNode.mm */; };
@@ -2108,6 +2110,7 @@
44077BB0231449D200179E2D /* DataDetectorsTestIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DataDetectorsTestIOS.mm; sourceTree = "<group>"; };
442BBF681C91CAD90017087F /* RefLogger.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RefLogger.cpp; sourceTree = "<group>"; };
4433A395208044130091ED57 /* SynchronousTimeoutTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SynchronousTimeoutTests.mm; sourceTree = "<group>"; };
+ 44652CB626FCD405005EC272 /* TypeCastsCocoaARC.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = TypeCastsCocoaARC.mm; sourceTree = "<group>"; };
448110C1253F40240097FC33 /* WebPreferencesTest.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = WebPreferencesTest.mm; sourceTree = "<group>"; };
44817A2E1F0486BF00003810 /* WKRequestActivatedElementInfo.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKRequestActivatedElementInfo.mm; sourceTree = "<group>"; };
448D7E451EA6C55500ECC756 /* EnvironmentUtilitiesTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EnvironmentUtilitiesTest.cpp; sourceTree = "<group>"; };
@@ -2115,6 +2118,7 @@
44C2FBE125E7592C00ABC72F /* WKAppHighlights.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKAppHighlights.mm; sourceTree = "<group>"; };
44CDE4D326EE6E41009F6ACB /* TypeCastsCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = TypeCastsCocoa.mm; sourceTree = "<group>"; };
44CF31FB24993F66009CB6CB /* ContextMenuAction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ContextMenuAction.cpp; sourceTree = "<group>"; };
+ 44D5008D26FE9ED6000EB12F /* RetainPtrARC.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = RetainPtrARC.mm; path = ns/RetainPtrARC.mm; sourceTree = "<group>"; };
460C2FC827039D7D0047EF11 /* ServiceWorkerPageProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ServiceWorkerPageProtocol.h; sourceTree = "<group>"; };
4612C2B8210A6ABF00B788A6 /* LoadFileThenReload.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = LoadFileThenReload.mm; sourceTree = "<group>"; };
4628C8E82367ABBC00B073F0 /* WKSecurityOrigin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKSecurityOrigin.cpp; sourceTree = "<group>"; };
@@ -4303,6 +4307,7 @@
children = (
1ADAD14E1D77A9F600212586 /* BlockPtr.mm */,
BC029B1B1486B25900817DA9 /* RetainPtr.mm */,
+ 44D5008D26FE9ED6000EB12F /* RetainPtrARC.mm */,
);
name = ns;
sourceTree = "<group>";
@@ -5018,6 +5023,7 @@
1C4616A626BB172F00F8C9F6 /* TextStreamCocoa.cpp */,
1C46169E26BA510700F8C9F6 /* TextStreamCocoa.mm */,
44CDE4D326EE6E41009F6ACB /* TypeCastsCocoa.mm */,
+ 44652CB626FCD405005EC272 /* TypeCastsCocoaARC.mm */,
E3C21A7B21B25CA2003B31A3 /* URLExtras.mm */,
);
path = cocoa;
@@ -5336,6 +5342,7 @@
7C83DF161D0A590C00FEBCF3 /* RefPtr.cpp in Sources */,
44AC8BC621D0245A00CAFB34 /* RetainPtr.cpp in Sources */,
7C83DF241D0A590C00FEBCF3 /* RetainPtr.mm in Sources */,
+ 44D5008E26FE9ED6000EB12F /* RetainPtrARC.mm in Sources */,
E355A6322615718F001C1129 /* RobinHoodHashMap.cpp in Sources */,
E355A63026157174001C1129 /* RobinHoodHashSet.cpp in Sources */,
7C83DF051D0A590C00FEBCF3 /* RunLoop.cpp in Sources */,
@@ -5368,6 +5375,7 @@
5311BD5E1EA9490E00525281 /* ThreadMessages.cpp in Sources */,
0F2C20B81DCD545000542D9E /* Time.cpp in Sources */,
44CDE4D426EE6E4A009F6ACB /* TypeCastsCocoa.mm in Sources */,
+ 44652CB726FCD405005EC272 /* TypeCastsCocoaARC.mm in Sources */,
E324A6F02041C82000A76593 /* UniqueArray.cpp in Sources */,
E3A1E78221B25B7A008C6007 /* URL.cpp in Sources */,
E3C21A7C21B25CA2003B31A3 /* URLExtras.mm in Sources */,
Modified: trunk/Tools/TestWebKitAPI/Tests/WTF/cocoa/TypeCastsCocoa.mm (283711 => 283712)
--- trunk/Tools/TestWebKitAPI/Tests/WTF/cocoa/TypeCastsCocoa.mm 2021-10-07 15:01:56 UTC (rev 283711)
+++ trunk/Tools/TestWebKitAPI/Tests/WTF/cocoa/TypeCastsCocoa.mm 2021-10-07 15:02:25 UTC (rev 283712)
@@ -31,6 +31,17 @@
#error This tests TypeCastsCocoa.h with ARC disabled.
#endif
+#if __has_feature(objc_arc) && !defined(NDEBUG)
+// Debug builds with ARC enabled cause objects to be autoreleased
+// when assigning adoptNS() result to a different RetainPtr<> type,
+// and when calling RetainPtr<>::get().
+#define BEGIN_AUTORELEASEPOOL_FOR_ARC_DEBUG @autoreleasepool {
+#define END_AUTORELEASEPOOL_FOR_ARC_DEBUG }
+#else
+#define BEGIN_AUTORELEASEPOOL_FOR_ARC_DEBUG
+#define END_AUTORELEASEPOOL_FOR_ARC_DEBUG
+#endif
+
@interface MyObjectSubtype : NSObject
@end
@@ -102,7 +113,10 @@
EXPECT_EQ(1L, CFGetRetainCount((CFTypeRef)objectCFPtr));
auto objectID = bridge_id_cast(WTFMove(objectCF));
- auto objectIDPtr = reinterpret_cast<uintptr_t>(objectID.get());
+ uintptr_t objectIDPtr;
+BEGIN_AUTORELEASEPOOL_FOR_ARC_DEBUG
+ objectIDPtr = reinterpret_cast<uintptr_t>(objectID.get());
+END_AUTORELEASEPOOL_FOR_ARC_DEBUG
EXPECT_EQ(NULL, objectCF.get());
EXPECT_EQ(objectCFPtr, objectIDPtr);
EXPECT_EQ(1L, CFGetRetainCount((CFTypeRef)objectIDPtr));
@@ -114,24 +128,36 @@
EXPECT_EQ(nil, checked_objc_cast<NSString>(nil));
@autoreleasepool {
- auto objectNS = adoptNS<id>([[NSString alloc] initWithFormat:@"%s", helloWorldCString]);
- auto objectNSPtr = reinterpret_cast<uintptr_t>(objectNS.get());
+ RetainPtr<id> objectNS;
+ uintptr_t objectNSPtr;
+BEGIN_AUTORELEASEPOOL_FOR_ARC_DEBUG
+ objectNS = adoptNS<id>([[NSString alloc] initWithFormat:@"%s", helloWorldCString]);
+ objectNSPtr = reinterpret_cast<uintptr_t>(objectNS.get());
EXPECT_EQ(objectNS.get(), checked_objc_cast<NSString>(objectNS.get()));
EXPECT_EQ(objectNS.get(), checked_objc_cast<NSObject>(objectNS.get()));
+END_AUTORELEASEPOOL_FOR_ARC_DEBUG
EXPECT_EQ(1L, CFGetRetainCount((CFTypeRef)objectNSPtr));
}
@autoreleasepool {
- auto objectNS = adoptNS<NSObject *>([[NSString alloc] initWithFormat:@"%s", helloWorldCString]);
- auto objectNSPtr = reinterpret_cast<uintptr_t>(objectNS.get());
+ RetainPtr<NSObject *> objectNS;
+ uintptr_t objectNSPtr;
+BEGIN_AUTORELEASEPOOL_FOR_ARC_DEBUG
+ objectNS = adoptNS<NSObject *>([[NSString alloc] initWithFormat:@"%s", helloWorldCString]);
+ objectNSPtr = reinterpret_cast<uintptr_t>(objectNS.get());
EXPECT_EQ(objectNS.get(), checked_objc_cast<NSString>(objectNS.get()));
+END_AUTORELEASEPOOL_FOR_ARC_DEBUG
EXPECT_EQ(1L, CFGetRetainCount((CFTypeRef)objectNSPtr));
}
@autoreleasepool {
- auto objectNS = adoptNS([[NSString alloc] initWithFormat:@"%s", helloWorldCString]);
- auto objectNSPtr = reinterpret_cast<uintptr_t>(objectNS.get());
+ RetainPtr<NSString> objectNS;
+ uintptr_t objectNSPtr;
+BEGIN_AUTORELEASEPOOL_FOR_ARC_DEBUG
+ objectNS = adoptNS([[NSString alloc] initWithFormat:@"%s", helloWorldCString]);
+ objectNSPtr = reinterpret_cast<uintptr_t>(objectNS.get());
EXPECT_EQ(objectNS.get(), checked_objc_cast<NSObject>(objectNS.get()));
+END_AUTORELEASEPOOL_FOR_ARC_DEBUG
EXPECT_EQ(1L, CFGetRetainCount((CFTypeRef)objectNSPtr));
}
}
@@ -142,41 +168,56 @@
@autoreleasepool {
auto objectNS = adoptNS<id>([[NSString alloc] initWithFormat:@"%s", helloWorldCString]);
- auto objectNSPtr = reinterpret_cast<uintptr_t>(objectNS.get());
+ uintptr_t objectNSPtr;
+BEGIN_AUTORELEASEPOOL_FOR_ARC_DEBUG
+ objectNSPtr = reinterpret_cast<uintptr_t>(objectNS.get());
EXPECT_EQ(objectNS.get(), dynamic_objc_cast<NSString>(objectNS.get()));
EXPECT_EQ(objectNS.get(), dynamic_objc_cast<NSObject>(objectNS.get()));
EXPECT_EQ(nil, dynamic_objc_cast<NSArray>(objectNS.get()));
+END_AUTORELEASEPOOL_FOR_ARC_DEBUG
EXPECT_EQ(1L, CFGetRetainCount((CFTypeRef)objectNSPtr));
}
@autoreleasepool {
auto objectNS = adoptNS<NSObject *>([[NSString alloc] initWithFormat:@"%s", helloWorldCString]);
- auto objectNSPtr = reinterpret_cast<uintptr_t>(objectNS.get());
+ uintptr_t objectNSPtr;
+BEGIN_AUTORELEASEPOOL_FOR_ARC_DEBUG
+ objectNSPtr = reinterpret_cast<uintptr_t>(objectNS.get());
EXPECT_EQ(objectNS.get(), dynamic_objc_cast<NSString>(objectNS.get()));
EXPECT_EQ(nil, dynamic_objc_cast<NSArray>(objectNS.get()));
+END_AUTORELEASEPOOL_FOR_ARC_DEBUG
EXPECT_EQ(1L, CFGetRetainCount((CFTypeRef)objectNSPtr));
}
@autoreleasepool {
auto objectNS = adoptNS([[NSString alloc] initWithFormat:@"%s", helloWorldCString]);
- auto objectNSPtr = reinterpret_cast<uintptr_t>(objectNS.get());
+ uintptr_t objectNSPtr;
+BEGIN_AUTORELEASEPOOL_FOR_ARC_DEBUG
+ objectNSPtr = reinterpret_cast<uintptr_t>(objectNS.get());
EXPECT_EQ(objectNS.get(), dynamic_objc_cast<NSObject>(objectNS.get()));
EXPECT_EQ(nil, dynamic_objc_cast<NSArray>(objectNS.get()));
+END_AUTORELEASEPOOL_FOR_ARC_DEBUG
EXPECT_EQ(1L, CFGetRetainCount((CFTypeRef)objectNSPtr));
}
@autoreleasepool {
auto objectID = adoptNS<id>([[NSObject alloc] init]);
- auto objectIDPtr = reinterpret_cast<uintptr_t>(objectID.get());
+ uintptr_t objectIDPtr;
+BEGIN_AUTORELEASEPOOL_FOR_ARC_DEBUG
+ objectIDPtr = reinterpret_cast<uintptr_t>(objectID.get());
EXPECT_EQ(objectID.get(), dynamic_objc_cast<NSObject>(objectID.get()));
EXPECT_EQ(nil, dynamic_objc_cast<MyObjectSubtype>(objectID.get()));
+END_AUTORELEASEPOOL_FOR_ARC_DEBUG
EXPECT_EQ(1L, CFGetRetainCount((CFTypeRef)objectIDPtr));
}
@autoreleasepool {
auto objectNS = adoptNS([[NSObject alloc] init]);
- auto objectNSPtr = reinterpret_cast<uintptr_t>(objectNS.get());
+ uintptr_t objectNSPtr;
+BEGIN_AUTORELEASEPOOL_FOR_ARC_DEBUG
+ objectNSPtr = reinterpret_cast<uintptr_t>(objectNS.get());
EXPECT_EQ(nil, dynamic_objc_cast<MyObjectSubtype>(objectNS.get()));
+END_AUTORELEASEPOOL_FOR_ARC_DEBUG
EXPECT_EQ(1L, CFGetRetainCount((CFTypeRef)objectNSPtr));
}
}
@@ -192,31 +233,50 @@
@autoreleasepool {
auto object = adoptNS<id>([[NSString alloc] initWithFormat:@"%s", helloWorldCString]);
- auto objectPtr = reinterpret_cast<uintptr_t>(object.get());
+ uintptr_t objectPtr;
+BEGIN_AUTORELEASEPOOL_FOR_ARC_DEBUG
+ objectPtr = reinterpret_cast<uintptr_t>(object.get());
+END_AUTORELEASEPOOL_FOR_ARC_DEBUG
EXPECT_EQ(1L, CFGetRetainCount((CFTypeRef)objectPtr));
- auto objectCast = dynamic_objc_cast<NSString>(WTFMove(object));
- auto objectCastPtr = reinterpret_cast<uintptr_t>(objectCast.get());
+ RetainPtr<NSString> objectCast;
+ uintptr_t objectCastPtr;
+BEGIN_AUTORELEASEPOOL_FOR_ARC_DEBUG
+ objectCast = dynamic_objc_cast<NSString>(WTFMove(object));
+ objectCastPtr = reinterpret_cast<uintptr_t>(objectCast.get());
+END_AUTORELEASEPOOL_FOR_ARC_DEBUG
EXPECT_EQ(nil, object.get());
EXPECT_EQ(objectPtr, objectCastPtr);
EXPECT_EQ(1L, CFGetRetainCount((CFTypeRef)objectCastPtr));
+BEGIN_AUTORELEASEPOOL_FOR_ARC_DEBUG
object = adoptNS<id>([[NSString alloc] initWithFormat:@"%s", helloWorldCString]);
objectPtr = reinterpret_cast<uintptr_t>(object.get());
+END_AUTORELEASEPOOL_FOR_ARC_DEBUG
EXPECT_EQ(1L, CFGetRetainCount((CFTypeRef)objectPtr));
- auto objectCast2 = dynamic_objc_cast<NSObject>(WTFMove(object));
- auto objectCastPtr2 = reinterpret_cast<uintptr_t>(objectCast2.get());
+ RetainPtr<NSObject> objectCast2;
+ uintptr_t objectCastPtr2;
+BEGIN_AUTORELEASEPOOL_FOR_ARC_DEBUG
+ objectCast2 = dynamic_objc_cast<NSObject>(WTFMove(object));
+ objectCastPtr2 = reinterpret_cast<uintptr_t>(objectCast2.get());
+END_AUTORELEASEPOOL_FOR_ARC_DEBUG
EXPECT_EQ(nil, object.get());
EXPECT_EQ(objectPtr, objectCastPtr2);
EXPECT_EQ(1L, CFGetRetainCount((CFTypeRef)objectCastPtr2));
+BEGIN_AUTORELEASEPOOL_FOR_ARC_DEBUG
object = adoptNS<id>([[NSString alloc] initWithFormat:@"%s", helloWorldCString]);
objectPtr = reinterpret_cast<uintptr_t>(object.get());
+END_AUTORELEASEPOOL_FOR_ARC_DEBUG
EXPECT_EQ(1L, CFGetRetainCount((CFTypeRef)objectPtr));
- auto objectCastBad = dynamic_objc_cast<NSArray>(WTFMove(object));
- auto objectPtr2 = reinterpret_cast<uintptr_t>(object.get());
+ RetainPtr<NSArray> objectCastBad;
+ uintptr_t objectPtr2;
+BEGIN_AUTORELEASEPOOL_FOR_ARC_DEBUG
+ objectCastBad = dynamic_objc_cast<NSArray>(WTFMove(object));
+ objectPtr2 = reinterpret_cast<uintptr_t>(object.get());
+END_AUTORELEASEPOOL_FOR_ARC_DEBUG
EXPECT_EQ(objectPtr, objectPtr2);
EXPECT_EQ(nil, objectCastBad.get());
EXPECT_EQ(1L, CFGetRetainCount((CFTypeRef)objectPtr2));
@@ -224,11 +284,17 @@
@autoreleasepool {
auto object = adoptNS([[NSString alloc] initWithFormat:@"%s", helloWorldCString]);
- auto objectPtr = reinterpret_cast<uintptr_t>(object.get());
+ uintptr_t objectPtr;
+BEGIN_AUTORELEASEPOOL_FOR_ARC_DEBUG
+ objectPtr = reinterpret_cast<uintptr_t>(object.get());
+END_AUTORELEASEPOOL_FOR_ARC_DEBUG
EXPECT_EQ(1L, CFGetRetainCount((CFTypeRef)objectPtr));
auto objectCast = dynamic_objc_cast<NSObject>(WTFMove(object));
- auto objectCastPtr = reinterpret_cast<uintptr_t>(objectCast.get());
+ uintptr_t objectCastPtr;
+BEGIN_AUTORELEASEPOOL_FOR_ARC_DEBUG
+ objectCastPtr = reinterpret_cast<uintptr_t>(objectCast.get());
+END_AUTORELEASEPOOL_FOR_ARC_DEBUG
EXPECT_EQ(nil, object.get());
EXPECT_EQ(objectPtr, objectCastPtr);
EXPECT_EQ(1L, CFGetRetainCount((CFTypeRef)objectCastPtr));
@@ -235,21 +301,34 @@
}
@autoreleasepool {
- auto object = adoptNS<id>([[NSObject alloc] init]);
- auto objectPtr = reinterpret_cast<uintptr_t>(object.get());
+ RetainPtr<id> object;
+ uintptr_t objectPtr;
+BEGIN_AUTORELEASEPOOL_FOR_ARC_DEBUG
+ object = adoptNS<id>([[NSObject alloc] init]);
+ objectPtr = reinterpret_cast<uintptr_t>(object.get());
+END_AUTORELEASEPOOL_FOR_ARC_DEBUG
EXPECT_EQ(1L, CFGetRetainCount((CFTypeRef)objectPtr));
- auto objectCast = dynamic_objc_cast<NSObject>(WTFMove(object));
- auto objectCastPtr = reinterpret_cast<uintptr_t>(objectCast.get());
+ RetainPtr<NSObject> objectCast;
+ uintptr_t objectCastPtr;
+BEGIN_AUTORELEASEPOOL_FOR_ARC_DEBUG
+ objectCast = dynamic_objc_cast<NSObject>(WTFMove(object));
+ objectCastPtr = reinterpret_cast<uintptr_t>(objectCast.get());
+END_AUTORELEASEPOOL_FOR_ARC_DEBUG
EXPECT_EQ(nil, object.get());
EXPECT_EQ(objectPtr, objectCastPtr);
EXPECT_EQ(1L, CFGetRetainCount((CFTypeRef)objectCastPtr));
+BEGIN_AUTORELEASEPOOL_FOR_ARC_DEBUG
object = adoptNS<id>([[NSObject alloc] init]);
objectPtr = reinterpret_cast<uintptr_t>(object.get());
+END_AUTORELEASEPOOL_FOR_ARC_DEBUG
EXPECT_EQ(1L, CFGetRetainCount((CFTypeRef)objectPtr));
- auto objectCastBad = dynamic_objc_cast<MyObjectSubtype>(WTFMove(object));
+ RetainPtr<MyObjectSubtype> objectCastBad;
+BEGIN_AUTORELEASEPOOL_FOR_ARC_DEBUG
+ objectCastBad = dynamic_objc_cast<MyObjectSubtype>(WTFMove(object));
+END_AUTORELEASEPOOL_FOR_ARC_DEBUG
EXPECT_EQ(nil, objectCastBad.get());
EXPECT_EQ(1L, CFGetRetainCount((CFTypeRef)objectPtr));
}
Added: trunk/Tools/TestWebKitAPI/Tests/WTF/cocoa/TypeCastsCocoaARC.mm (0 => 283712)
--- trunk/Tools/TestWebKitAPI/Tests/WTF/cocoa/TypeCastsCocoaARC.mm (rev 0)
+++ trunk/Tools/TestWebKitAPI/Tests/WTF/cocoa/TypeCastsCocoaARC.mm 2021-10-07 15:02:25 UTC (rev 283712)
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#if !__has_feature(objc_arc)
+#error This tests TypeCastsCocoa.h with ARC enabled.
+#endif
+
+#define MyObjectSubtype MyObjectSubtypeARC
+#define TypeCastsCocoa TypeCastsCocoaARC
+#include "TypeCastsCocoa.mm"
+#undef TypeCastsCocoa
+#undef MyObjectSubtype
Modified: trunk/Tools/TestWebKitAPI/Tests/WTF/ns/RetainPtr.mm (283711 => 283712)
--- trunk/Tools/TestWebKitAPI/Tests/WTF/ns/RetainPtr.mm 2021-10-07 15:01:56 UTC (rev 283711)
+++ trunk/Tools/TestWebKitAPI/Tests/WTF/ns/RetainPtr.mm 2021-10-07 15:02:25 UTC (rev 283712)
@@ -40,20 +40,42 @@
#define RETAIN_PTR_TEST_NAME RetainPtr
#endif
+#if __has_feature(objc_arc) && !defined(NDEBUG)
+// Debug builds with ARC enabled cause objects to be autoreleased
+// when assigning adoptNS() result to a different RetainPtr<> type,
+// and when calling RetainPtr<>::get().
+#define BEGIN_AUTORELEASEPOOL_FOR_ARC_DEBUG @autoreleasepool {
+#define END_AUTORELEASEPOOL_FOR_ARC_DEBUG }
+#else
+#define BEGIN_AUTORELEASEPOOL_FOR_ARC_DEBUG
+#define END_AUTORELEASEPOOL_FOR_ARC_DEBUG
+#endif
+
namespace TestWebKitAPI {
TEST(RETAIN_PTR_TEST_NAME, AdoptNS)
{
RetainPtr<NSObject> object1 = adoptNS([[NSObject alloc] init]);
- auto objectPtr1 = reinterpret_cast<uintptr_t>(object1.get());
+ uintptr_t objectPtr1 = 0;
+BEGIN_AUTORELEASEPOOL_FOR_ARC_DEBUG
+ objectPtr1 = reinterpret_cast<uintptr_t>(object1.get());
+END_AUTORELEASEPOOL_FOR_ARC_DEBUG
EXPECT_EQ(1L, CFGetRetainCount((CFTypeRef)objectPtr1));
- RetainPtr<NSObject *> object2 = adoptNS([[NSObject alloc] init]);
- auto objectPtr2 = reinterpret_cast<uintptr_t>(object2.get());
+ RetainPtr<NSObject *> object2;
+ uintptr_t objectPtr2 = 0;
+BEGIN_AUTORELEASEPOOL_FOR_ARC_DEBUG
+ object2 = adoptNS([[NSObject alloc] init]);
+ objectPtr2 = reinterpret_cast<uintptr_t>(object2.get());
+END_AUTORELEASEPOOL_FOR_ARC_DEBUG
EXPECT_EQ(1L, CFGetRetainCount((CFTypeRef)objectPtr2));
- RetainPtr<id> object3 = adoptNS([[NSObject alloc] init]);
- auto objectPtr3 = reinterpret_cast<uintptr_t>(object3.get());
+ RetainPtr<id> object3;
+ uintptr_t objectPtr3 = 0;
+BEGIN_AUTORELEASEPOOL_FOR_ARC_DEBUG
+ object3 = adoptNS([[NSObject alloc] init]);
+ objectPtr3 = reinterpret_cast<uintptr_t>(object3.get());
+END_AUTORELEASEPOOL_FOR_ARC_DEBUG
EXPECT_EQ(1, CFGetRetainCount((CFTypeRef)objectPtr3));
}
@@ -276,7 +298,10 @@
@autoreleasepool {
object1 = retainPtr([[NSObject new] autorelease]);
}
- auto objectPtr1 = reinterpret_cast<uintptr_t>(object1.get());
+ uintptr_t objectPtr1 = 0;
+BEGIN_AUTORELEASEPOOL_FOR_ARC_DEBUG
+ objectPtr1 = reinterpret_cast<uintptr_t>(object1.get());
+END_AUTORELEASEPOOL_FOR_ARC_DEBUG
EXPECT_EQ(1L, CFGetRetainCount((CFTypeRef)objectPtr1));
RetainPtr<NSObject *> object2;
@@ -283,7 +308,10 @@
@autoreleasepool {
object2 = retainPtr([[NSObject new] autorelease]);
}
- auto objectPtr2 = reinterpret_cast<uintptr_t>(object2.get());
+ uintptr_t objectPtr2 = 0;
+BEGIN_AUTORELEASEPOOL_FOR_ARC_DEBUG
+ objectPtr2 = reinterpret_cast<uintptr_t>(object2.get());
+END_AUTORELEASEPOOL_FOR_ARC_DEBUG
EXPECT_EQ(1L, CFGetRetainCount((CFTypeRef)objectPtr2));
RetainPtr<id> object3;
@@ -290,7 +318,10 @@
@autoreleasepool {
object3 = retainPtr([[NSObject new] autorelease]);
}
- auto objectPtr3 = reinterpret_cast<uintptr_t>(object3.get());
+ uintptr_t objectPtr3 = 0;
+BEGIN_AUTORELEASEPOOL_FOR_ARC_DEBUG
+ objectPtr3 = reinterpret_cast<uintptr_t>(object3.get());
+END_AUTORELEASEPOOL_FOR_ARC_DEBUG
EXPECT_EQ(1L, CFGetRetainCount((CFTypeRef)objectPtr3));
}
Added: trunk/Tools/TestWebKitAPI/Tests/WTF/ns/RetainPtrARC.mm (0 => 283712)
--- trunk/Tools/TestWebKitAPI/Tests/WTF/ns/RetainPtrARC.mm (rev 0)
+++ trunk/Tools/TestWebKitAPI/Tests/WTF/ns/RetainPtrARC.mm 2021-10-07 15:02:25 UTC (rev 283712)
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#if !__has_feature(objc_arc)
+#error This tests RetainPtr.h with ARC enabled.
+#endif
+
+#define RETAIN_PTR_TEST_NAME RetainPtrARC
+#include "RetainPtr.mm"
+#undef RETAIN_PTR_TEST_NAME