|  | # 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", | 
|  | "-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: | 
|  | ".*\.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", | 
|  | ], | 
|  |  | 
|  | "jsep_ice_candidate\.h": [ | 
|  | "+rtc_base/constructor_magic.h", | 
|  | ], | 
|  |  | 
|  | "jsep_session_description\.h": [ | 
|  | "+rtc_base/constructor_magic.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": [ | 
|  | "+media/base/media_config.h", | 
|  | "+media/base/media_engine.h", | 
|  | "+p2p/base/port.h", | 
|  | "+p2p/base/port_allocator.h", | 
|  | # TODO(https://crbug.com/1212611) Remove once includes fixed in nearby. | 
|  | "+rtc_base/event.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/ref_counted_object.h", | 
|  | "+rtc_base/thread.h", | 
|  | ], | 
|  |  | 
|  | "ref_counted_base\.h": [ | 
|  | "+rtc_base/constructor_magic.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", | 
|  | ], | 
|  |  | 
|  | "stats_types\.h": [ | 
|  | "+rtc_base/constructor_magic.h", | 
|  | "+rtc_base/ref_count.h", | 
|  | "+rtc_base/string_encode.h", | 
|  | "+rtc_base/thread_checker.h", | 
|  | ], | 
|  |  | 
|  | "uma_metrics\.h": [ | 
|  | "+rtc_base/ref_count.h", | 
|  | ], | 
|  |  | 
|  | "audio_frame\.h": [ | 
|  | "+rtc_base/constructor_magic.h", | 
|  | ], | 
|  |  | 
|  | "audio_mixer\.h": [ | 
|  | "+rtc_base/ref_count.h", | 
|  | ], | 
|  |  | 
|  | "audio_decoder\.h": [ | 
|  | "+rtc_base/buffer.h", | 
|  | "+rtc_base/constructor_magic.h", | 
|  | ], | 
|  |  | 
|  | "audio_decoder_factory\.h": [ | 
|  | "+rtc_base/ref_count.h", | 
|  | ], | 
|  |  | 
|  | "audio_decoder_factory_template\.h": [ | 
|  | "+rtc_base/ref_counted_object.h", | 
|  | ], | 
|  |  | 
|  | "audio_encoder\.h": [ | 
|  | "+rtc_base/buffer.h", | 
|  | ], | 
|  |  | 
|  | "audio_encoder_factory\.h": [ | 
|  | "+rtc_base/ref_count.h", | 
|  | ], | 
|  |  | 
|  | "audio_encoder_factory_template\.h": [ | 
|  | "+rtc_base/ref_counted_object.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", | 
|  | "+rtc_base/ref_counted_object.h", | 
|  | ], | 
|  |  | 
|  | "audioproc_float\.h": [ | 
|  | "+modules/audio_processing/include/audio_processing.h", | 
|  | ], | 
|  |  | 
|  | "echo_detector_creator\.h": [ | 
|  | "+modules/audio_processing/include/audio_processing.h", | 
|  | ], | 
|  |  | 
|  | "fake_frame_decryptor\.h": [ | 
|  | "+rtc_base/ref_counted_object.h", | 
|  | ], | 
|  |  | 
|  | "fake_frame_encryptor\.h": [ | 
|  | "+rtc_base/ref_counted_object.h", | 
|  | ], | 
|  |  | 
|  | "mock.*\.h": [ | 
|  | "+test/gmock.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", | 
|  | ], | 
|  |  | 
|  | # .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", | 
|  | "+logging", | 
|  | "+media", | 
|  | "+modules", | 
|  | "+p2p", | 
|  | "+pc", | 
|  | "+rtc_base", | 
|  | "+rtc_tools", | 
|  | "+sdk", | 
|  | "+stats", | 
|  | "+system_wrappers", | 
|  | "+test", | 
|  | "+tools", | 
|  | "+tools_webrtc", | 
|  | "+video", | 
|  | "+third_party", | 
|  | ], | 
|  | } |