From 8424513721e8288958bfa665dae4a64d20690f31 Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Thu, 3 Aug 2023 15:26:59 -0700 Subject: [PATCH] [Darwin] Enable ARC in darwin/common unit tests The end goal is for all Objective-C code to be compiled with ARC enabled. The common framework code is already compiled with ARC enabled; this enables it for the tests as well. Issue: https://github.com/flutter/flutter/issues/116445 --- shell/platform/darwin/common/BUILD.gn | 4 ++++ .../framework/Source/FlutterChannelsTest.m | 6 ++--- .../framework/Source/FlutterNSBundleUtils.mm | 4 ++++ .../Source/flutter_codecs_unittest.mm | 2 ++ .../Source/flutter_standard_codec_unittest.mm | 22 +++++++------------ 5 files changed, 20 insertions(+), 18 deletions(-) diff --git a/shell/platform/darwin/common/BUILD.gn b/shell/platform/darwin/common/BUILD.gn index e359d1c332588..31eca1c8f2070 100644 --- a/shell/platform/darwin/common/BUILD.gn +++ b/shell/platform/darwin/common/BUILD.gn @@ -73,6 +73,10 @@ executable("framework_common_unittests") { "framework/Source/flutter_standard_codec_unittest.mm", ] + cflags_objcc = flutter_cflags_objcc_arc + + ldflags = [ "-ObjC" ] + deps = [ ":framework_common", ":framework_common_fixtures", diff --git a/shell/platform/darwin/common/framework/Source/FlutterChannelsTest.m b/shell/platform/darwin/common/framework/Source/FlutterChannelsTest.m index 1bd2e7e2b7ac9..767c762d86449 100644 --- a/shell/platform/darwin/common/framework/Source/FlutterChannelsTest.m +++ b/shell/platform/darwin/common/framework/Source/FlutterChannelsTest.m @@ -2,15 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#if !__has_feature(objc_arc) -#error ARC must be enabled! -#endif - #import "flutter/shell/platform/darwin/common/framework/Headers/FlutterChannels.h" #import #import +FLUTTER_ASSERT_ARC + @protocol FlutterTaskQueue @end diff --git a/shell/platform/darwin/common/framework/Source/FlutterNSBundleUtils.mm b/shell/platform/darwin/common/framework/Source/FlutterNSBundleUtils.mm index 7ad26579f511c..ab403f9b8d52b 100644 --- a/shell/platform/darwin/common/framework/Source/FlutterNSBundleUtils.mm +++ b/shell/platform/darwin/common/framework/Source/FlutterNSBundleUtils.mm @@ -4,6 +4,10 @@ #include +#import "flutter/shell/platform/darwin/common/framework/Headers/FlutterMacros.h" + +FLUTTER_ASSERT_ARC + NSBundle* FLTFrameworkBundleInternal(NSString* bundleID, NSURL* searchURL) { NSDirectoryEnumerator* frameworkEnumerator = [NSFileManager.defaultManager enumeratorAtURL:searchURL diff --git a/shell/platform/darwin/common/framework/Source/flutter_codecs_unittest.mm b/shell/platform/darwin/common/framework/Source/flutter_codecs_unittest.mm index 226afbe82a3c0..f0298a0c268f5 100644 --- a/shell/platform/darwin/common/framework/Source/flutter_codecs_unittest.mm +++ b/shell/platform/darwin/common/framework/Source/flutter_codecs_unittest.mm @@ -6,6 +6,8 @@ #include "gtest/gtest.h" +FLUTTER_ASSERT_ARC + TEST(FlutterStringCodec, CanEncodeAndDecodeNil) { FlutterStringCodec* codec = [FlutterStringCodec sharedInstance]; ASSERT_TRUE([codec encode:nil] == nil); diff --git a/shell/platform/darwin/common/framework/Source/flutter_standard_codec_unittest.mm b/shell/platform/darwin/common/framework/Source/flutter_standard_codec_unittest.mm index e0a2a2ca211e6..f4ce192e8006a 100644 --- a/shell/platform/darwin/common/framework/Source/flutter_standard_codec_unittest.mm +++ b/shell/platform/darwin/common/framework/Source/flutter_standard_codec_unittest.mm @@ -6,7 +6,7 @@ #include "gtest/gtest.h" -FLUTTER_ASSERT_NOT_ARC +FLUTTER_ASSERT_ARC @interface Pair : NSObject @property(atomic, readonly, strong, nullable) NSObject* left; @@ -18,17 +18,11 @@ @implementation Pair - (instancetype)initWithLeft:(NSObject*)left right:(NSObject*)right { self = [super init]; if (self) { - _left = [left retain]; - _right = [right retain]; + _left = left; + _right = right; } return self; } - -- (void)dealloc { - [_left release]; - [_right release]; - [super dealloc]; -} @end static const UInt8 kDATE = 128; @@ -71,7 +65,7 @@ - (id)readValueOfType:(UInt8)type { return [NSDate dateWithTimeIntervalSince1970:time]; } case kPAIR: { - return [[[Pair alloc] initWithLeft:[self readValue] right:[self readValue]] autorelease]; + return [[Pair alloc] initWithLeft:[self readValue] right:[self readValue]]; } default: return [super readValueOfType:type]; @@ -86,10 +80,10 @@ - (FlutterStandardReader*)readerWithData:(NSData*)data; @implementation ExtendedReaderWriter - (FlutterStandardWriter*)writerWithData:(NSMutableData*)data { - return [[[ExtendedWriter alloc] initWithData:data] autorelease]; + return [[ExtendedWriter alloc] initWithData:data]; } - (FlutterStandardReader*)readerWithData:(NSData*)data { - return [[[ExtendedReader alloc] initWithData:data] autorelease]; + return [[ExtendedReader alloc] initWithData:data]; } @end @@ -341,10 +335,10 @@ static void CheckEncodeDecode(id value) { } TEST(FlutterStandardCodec, HandlesSubclasses) { - ExtendedReaderWriter* extendedReaderWriter = [[[ExtendedReaderWriter alloc] init] autorelease]; + ExtendedReaderWriter* extendedReaderWriter = [[ExtendedReaderWriter alloc] init]; FlutterStandardMessageCodec* codec = [FlutterStandardMessageCodec codecWithReaderWriter:extendedReaderWriter]; - Pair* pair = [[[Pair alloc] initWithLeft:@1 right:@2] autorelease]; + Pair* pair = [[Pair alloc] initWithLeft:@1 right:@2]; NSData* encoded = [codec encode:pair]; Pair* decoded = [codec decode:encoded]; ASSERT_TRUE([pair.left isEqual:decoded.left]);