# This is supposed to be a complete list of top-level directories, # excepting only api/ itself. include_rules = [ "-audio", "-base", "-build", "-buildtools", "-build_overrides", "-call", "-common_audio", "-common_video", "-data", "-examples", "-experiments", "-g3doc", "-ios", "-infra", "-logging", "-media", "-net", "-modules", "-out", "-p2p", "-pc", "-resources", "-rtc_base", "-rtc_tools", "-sdk", "-stats", "-style-guide", "-system_wrappers", "-test", "-testing", "-third_party", "-tools", "-tools_webrtc", "-video", "-external/webrtc/webrtc", # Android platform build. "-libyuv", "-common_types.h", "-WebRTC", ] specific_include_rules = { # Some internal headers are allowed even in API headers: "call_factory_interface\.h": [ "+call/rtp_transport_controller_send_factory_interface.h", ], ".*\.h": [ "+rtc_base/checks.h", "+rtc_base/system/rtc_export.h", "+rtc_base/system/rtc_export_template.h", "+rtc_base/units/unit_base.h", ], "array_view\.h": [ "+rtc_base/type_traits.h", ], # Needed because AudioEncoderOpus is in the wrong place for # backwards compatibilty reasons. See # https://bugs.chromium.org/p/webrtc/issues/detail?id=7847 "audio_encoder_opus\.h": [ "+modules/audio_coding/codecs/opus/audio_encoder_opus.h", ], "async_resolver_factory\.h": [ "+rtc_base/async_resolver_interface.h", ], "async_dns_resolver\.h": [ "+rtc_base/socket_address.h", ], "candidate\.h": [ "+rtc_base/network_constants.h", "+rtc_base/socket_address.h", ], "data_channel_interface\.h": [ "+rtc_base/copy_on_write_buffer.h", "+rtc_base/ref_count.h", ], "data_channel_transport_interface\.h": [ "+rtc_base/copy_on_write_buffer.h", ], "dtls_transport_interface\.h": [ "+rtc_base/ref_count.h", "+rtc_base/ssl_certificate.h", ], "dtmf_sender_interface\.h": [ "+rtc_base/ref_count.h", ], "fec_controller\.h": [ "+modules/include/module_fec_types.h", ], "frame_transformer_interface\.h": [ "+rtc_base/ref_count.h", ], "ice_transport_interface\.h": [ "+rtc_base/ref_count.h", ], "jsep\.h": [ "+rtc_base/ref_count.h", ], "media_stream_interface\.h": [ "+modules/audio_processing/include/audio_processing_statistics.h", "+rtc_base/ref_count.h", ], "packet_socket_factory\.h": [ "+rtc_base/proxy_info.h", "+rtc_base/async_packet_socket.h", ], "peer_connection_interface\.h": [ "+call/rtp_transport_controller_send_factory_interface.h", "+media/base/media_config.h", "+media/base/media_engine.h", "+p2p/base/port.h", "+p2p/base/port_allocator.h", "+rtc_base/network.h", "+rtc_base/network_constants.h", "+rtc_base/network_monitor_factory.h", "+rtc_base/ref_count.h", "+rtc_base/rtc_certificate.h", "+rtc_base/rtc_certificate_generator.h", "+rtc_base/socket_address.h", "+rtc_base/ssl_certificate.h", "+rtc_base/ssl_stream_adapter.h", "+rtc_base/thread.h", ], "proxy\.h": [ "+rtc_base/event.h", "+rtc_base/message_handler.h", # Inherits from it. "+rtc_base/thread.h", ], "ref_counted_base\.h": [ "+rtc_base/ref_count.h", "+rtc_base/ref_counter.h", ], "rtc_error\.h": [ "+rtc_base/logging.h", ], "rtc_event_log_output_file.h": [ # For private member and constructor. "+rtc_base/system/file_wrapper.h", ], "rtp_receiver_interface\.h": [ "+rtc_base/ref_count.h", ], "rtp_sender_interface\.h": [ "+rtc_base/ref_count.h", ], "rtp_transceiver_interface\.h": [ "+rtc_base/ref_count.h", ], "sctp_transport_interface\.h": [ "+rtc_base/ref_count.h", ], "set_local_description_observer_interface\.h": [ "+rtc_base/ref_count.h", ], "set_remote_description_observer_interface\.h": [ "+rtc_base/ref_count.h", ], "legacy_stats_types\.h": [ "+rtc_base/ref_count.h", "+rtc_base/thread_checker.h", ], "uma_metrics\.h": [ "+rtc_base/ref_count.h", ], "audio_mixer\.h": [ "+rtc_base/ref_count.h", ], "audio_decoder\.h": [ "+rtc_base/buffer.h", ], "audio_decoder_factory\.h": [ "+rtc_base/ref_count.h", ], "audio_encoder\.h": [ "+rtc_base/buffer.h", ], "audio_encoder_factory\.h": [ "+rtc_base/ref_count.h", ], "frame_decryptor_interface\.h": [ "+rtc_base/ref_count.h", ], "frame_encryptor_interface\.h": [ "+rtc_base/ref_count.h", ], "rtc_stats_collector_callback\.h": [ "+rtc_base/ref_count.h", ], "rtc_stats_report\.h": [ "+rtc_base/ref_count.h", ], "audioproc_float\.h": [ "+modules/audio_processing/include/audio_processing.h", ], "echo_detector_creator\.h": [ "+modules/audio_processing/include/audio_processing.h", ], "fake_metronome\.h": [ "+rtc_base/synchronization/mutex.h", "+rtc_base/task_queue.h", "+rtc_base/task_utils/repeating_task.h", "+rtc_base/thread_annotations.h", ], "make_ref_counted\.h": [ "+rtc_base/ref_counted_object.h", ], "mock.*\.h": [ "+test/gmock.h", ], "mock_peerconnectioninterface\.h": [ "+rtc_base/ref_counted_object.h", ], "mock_video_track\.h": [ "+rtc_base/ref_counted_object.h", ], "notifier\.h": [ "+rtc_base/system/no_unique_address.h", ], "simulated_network\.h": [ "+rtc_base/random.h", "+rtc_base/thread_annotations.h", ], "test_dependency_factory\.h": [ "+rtc_base/thread_checker.h", ], "time_controller\.h": [ "+rtc_base/thread.h", ], "videocodec_test_fixture\.h": [ "+modules/video_coding/include/video_codec_interface.h" ], "video_encoder_config\.h": [ "+rtc_base/ref_count.h", ], "sequence_checker\.h": [ "+rtc_base/synchronization/sequence_checker_internal.h", "+rtc_base/thread_annotations.h", ], "wrapping_async_dns_resolver\.h": [ "+rtc_base/async_resolver.h", "+rtc_base/async_resolver_interface.h", "+rtc_base/socket_address.h", "+rtc_base/third_party/sigslot/sigslot.h", "+rtc_base/thread_annotations.h", ], "video_encoder_factory_template.*\.h": [ "+modules/video_coding", ], "video_decoder_factory_template.*\.h": [ "+modules/video_coding", ], "field_trials\.h": [ "+rtc_base/containers/flat_map.h", ], "video_track_source_proxy_factory.h": [ "+rtc_base/thread.h", ], "field_trials_registry\.h": [ "+rtc_base/containers/flat_set.h", ], # .cc files in api/ should not be restricted in what they can #include, # so we re-add all the top-level directories here. (That's because .h # files leak their #includes to whoever's #including them, but .cc files # do not since no one #includes them.) ".*\.cc": [ "+audio", "+call", "+common_audio", "+common_video", "+examples", "+experiments", "+logging", "+media", "+modules", "+p2p", "+pc", "+rtc_base", "+rtc_tools", "+sdk", "+stats", "+system_wrappers", "+test", "+tools", "+tools_webrtc", "+video", "+third_party", ], }