diff --git a/PRESUBMIT.py b/PRESUBMIT.py index 47a1be68f7..b5d4534c0b 100755 --- a/PRESUBMIT.py +++ b/PRESUBMIT.py @@ -941,6 +941,8 @@ def CommonChecks(input_api, output_api): input_api, output_api, non_third_party_sources)) results.extend(CheckBannedAbslMakeUnique( input_api, output_api, non_third_party_sources)) + results.extend(CheckObjcApiSymbols( + input_api, output_api, non_third_party_sources)) return results @@ -1017,6 +1019,35 @@ def CheckBannedAbslMakeUnique(input_api, output_api, source_file_filter): files)] return [] +def CheckObjcApiSymbols(input_api, output_api, source_file_filter): + rtc_objc_export = re.compile(r'RTC_OBJC_EXPORT(.|\n){26}', + re.MULTILINE | re.DOTALL) + file_filter = lambda f: (f.LocalPath().endswith(('.h')) + and source_file_filter(f)) + + files = [] + file_filter = lambda x: (input_api.FilterSourceFile(x) + and source_file_filter(x)) + for f in input_api.AffectedSourceFiles(file_filter): + if not f.LocalPath().endswith('.h') or not 'sdk/objc' in f.LocalPath(): + continue + contents = input_api.ReadFile(f) + for match in rtc_objc_export.finditer(contents): + export_block = match.group(0) + if 'RTC_OBJC_TYPE' not in export_block: + files.append(f.LocalPath()) + + if len(files): + return [output_api.PresubmitError( + 'RTC_OBJC_EXPORT types must be wrapped into an RTC_OBJC_TYPE() ' + + 'macro.\n\n' + + 'For example:\n' + + 'RTC_OBJC_EXPORT @protocol RTC_OBJC_TYPE(RtcFoo)\n\n' + + 'RTC_OBJC_EXPORT @interface RTC_OBJC_TYPE(RtcFoo)\n\n' + + 'Please fix the following files:', + files)] + return [] + def CheckAbslMemoryInclude(input_api, output_api, source_file_filter): pattern = input_api.re.compile( r'^#include\s*"absl/memory/memory.h"', input_api.re.MULTILINE) diff --git a/sdk/objc/api/peerconnection/RTCRtpSender.h b/sdk/objc/api/peerconnection/RTCRtpSender.h index 41bb083d2e..fcdf199869 100644 --- a/sdk/objc/api/peerconnection/RTCRtpSender.h +++ b/sdk/objc/api/peerconnection/RTCRtpSender.h @@ -21,8 +21,8 @@ RTC_OBJC_EXPORT @protocol RTC_OBJC_TYPE (RTCRtpSender) - /** A unique identifier for this sender. */ - @property(nonatomic, readonly) NSString *senderId; +/** A unique identifier for this sender. */ +@property(nonatomic, readonly) NSString *senderId; /** The currently active RTCRtpParameters, as defined in * https://www.w3.org/TR/webrtc/#idl-def-RTCRtpParameters.