From 7480da4118b72b3a64f007cac6556dc64d5682ca Mon Sep 17 00:00:00 2001 From: jtteh Date: Fri, 7 Jul 2017 11:02:15 -0700 Subject: [PATCH] Trace loggging: Check for g_event_logger is not null before calling it. BUG=webrtc:7868 Review-Url: https://codereview.webrtc.org/2961663002 Cr-Commit-Position: refs/heads/master@{#18933} --- webrtc/rtc_base/event_tracer.cc | 11 +++- webrtc/sdk/BUILD.gn | 1 + .../Framework/UnitTests/RTCTracingTest.mm | 50 +++++++++++++++++++ 3 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 webrtc/sdk/objc/Framework/UnitTests/RTCTracingTest.mm diff --git a/webrtc/rtc_base/event_tracer.cc b/webrtc/rtc_base/event_tracer.cc index 8a6a7d5731..008e698455 100644 --- a/webrtc/rtc_base/event_tracer.cc +++ b/webrtc/rtc_base/event_tracer.cc @@ -374,10 +374,15 @@ void SetupInternalTracer() { } void StartInternalCaptureToFile(FILE* file) { - g_event_logger->Start(file, false); + if (g_event_logger) { + g_event_logger->Start(file, false); + } } bool StartInternalCapture(const char* filename) { + if (!g_event_logger) + return false; + FILE* file = fopen(filename, "w"); if (!file) { LOG(LS_ERROR) << "Failed to open trace file '" << filename @@ -389,7 +394,9 @@ bool StartInternalCapture(const char* filename) { } void StopInternalCapture() { - g_event_logger->Stop(); + if (g_event_logger) { + g_event_logger->Stop(); + } } void ShutdownInternalTracer() { diff --git a/webrtc/sdk/BUILD.gn b/webrtc/sdk/BUILD.gn index c576788a9c..0a15fc527b 100644 --- a/webrtc/sdk/BUILD.gn +++ b/webrtc/sdk/BUILD.gn @@ -510,6 +510,7 @@ if (is_ios || is_mac) { "objc/Framework/UnitTests/RTCMediaConstraintsTest.mm", "objc/Framework/UnitTests/RTCPeerConnectionTest.mm", "objc/Framework/UnitTests/RTCSessionDescriptionTest.mm", + "objc/Framework/UnitTests/RTCTracingTest.mm", "objc/Framework/UnitTests/avformatmappertests.mm", ] if (is_ios && diff --git a/webrtc/sdk/objc/Framework/UnitTests/RTCTracingTest.mm b/webrtc/sdk/objc/Framework/UnitTests/RTCTracingTest.mm new file mode 100644 index 0000000000..ec3e226a03 --- /dev/null +++ b/webrtc/sdk/objc/Framework/UnitTests/RTCTracingTest.mm @@ -0,0 +1,50 @@ +/* + * Copyright 2017 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. An additional intellectual property rights grant can be found + * in the file PATENTS. All contributing project authors may + * be found in the AUTHORS file in the root of the source tree. + */ + +#import + +#include + +#include "webrtc/base/gunit.h" + +#import "NSString+StdString.h" +#import "WebRTC/RTCTracing.h" + +@interface RTCTracingTest : NSObject +- (void)tracingTestNoInitialization; +@end + +@implementation RTCTracingTest + +- (NSString *)documentsFilePathForFileName:(NSString *)fileName { + NSParameterAssert(fileName.length); + NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); + NSString *documentsDirPath = paths.firstObject; + NSString *filePath = + [documentsDirPath stringByAppendingPathComponent:fileName]; + return filePath; +} + +- (void)tracingTestNoInitialization { + NSString *filePath = [self documentsFilePathForFileName:@"webrtc-trace.txt"]; + EXPECT_EQ(NO, RTCStartInternalCapture(filePath)); + RTCStopInternalCapture(); +} + +@end + + +TEST(RTCTracingTest, TracingTestNoInitialization) { + @autoreleasepool { + RTCTracingTest *test = [[RTCTracingTest alloc] init]; + [test tracingTestNoInitialization]; + } +} +