diff --git a/PRESUBMIT.py b/PRESUBMIT.py index 303b15980d..ca4b9c1ca9 100755 --- a/PRESUBMIT.py +++ b/PRESUBMIT.py @@ -1051,6 +1051,8 @@ def CommonChecks(input_api, output_api): non_third_party_sources)) results.extend( CheckObjcApiSymbols(input_api, output_api, non_third_party_sources)) + results.extend( + CheckSysSocketInclude(input_api, output_api, non_third_party_sources)) return results @@ -1157,6 +1159,29 @@ def CheckBannedAbslOptional(input_api, output_api, source_file_filter): return [] +def CheckSysSocketInclude(input_api, output_api, source_file_filter): + sys_socket = re.compile( + '^#include ((?!IWYU pragma|no-presubmit-check).)*$') + file_filter = lambda f: (f.LocalPath().endswith( + ('.cc', '.h')) and source_file_filter(f)) + + files = [] + for f in input_api.AffectedFiles(include_deletes=False, + file_filter=file_filter): + for _, line in f.ChangedContents(): + if sys_socket.search(line): + files.append(f.LocalPath()) + break + + if files: + return [ + output_api.PresubmitError( + 'PleaseInclude "rtc_base/net_helpers.h" instead of ' + '.\nAffected files:', 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) diff --git a/api/test/network_emulation/BUILD.gn b/api/test/network_emulation/BUILD.gn index 30e88a0f2a..bb4af451b7 100644 --- a/api/test/network_emulation/BUILD.gn +++ b/api/test/network_emulation/BUILD.gn @@ -48,6 +48,7 @@ rtc_library("network_emulation") { "../../../rtc_base:copy_on_write_buffer", "../../../rtc_base:ip_address", "../../../rtc_base:net_helper", + "../../../rtc_base:net_helpers", "../../../rtc_base:socket_address", "../../numerics", "../../task_queue", diff --git a/api/test/network_emulation/network_emulation_interfaces.cc b/api/test/network_emulation/network_emulation_interfaces.cc index 32ef6214c9..1086b96320 100644 --- a/api/test/network_emulation/network_emulation_interfaces.cc +++ b/api/test/network_emulation/network_emulation_interfaces.cc @@ -9,10 +9,6 @@ */ #include "api/test/network_emulation/network_emulation_interfaces.h" -#if defined(WEBRTC_POSIX) -#include -#endif - #include #include "api/units/data_rate.h" @@ -20,6 +16,7 @@ #include "rtc_base/checks.h" #include "rtc_base/copy_on_write_buffer.h" #include "rtc_base/net_helper.h" +#include "rtc_base/net_helpers.h" #include "rtc_base/socket_address.h" namespace webrtc { diff --git a/api/transport/BUILD.gn b/api/transport/BUILD.gn index 7d19c60ae8..c84b71ed6e 100644 --- a/api/transport/BUILD.gn +++ b/api/transport/BUILD.gn @@ -117,6 +117,7 @@ rtc_source_set("stun_types") { "../../rtc_base:digest", "../../rtc_base:ip_address", "../../rtc_base:logging", + "../../rtc_base:net_helpers", "../../rtc_base:socket_address", "../../system_wrappers:metrics", "//third_party/abseil-cpp/absl/strings:string_view", diff --git a/api/transport/DEPS b/api/transport/DEPS index 53a68e0e85..c057dfe5de 100644 --- a/api/transport/DEPS +++ b/api/transport/DEPS @@ -2,6 +2,7 @@ specific_include_rules = { "stun\.h": [ "+rtc_base/byte_buffer.h", "+rtc_base/ip_address.h", + "+rtc_base/net_helpers.h", "+rtc_base/socket_address.h", ], } diff --git a/api/transport/stun.cc b/api/transport/stun.cc index 9a355b2065..f8b20e5d71 100644 --- a/api/transport/stun.cc +++ b/api/transport/stun.cc @@ -12,7 +12,6 @@ #if defined(WEBRTC_POSIX) #include -#include #endif #include @@ -36,6 +35,7 @@ #include "rtc_base/ip_address.h" #include "rtc_base/logging.h" #include "rtc_base/message_digest.h" +#include "rtc_base/net_helpers.h" #include "rtc_base/socket_address.h" #include "system_wrappers/include/metrics.h" diff --git a/api/transport/stun.h b/api/transport/stun.h index 8300f75505..ef95cb716d 100644 --- a/api/transport/stun.h +++ b/api/transport/stun.h @@ -14,9 +14,6 @@ // This file contains classes for dealing with the STUN protocol, as specified // in RFC 5389, and its descendants. -#if defined(WEBRTC_POSIX) -#include -#endif #include #include @@ -30,6 +27,7 @@ #include "rtc_base/byte_buffer.h" #include "rtc_base/checks.h" #include "rtc_base/ip_address.h" +#include "rtc_base/net_helpers.h" #include "rtc_base/socket_address.h" namespace cricket { diff --git a/examples/BUILD.gn b/examples/BUILD.gn index 57de7cecd4..91c2f8ab51 100644 --- a/examples/BUILD.gn +++ b/examples/BUILD.gn @@ -792,6 +792,7 @@ if (is_linux || is_chromeos || is_win) { ] deps = [ "../rtc_base:checks", + "../rtc_base:net_helpers", "../rtc_base:stringutils", "../system_wrappers:field_trial", "../test:field_trial", diff --git a/examples/androidvoip/jni/android_voip_client.cc b/examples/androidvoip/jni/android_voip_client.cc index c681dc572b..9f14d425eb 100644 --- a/examples/androidvoip/jni/android_voip_client.cc +++ b/examples/androidvoip/jni/android_voip_client.cc @@ -11,7 +11,7 @@ #include "examples/androidvoip/jni/android_voip_client.h" #include -#include +#include // no-presubmit-check #include #include diff --git a/examples/peerconnection/server/data_socket.h b/examples/peerconnection/server/data_socket.h index 57ad5b9aee..3c4f53dbfc 100644 --- a/examples/peerconnection/server/data_socket.h +++ b/examples/peerconnection/server/data_socket.h @@ -11,14 +11,16 @@ #ifndef EXAMPLES_PEERCONNECTION_SERVER_DATA_SOCKET_H_ #define EXAMPLES_PEERCONNECTION_SERVER_DATA_SOCKET_H_ +#include + +#include "rtc_base/net_helpers.h" + #ifdef WIN32 -#include typedef int socklen_t; typedef SOCKET NativeSocket; #else #include #include -#include #define closesocket close typedef int NativeSocket; @@ -31,7 +33,6 @@ typedef int NativeSocket; #endif #endif -#include class SocketBase { public: diff --git a/pc/BUILD.gn b/pc/BUILD.gn index a5560cdf49..9a7a783b62 100644 --- a/pc/BUILD.gn +++ b/pc/BUILD.gn @@ -1158,6 +1158,7 @@ rtc_source_set("peer_connection") { "../rtc_base:logging", "../rtc_base:macromagic", "../rtc_base:net_helper", + "../rtc_base:net_helpers", "../rtc_base:network", "../rtc_base:network_constants", "../rtc_base:socket_address", diff --git a/pc/peer_connection.cc b/pc/peer_connection.cc index b125f9e4fe..cbf5a68afc 100644 --- a/pc/peer_connection.cc +++ b/pc/peer_connection.cc @@ -109,6 +109,7 @@ #include "rtc_base/ip_address.h" #include "rtc_base/logging.h" #include "rtc_base/net_helper.h" +#include "rtc_base/net_helpers.h" #include "rtc_base/network.h" #include "rtc_base/network_constants.h" #include "rtc_base/rtc_certificate.h" diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn index 86a0e81f2b..28f831b7d0 100644 --- a/rtc_base/BUILD.gn +++ b/rtc_base/BUILD.gn @@ -1064,6 +1064,7 @@ rtc_library("socket") { ":buffer", ":checks", ":macromagic", + ":net_helpers", ":socket_address", "../api/units:timestamp", "./network:ecn_marking", diff --git a/rtc_base/ifaddrs_android.cc b/rtc_base/ifaddrs_android.cc index 6474fb7244..0a7ad3c562 100644 --- a/rtc_base/ifaddrs_android.cc +++ b/rtc_base/ifaddrs_android.cc @@ -19,7 +19,7 @@ #include #include #include -#include +#include // no-presubmit-check #include #include #include diff --git a/rtc_base/ifaddrs_android.h b/rtc_base/ifaddrs_android.h index 1a5b662f06..1f3f265c4b 100644 --- a/rtc_base/ifaddrs_android.h +++ b/rtc_base/ifaddrs_android.h @@ -12,7 +12,7 @@ #define RTC_BASE_IFADDRS_ANDROID_H_ #include -#include +#include // no-presubmit-check // Implementation of getifaddrs for Android. // Fills out a list of ifaddr structs (see below) which contain information diff --git a/rtc_base/ip_address.cc b/rtc_base/ip_address.cc index 9e436e3c78..318add1331 100644 --- a/rtc_base/ip_address.cc +++ b/rtc_base/ip_address.cc @@ -10,7 +10,6 @@ #if defined(WEBRTC_POSIX) #include -#include #include "absl/strings/string_view.h" #ifdef OPENBSD diff --git a/rtc_base/ip_address.h b/rtc_base/ip_address.h index c89fa9f868..b2f0b9906c 100644 --- a/rtc_base/ip_address.h +++ b/rtc_base/ip_address.h @@ -15,12 +15,10 @@ #include #include #include -#include #include "absl/strings/string_view.h" #endif #if defined(WEBRTC_WIN) -#include #include #endif #include @@ -32,6 +30,7 @@ #include "rtc_base/win32.h" #endif #include "absl/strings/string_view.h" +#include "rtc_base/net_helpers.h" #include "rtc_base/system/rtc_export.h" namespace rtc { diff --git a/rtc_base/net_helpers.h b/rtc_base/net_helpers.h index a529f4f03f..dffdf1299b 100644 --- a/rtc_base/net_helpers.h +++ b/rtc_base/net_helpers.h @@ -12,7 +12,7 @@ #define RTC_BASE_NET_HELPERS_H_ #if defined(WEBRTC_POSIX) -#include +#include // IWYU pragma: export #elif WEBRTC_WIN #include // NOLINT diff --git a/rtc_base/socket.h b/rtc_base/socket.h index aeb4ad7f00..1540127ccb 100644 --- a/rtc_base/socket.h +++ b/rtc_base/socket.h @@ -20,17 +20,13 @@ #if defined(WEBRTC_POSIX) #include #include -#include #include #define SOCKET_EACCES EACCES #endif -#if defined(WEBRTC_WIN) -#include "rtc_base/win32.h" -#endif - #include "api/units/timestamp.h" #include "rtc_base/buffer.h" +#include "rtc_base/net_helpers.h" #include "rtc_base/network/ecn_marking.h" #include "rtc_base/socket_address.h" #include "rtc_base/system/rtc_export.h" diff --git a/rtc_base/socket_address.cc b/rtc_base/socket_address.cc index 8601fc9040..8c1a894153 100644 --- a/rtc_base/socket_address.cc +++ b/rtc_base/socket_address.cc @@ -15,7 +15,6 @@ #if defined(WEBRTC_POSIX) #include -#include #include #if defined(OPENBSD) #include