|  | # 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", | 
|  | ], | 
|  |  | 
|  | "audio_device_defines\.h": [ | 
|  | "+rtc_base/strings/string_builder.h", | 
|  | ], | 
|  |  | 
|  | "audio_format\.h": [ | 
|  | "+rtc_base/strings/string_builder.h", | 
|  | ], | 
|  |  | 
|  | "candidate\.h": [ | 
|  | "+rtc_base/network_constants.h", | 
|  | "+rtc_base/socket_address.h", | 
|  | ], | 
|  |  | 
|  | "create_peerconnection_factory\.h": [ | 
|  | "+rtc_base/thread.h", | 
|  | ], | 
|  |  | 
|  | "data_channel_interface\.h": [ | 
|  | "+rtc_base/copy_on_write_buffer.h", | 
|  | ], | 
|  |  | 
|  | "data_channel_transport_interface\.h": [ | 
|  | "+rtc_base/copy_on_write_buffer.h", | 
|  | ], | 
|  |  | 
|  | "dtls_transport_interface\.h": [ | 
|  | "+rtc_base/ssl_certificate.h", | 
|  | ], | 
|  |  | 
|  | "fec_controller\.h": [ | 
|  | "+modules/include/module_fec_types.h", | 
|  | ], | 
|  |  | 
|  | "jsep\.h": [ | 
|  | "+absl/strings/has_absl_stringify.h", | 
|  | "+absl/strings/str_format.h", | 
|  | ], | 
|  |  | 
|  | "local_network_access_permission\.h": [ | 
|  | "+rtc_base/socket_address.h", | 
|  | ], | 
|  |  | 
|  | "packet_socket_factory\.h": [ | 
|  | "+rtc_base/async_packet_socket.h", | 
|  | "+rtc_base/socket_address.h", | 
|  | "+rtc_base/ssl_certificate.h", | 
|  | ], | 
|  |  | 
|  | "turn_customizer\.h": [ | 
|  | "+p2p/base/port_interface.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/rtc_certificate.h", | 
|  | "+rtc_base/rtc_certificate_generator.h", | 
|  | "+rtc_base/socket_address.h", | 
|  | "+rtc_base/socket_factory.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_counter.h", | 
|  | ], | 
|  |  | 
|  | "rtc_error\.h": [ | 
|  | "+rtc_base/logging.h", | 
|  | "+absl/strings/has_absl_stringify.h", | 
|  | "+absl/strings/str_format.h", | 
|  | ], | 
|  | "rtc_event_log_output_file.h": [ | 
|  | # For private member and constructor. | 
|  | "+rtc_base/system/file_wrapper.h", | 
|  | ], | 
|  |  | 
|  | "legacy_stats_types\.h": [ | 
|  | "+rtc_base/thread_annotations.h", | 
|  | "+rtc_base/thread_checker.h", | 
|  | ], | 
|  |  | 
|  | "audio_decoder\.h": [ | 
|  | "+rtc_base/buffer.h", | 
|  | ], | 
|  |  | 
|  | "audio_encoder\.h": [ | 
|  | "+rtc_base/buffer.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", | 
|  | "+rtc_base/thread_annotations.h", | 
|  | ], | 
|  |  | 
|  | "priority\.h": [ | 
|  | "+rtc_base/strong_alias.h", | 
|  | ], | 
|  |  | 
|  | "simulated_network\.h": [ | 
|  | "+rtc_base/random.h", | 
|  | "+rtc_base/thread_annotations.h", | 
|  | ], | 
|  |  | 
|  | "time_controller\.h": [ | 
|  | "+rtc_base/thread.h", | 
|  | ], | 
|  |  | 
|  | "videocodec_test_fixture\.h": [ | 
|  | "+modules/video_coding/include/video_codec_interface.h" | 
|  | ], | 
|  |  | 
|  | "rtp_parameters\.h": [ | 
|  | "+absl/strings/str_format.h", | 
|  | ], | 
|  |  | 
|  | "sequence_checker\.h": [ | 
|  | "+rtc_base/synchronization/sequence_checker_internal.h", | 
|  | "+rtc_base/thread_annotations.h", | 
|  | ], | 
|  |  | 
|  | "video_encoder_factory_template.*\.h": [ | 
|  | "+modules/video_coding", | 
|  | ], | 
|  |  | 
|  | "video_encoder_factory_interface\.h": [ | 
|  | "+rtc_base/numerics", | 
|  | ], | 
|  |  | 
|  | "video_encoder_interface\.h": [ | 
|  | "+rtc_base/numerics", | 
|  | ], | 
|  |  | 
|  | "simple_encoder_wrapper\.h": [ | 
|  | "+common_video", | 
|  | "+modules", | 
|  | ], | 
|  |  | 
|  | "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", | 
|  | ], | 
|  |  | 
|  | "ice_transport_factory\.h": [ | 
|  | "+p2p/base/port_allocator.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", | 
|  | ], | 
|  | } |