Title: [283712] trunk/Tools
Revision
283712
Author
ddkil...@apple.com
Date
2021-10-07 08:02:25 -0700 (Thu, 07 Oct 2021)

Log Message

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.

Modified Paths

Added Paths

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
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to