1# This is supposed to be a complete list of top-level directories, 2# excepting only api/ itself. 3include_rules = [ 4 "-audio", 5 "-base", 6 "-build", 7 "-buildtools", 8 "-build_overrides", 9 "-call", 10 "-common_audio", 11 "-common_video", 12 "-data", 13 "-examples", 14 "-experiments", 15 "-g3doc", 16 "-ios", 17 "-infra", 18 "-logging", 19 "-media", 20 "-net", 21 "-modules", 22 "-out", 23 "-p2p", 24 "-pc", 25 "-resources", 26 "-rtc_base", 27 "-rtc_tools", 28 "-sdk", 29 "-stats", 30 "-style-guide", 31 "-system_wrappers", 32 "-test", 33 "-testing", 34 "-third_party", 35 "-tools", 36 "-tools_webrtc", 37 "-video", 38 "-external/webrtc/webrtc", # Android platform build. 39 "-libyuv", 40 "-common_types.h", 41 "-WebRTC", 42] 43 44specific_include_rules = { 45 # Some internal headers are allowed even in API headers: 46 47 "call_factory_interface\.h": [ 48 "+call/rtp_transport_controller_send_factory_interface.h", 49 ], 50 51 ".*\.h": [ 52 "+rtc_base/checks.h", 53 "+rtc_base/system/rtc_export.h", 54 "+rtc_base/system/rtc_export_template.h", 55 "+rtc_base/units/unit_base.h", 56 ], 57 58 "array_view\.h": [ 59 "+rtc_base/type_traits.h", 60 ], 61 62 # Needed because AudioEncoderOpus is in the wrong place for 63 # backwards compatibilty reasons. See 64 # https://bugs.chromium.org/p/webrtc/issues/detail?id=7847 65 "audio_encoder_opus\.h": [ 66 "+modules/audio_coding/codecs/opus/audio_encoder_opus.h", 67 ], 68 69 "async_resolver_factory\.h": [ 70 "+rtc_base/async_resolver_interface.h", 71 ], 72 73 "async_dns_resolver\.h": [ 74 "+rtc_base/socket_address.h", 75 ], 76 77 "candidate\.h": [ 78 "+rtc_base/network_constants.h", 79 "+rtc_base/socket_address.h", 80 ], 81 82 "data_channel_interface\.h": [ 83 "+rtc_base/copy_on_write_buffer.h", 84 "+rtc_base/ref_count.h", 85 ], 86 87 "data_channel_transport_interface\.h": [ 88 "+rtc_base/copy_on_write_buffer.h", 89 ], 90 91 "dtls_transport_interface\.h": [ 92 "+rtc_base/ref_count.h", 93 "+rtc_base/ssl_certificate.h", 94 ], 95 96 "dtmf_sender_interface\.h": [ 97 "+rtc_base/ref_count.h", 98 ], 99 100 "fec_controller\.h": [ 101 "+modules/include/module_fec_types.h", 102 ], 103 104 "frame_transformer_interface\.h": [ 105 "+rtc_base/ref_count.h", 106 ], 107 108 "ice_transport_interface\.h": [ 109 "+rtc_base/ref_count.h", 110 ], 111 112 "jsep\.h": [ 113 "+rtc_base/ref_count.h", 114 ], 115 116 "media_stream_interface\.h": [ 117 "+modules/audio_processing/include/audio_processing_statistics.h", 118 "+rtc_base/ref_count.h", 119 ], 120 121 "packet_socket_factory\.h": [ 122 "+rtc_base/proxy_info.h", 123 "+rtc_base/async_packet_socket.h", 124 ], 125 126 "peer_connection_interface\.h": [ 127 "+call/rtp_transport_controller_send_factory_interface.h", 128 "+media/base/media_config.h", 129 "+media/base/media_engine.h", 130 "+p2p/base/port.h", 131 "+p2p/base/port_allocator.h", 132 "+rtc_base/network.h", 133 "+rtc_base/network_constants.h", 134 "+rtc_base/network_monitor_factory.h", 135 "+rtc_base/ref_count.h", 136 "+rtc_base/rtc_certificate.h", 137 "+rtc_base/rtc_certificate_generator.h", 138 "+rtc_base/socket_address.h", 139 "+rtc_base/ssl_certificate.h", 140 "+rtc_base/ssl_stream_adapter.h", 141 "+rtc_base/thread.h", 142 ], 143 144 "proxy\.h": [ 145 "+rtc_base/event.h", 146 "+rtc_base/message_handler.h", # Inherits from it. 147 "+rtc_base/thread.h", 148 ], 149 150 "ref_counted_base\.h": [ 151 "+rtc_base/ref_count.h", 152 "+rtc_base/ref_counter.h", 153 ], 154 155 "rtc_error\.h": [ 156 "+rtc_base/logging.h", 157 ], 158 "rtc_event_log_output_file.h": [ 159 # For private member and constructor. 160 "+rtc_base/system/file_wrapper.h", 161 ], 162 "rtp_receiver_interface\.h": [ 163 "+rtc_base/ref_count.h", 164 ], 165 166 "rtp_sender_interface\.h": [ 167 "+rtc_base/ref_count.h", 168 ], 169 170 "rtp_transceiver_interface\.h": [ 171 "+rtc_base/ref_count.h", 172 ], 173 174 "sctp_transport_interface\.h": [ 175 "+rtc_base/ref_count.h", 176 ], 177 178 "set_local_description_observer_interface\.h": [ 179 "+rtc_base/ref_count.h", 180 ], 181 "set_remote_description_observer_interface\.h": [ 182 "+rtc_base/ref_count.h", 183 ], 184 185 "legacy_stats_types\.h": [ 186 "+rtc_base/ref_count.h", 187 "+rtc_base/thread_checker.h", 188 ], 189 190 "uma_metrics\.h": [ 191 "+rtc_base/ref_count.h", 192 ], 193 194 "audio_mixer\.h": [ 195 "+rtc_base/ref_count.h", 196 ], 197 198 "audio_decoder\.h": [ 199 "+rtc_base/buffer.h", 200 ], 201 202 "audio_decoder_factory\.h": [ 203 "+rtc_base/ref_count.h", 204 ], 205 206 "audio_encoder\.h": [ 207 "+rtc_base/buffer.h", 208 ], 209 210 "audio_encoder_factory\.h": [ 211 "+rtc_base/ref_count.h", 212 ], 213 214 "frame_decryptor_interface\.h": [ 215 "+rtc_base/ref_count.h", 216 ], 217 218 "frame_encryptor_interface\.h": [ 219 "+rtc_base/ref_count.h", 220 ], 221 222 "rtc_stats_collector_callback\.h": [ 223 "+rtc_base/ref_count.h", 224 ], 225 226 "rtc_stats_report\.h": [ 227 "+rtc_base/ref_count.h", 228 ], 229 230 "audioproc_float\.h": [ 231 "+modules/audio_processing/include/audio_processing.h", 232 ], 233 234 "echo_detector_creator\.h": [ 235 "+modules/audio_processing/include/audio_processing.h", 236 ], 237 238 "fake_metronome\.h": [ 239 "+rtc_base/synchronization/mutex.h", 240 "+rtc_base/task_queue.h", 241 "+rtc_base/task_utils/repeating_task.h", 242 "+rtc_base/thread_annotations.h", 243 ], 244 245 "make_ref_counted\.h": [ 246 "+rtc_base/ref_counted_object.h", 247 ], 248 249 "mock.*\.h": [ 250 "+test/gmock.h", 251 ], 252 253 "mock_peerconnectioninterface\.h": [ 254 "+rtc_base/ref_counted_object.h", 255 ], 256 257 "mock_video_track\.h": [ 258 "+rtc_base/ref_counted_object.h", 259 ], 260 261 "notifier\.h": [ 262 "+rtc_base/system/no_unique_address.h", 263 ], 264 265 "simulated_network\.h": [ 266 "+rtc_base/random.h", 267 "+rtc_base/thread_annotations.h", 268 ], 269 270 "test_dependency_factory\.h": [ 271 "+rtc_base/thread_checker.h", 272 ], 273 274 "time_controller\.h": [ 275 "+rtc_base/thread.h", 276 ], 277 278 "videocodec_test_fixture\.h": [ 279 "+modules/video_coding/include/video_codec_interface.h" 280 ], 281 282 "video_encoder_config\.h": [ 283 "+rtc_base/ref_count.h", 284 ], 285 286 "sequence_checker\.h": [ 287 "+rtc_base/synchronization/sequence_checker_internal.h", 288 "+rtc_base/thread_annotations.h", 289 ], 290 291 "wrapping_async_dns_resolver\.h": [ 292 "+rtc_base/async_resolver.h", 293 "+rtc_base/async_resolver_interface.h", 294 "+rtc_base/socket_address.h", 295 "+rtc_base/third_party/sigslot/sigslot.h", 296 "+rtc_base/thread_annotations.h", 297 ], 298 299 "video_encoder_factory_template.*\.h": [ 300 "+modules/video_coding", 301 ], 302 303 "video_decoder_factory_template.*\.h": [ 304 "+modules/video_coding", 305 ], 306 307 "field_trials\.h": [ 308 "+rtc_base/containers/flat_map.h", 309 ], 310 311 "video_track_source_proxy_factory.h": [ 312 "+rtc_base/thread.h", 313 ], 314 315 "field_trials_registry\.h": [ 316 "+rtc_base/containers/flat_set.h", 317 ], 318 319 # .cc files in api/ should not be restricted in what they can #include, 320 # so we re-add all the top-level directories here. (That's because .h 321 # files leak their #includes to whoever's #including them, but .cc files 322 # do not since no one #includes them.) 323 ".*\.cc": [ 324 "+audio", 325 "+call", 326 "+common_audio", 327 "+common_video", 328 "+examples", 329 "+experiments", 330 "+logging", 331 "+media", 332 "+modules", 333 "+p2p", 334 "+pc", 335 "+rtc_base", 336 "+rtc_tools", 337 "+sdk", 338 "+stats", 339 "+system_wrappers", 340 "+test", 341 "+tools", 342 "+tools_webrtc", 343 "+video", 344 "+third_party", 345 ], 346} 347