Reland of GN: Enable ARC for Mac and iOS in rtc_* templates (patchset #1 id:1 of https://codereview.webrtc.org/2827223003/ )
Reason for revert:
Relanding after fixing ARC issue.
Original issue's description:
> Revert of GN: Enable ARC for Mac and iOS in rtc_* templates (patchset #3 id:40001 of https://codereview.webrtc.org/2781713004/ )
>
> Reason for revert:
> Breaks mac build
>
> Original issue's description:
> > GN: Enable ARC for Mac and iOS in rtc_* templates
> >
> > Remove all uses of retain/release and NSAutoreleasePool.
> >
> > This makes transformation to Bazel easier.
> >
> > This CL subsumes https://codereview.webrtc.org/2778163002 and depends on https://codereview.webrtc.org/2784483002/
> >
> > BUG=webrtc:6412
> >
> > Review-Url: https://codereview.webrtc.org/2781713004
> > Cr-Commit-Position: refs/heads/master@{#17780}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/6bda02b51dc00401d2a0d04be996ed10e5acac47
>
> TBR=kjellander@webrtc.org,magjed@webrtc.org,stefan@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:6412
>
> Review-Url: https://codereview.webrtc.org/2827223003
> Cr-Commit-Position: refs/heads/master@{#17784}
> Committed: https://chromium.googlesource.com/external/webrtc/+/7c8786ae8f2d8481f74b0ab16eb91a8101fe51dc
TBR=kjellander@webrtc.org,magjed@webrtc.org,stefan@webrtc.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:6412
Review-Url: https://codereview.webrtc.org/2834273002
Cr-Commit-Position: refs/heads/master@{#17836}
diff --git a/webrtc/examples/BUILD.gn b/webrtc/examples/BUILD.gn
index 10deaf2..d8e2545 100644
--- a/webrtc/examples/BUILD.gn
+++ b/webrtc/examples/BUILD.gn
@@ -160,7 +160,6 @@
"objc/AppRTCMobile/common/ARDUtilities.h",
"objc/AppRTCMobile/common/ARDUtilities.m",
]
- configs += [ "//build/config/compiler:enable_arc" ]
public_configs = [ ":apprtc_common_config" ]
deps = [
@@ -227,7 +226,6 @@
"objc/AppRTCMobile/RTCSessionDescription+JSON.h",
"objc/AppRTCMobile/RTCSessionDescription+JSON.m",
]
- configs += [ "//build/config/compiler:enable_arc" ]
public_configs = [ ":apprtc_signaling_config" ]
deps = [
":apprtc_common",
@@ -260,7 +258,6 @@
"objc/AppRTCMobile/ios/UIImage+ARDUtilities.h",
"objc/AppRTCMobile/ios/UIImage+ARDUtilities.m",
]
- configs += [ "//build/config/compiler:enable_arc" ]
deps = [
":apprtc_common",
@@ -337,10 +334,7 @@
"objc/AppRTCMobile/mac/APPRTCViewController.h",
"objc/AppRTCMobile/mac/APPRTCViewController.m",
]
- configs += [
- "//webrtc:common_objc",
- "//build/config/compiler:enable_arc",
- ]
+ configs += [ "//webrtc:common_objc" ]
deps = [
":apprtc_common",
":apprtc_signaling",
@@ -394,10 +388,7 @@
"objc/AppRTCMobile/third_party/SocketRocket/SRWebSocket.h",
"objc/AppRTCMobile/third_party/SocketRocket/SRWebSocket.m",
]
- configs += [
- "//build/config/compiler:enable_arc",
- ":socketrocket_warning_config",
- ]
+ configs += [ ":socketrocket_warning_config" ]
public_configs = [ ":socketrocket_include_config" ]
libs = [
@@ -430,7 +421,6 @@
"//build/config/ios:xctest",
"//third_party/ocmock",
]
- configs += [ "//build/config/compiler:enable_arc" ]
}
rtc_ios_xctest_test("apprtcmobile_tests") {
diff --git a/webrtc/modules/audio_device/BUILD.gn b/webrtc/modules/audio_device/BUILD.gn
index 46f0282..da05f5f 100644
--- a/webrtc/modules/audio_device/BUILD.gn
+++ b/webrtc/modules/audio_device/BUILD.gn
@@ -192,8 +192,6 @@
"ios/voice_processing_audio_unit.h",
"ios/voice_processing_audio_unit.mm",
]
- configs += [ "//build/config/compiler:enable_arc" ]
-
libs = [
"AudioToolbox.framework",
"AVFoundation.framework",
@@ -291,7 +289,6 @@
}
if (is_ios) {
sources += [ "ios/objc/RTCAudioSessionTest.mm" ]
- configs += [ "//build/config/compiler:enable_arc" ]
if (target_cpu != "x64") {
sources += [ "ios/audio_device_unittest_ios.cc" ]
}
diff --git a/webrtc/modules/desktop_capture/mouse_cursor_monitor_mac.mm b/webrtc/modules/desktop_capture/mouse_cursor_monitor_mac.mm
index 2130719..73d5e02 100644
--- a/webrtc/modules/desktop_capture/mouse_cursor_monitor_mac.mm
+++ b/webrtc/modules/desktop_capture/mouse_cursor_monitor_mac.mm
@@ -36,7 +36,7 @@
// setting.
NSImage* PaintInCurrentContext(NSImage* source) {
NSSize size = [source size];
- NSImage* new_image = [[[NSImage alloc] initWithSize:size] autorelease];
+ NSImage* new_image = [[NSImage alloc] initWithSize:size];
[new_image lockFocus];
NSRect frame = NSMakeRect(0, 0, size.width, size.height);
[source drawInRect:frame
diff --git a/webrtc/sdk/BUILD.gn b/webrtc/sdk/BUILD.gn
index 77a9f55..721580d 100644
--- a/webrtc/sdk/BUILD.gn
+++ b/webrtc/sdk/BUILD.gn
@@ -50,14 +50,12 @@
"objc/Framework/Headers/WebRTC/RTCSSLAdapter.h",
"objc/Framework/Headers/WebRTC/RTCTracing.h",
]
- configs += [
- "..:common_objc",
- "//build/config/compiler:enable_arc",
- ]
- public_configs = [ ":rtc_sdk_common_objc_config" ]
deps = [
"../base:rtc_base",
]
+ configs += [ "..:common_objc" ]
+
+ public_configs = [ ":rtc_sdk_common_objc_config" ]
if (is_ios) {
sources += [
"objc/Framework/Classes/RTCCameraPreviewView.m",
@@ -195,13 +193,6 @@
"objc/Framework/Headers/WebRTC/RTCVideoTrack.h",
]
- configs += [
- "..:common_objc",
- "//build/config/compiler:enable_arc",
- ]
-
- public_configs = [ ":rtc_sdk_common_objc_config" ]
-
deps = [
":webrtc_h264_video_toolbox",
"../api:video_frame_api",
@@ -245,6 +236,10 @@
]
}
+ configs += [ "..:common_objc" ]
+
+ public_configs = [ ":rtc_sdk_common_objc_config" ]
+
if (!build_with_chromium && is_clang) {
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
@@ -368,13 +363,6 @@
"@rpath/$output_name.framework/$output_name",
]
- configs += [
- "..:common_objc",
- "//build/config/compiler:enable_arc",
- ]
-
- public_configs = [ ":rtc_sdk_common_objc_config" ]
-
deps = [
":rtc_sdk_peerconnection_objc",
"../system_wrappers:field_trial_default",
@@ -390,6 +378,10 @@
"VideoToolbox.framework",
]
+ configs += [ "..:common_objc" ]
+
+ public_configs = [ ":rtc_sdk_common_objc_config" ]
+
if (!build_with_chromium && is_clang) {
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163)
configs -= [ "//build/config/clang:find_bad_constructs" ]
@@ -416,10 +408,7 @@
"objc/Framework/Classes/h264_video_toolbox_nalu.h",
]
- configs += [
- "//webrtc:common_objc",
- "//build/config/compiler:enable_arc",
- ]
+ configs += [ "//webrtc:common_objc" ]
deps = [
":rtc_sdk_common_objc",
diff --git a/webrtc/sdk/objc/Framework/UnitTests/RTCPeerConnectionTest.mm b/webrtc/sdk/objc/Framework/UnitTests/RTCPeerConnectionTest.mm
index bd2db30..1797fea 100644
--- a/webrtc/sdk/objc/Framework/UnitTests/RTCPeerConnectionTest.mm
+++ b/webrtc/sdk/objc/Framework/UnitTests/RTCPeerConnectionTest.mm
@@ -53,11 +53,13 @@
RTCMediaConstraints *contraints = [[RTCMediaConstraints alloc] initWithMandatoryConstraints:@{}
optionalConstraints:nil];
RTCPeerConnectionFactory *factory = [[RTCPeerConnectionFactory alloc] init];
- RTCPeerConnection *peerConnection = [factory peerConnectionWithConfiguration:config
- constraints:contraints delegate:nil];
- RTCConfiguration *newConfig = peerConnection.configuration;
-
+ RTCConfiguration *newConfig;
+ @autoreleasepool {
+ RTCPeerConnection *peerConnection =
+ [factory peerConnectionWithConfiguration:config constraints:contraints delegate:nil];
+ newConfig = peerConnection.configuration;
+ }
EXPECT_EQ([config.iceServers count], [newConfig.iceServers count]);
RTCIceServer *newServer = newConfig.iceServers[0];
RTCIceServer *origServer = config.iceServers[0];
diff --git a/webrtc/sdk/objc/Framework/UnitTests/avformatmappertests.mm b/webrtc/sdk/objc/Framework/UnitTests/avformatmappertests.mm
index 624eec3..cbc2e50 100644
--- a/webrtc/sdk/objc/Framework/UnitTests/avformatmappertests.mm
+++ b/webrtc/sdk/objc/Framework/UnitTests/avformatmappertests.mm
@@ -97,7 +97,6 @@
CFRelease(_format);
_format = nil;
}
- [super dealloc];
}
// Redefinition of AVCaptureDevice methods we want to mock.
diff --git a/webrtc/test/BUILD.gn b/webrtc/test/BUILD.gn
index 64b6e03..e76ff03 100644
--- a/webrtc/test/BUILD.gn
+++ b/webrtc/test/BUILD.gn
@@ -128,7 +128,6 @@
]
if (is_ios) {
sources += [ "testsupport/iosfileutils.mm" ]
- configs += [ "//build/config/compiler:enable_arc" ]
}
visibility = [ ":*" ]
deps = [
diff --git a/webrtc/test/mac/run_test.mm b/webrtc/test/mac/run_test.mm
index 4e0093a..7576b55 100644
--- a/webrtc/test/mac/run_test.mm
+++ b/webrtc/test/mac/run_test.mm
@@ -36,10 +36,10 @@
}
- (void)runAllTests:(TestBlock)testBlock {
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- testBlock();
- running_ = NO;
- [pool release];
+ @autoreleasepool {
+ testBlock();
+ running_ = NO;
+ }
}
- (BOOL)running {
@@ -51,24 +51,22 @@
namespace test {
void RunTest(void(*test)()) {
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- [NSApplication sharedApplication];
+ @autoreleasepool {
+ [NSApplication sharedApplication];
- // Convert the function pointer to an Objective-C block and call on a
- // separate thread, to avoid blocking the main thread.
- TestRunner *testRunner = [[TestRunner alloc] init];
- TestBlock testBlock = functionToBlock(test);
- [NSThread detachNewThreadSelector:@selector(runAllTests:)
- toTarget:testRunner
- withObject:testBlock];
+ // Convert the function pointer to an Objective-C block and call on a
+ // separate thread, to avoid blocking the main thread.
+ TestRunner *testRunner = [[TestRunner alloc] init];
+ TestBlock testBlock = functionToBlock(test);
+ [NSThread detachNewThreadSelector:@selector(runAllTests:)
+ toTarget:testRunner
+ withObject:testBlock];
- NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
- while ([testRunner running] &&
- [runLoop runMode:NSDefaultRunLoopMode
- beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]);
-
- [testRunner release];
- [pool release];
+ NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
+ while ([testRunner running] && [runLoop runMode:NSDefaultRunLoopMode
+ beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]])
+ ;
+ }
}
} // namespace test
diff --git a/webrtc/test/mac/video_renderer_mac.mm b/webrtc/test/mac/video_renderer_mac.mm
index f79aecf..411a7d0 100644
--- a/webrtc/test/mac/video_renderer_mac.mm
+++ b/webrtc/test/mac/video_renderer_mac.mm
@@ -43,11 +43,6 @@
return self;
}
-- (void)dealloc {
- [window_ release];
- [super dealloc];
-}
-
- (void)createWindow:(NSObject *)ignored {
NSInteger xOrigin = nextXOrigin_;
NSRect screenFrame = [[NSScreen mainScreen] frame];
@@ -71,8 +66,7 @@
defer:NO];
NSRect viewFrame = NSMakeRect(0, 0, width_, height_);
- NSOpenGLView *view = [[[NSOpenGLView alloc] initWithFrame:viewFrame
- pixelFormat:nil] autorelease];
+ NSOpenGLView *view = [[NSOpenGLView alloc] initWithFrame:viewFrame pixelFormat:nil];
context_ = [view openGLContext];
[[window_ contentView] addSubview:view];
@@ -105,7 +99,6 @@
MacRenderer::~MacRenderer() {
GlRenderer::Destroy();
- [window_ release];
}
bool MacRenderer::Init(const char* window_title, int width, int height) {
diff --git a/webrtc/webrtc.gni b/webrtc/webrtc.gni
index 6f902c9..e47ac08 100644
--- a/webrtc/webrtc.gni
+++ b/webrtc/webrtc.gni
@@ -211,6 +211,10 @@
# native code is built as part of Chromium.
rtc_common_configs = [ webrtc_root + ":common_config" ]
+if (is_mac || is_ios) {
+ rtc_common_configs += [ "//build/config/compiler:enable_arc" ]
+}
+
# Global public configuration that should be applied to all WebRTC targets. You
# normally shouldn't need to include this in your target as it's automatically
# included when using the rtc_* templates. It set the defines, include paths and