// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef TOOLS_CLANG_SPANIFY_SPANIFYMANUALPATHSTOIGNORE_H_
#define TOOLS_CLANG_SPANIFY_SPANIFYMANUALPATHSTOIGNORE_H_

#include <array>

// Array listing regular expressions of paths that should be ignored when
// running the rewrite_raw_ptr_fields tool on Chromium sources.
//
// If a source file path contains any of the lines in the filter file below,
// then such source file will not be rewritten.
//
// Lines prefixed with "!" can be used to force include files that matched a
// file path to be ignored.
//
// Note that the rewriter has a hardcoded logic for a handful of path-based
// exclusions that cannot be expressed as substring matches:
// - Excluding paths containing "third_party/", but still covering
//   "third_party/blink/"
//   (see the isInThirdPartyLocation AST matcher in RewriteRawPtrFields.cpp).
// - Excluding paths _starting_ with "gen/" or containing "/gen/"
//   (i.e. hopefully just the paths under out/.../gen/... directory)
//   via the isInGeneratedLocation AST matcher in RewriteRawPtrFields.cpp.
inline constexpr std::array kSpanifyManualPathsToIgnore = {
    // DEPS basically prohibits includes from base/.
    "base/allocator/partition_alloc",

    // win:pe_image target that uses this file does not depend on base/.
    "base/no_destructor.h",

    // dwarf_helpers from //base/BUILD.gn is a dependency of base and can't
    // depend on it and thus can't use base::span.
    "base/debug/buffered_dwarf_reader.cc",
    "base/debug/buffered_dwarf_reader.h",
    "base/debug/dwarf_line_no.cc",
    "base/debug/dwarf_line_no.h",

    // span_unittests explicitly wants to test compatibility of certain types,
    // rewriting would break that.
    "base/containers/span_unittest.cc",

    // The comment atop this test suite explains that it "contains intentional
    // memory errors" to verify Chromium tooling.
    "base/tools_sanity_unittest.cc",

    // Can't depend on //base, pointers/references under this directory can't be
    // rewritten.
    "testing/rust_gtest_interop/",

    // Exclude - deprecated and contains legacy C++ and pre-C++11 code.
    "ppapi/",

    // Exclude tools that do not ship in the Chrome binary. Can't depend on
    // //base.
    "base/android/linker/",
    "chrome/chrome_elf/",
    "chrome/installer/mini_installer/",
    "testing/platform_test.h",
    "/tools/",  // catches subdirs e.g. /net/tools, but not devtools/ etc.
    "!tools/clang/spanify/tests/",  // Add back this dir so we can run tests for
                                    // spanify.

    // DEPS prohibits includes from base/
    "chrome/install_static",
    "sandbox/mac/",

    // Exclude pocdll.dll as it doesn't depend on //base and only used for
    // testing.
    "sandbox/win/sandbox_poc/pocdll",

    // Exclude internal definitions of undocumented Windows structures.
    "sandbox/win/src/nt_internals.h",

    // Exclude directories that don't depend on //base, because nothing there
    // uses
    // anything from /base.
    "sandbox/linux/system_headers/",
    "components/history_clusters/core/",
    "ui/qt/",

    // The folder holds headers that are duplicated in the Android source and
    // need to
    // provide a stable C ABI. Can't depend on //base.
    "android_webview/public/",

    // Exclude dir that should hold C headers.
    "mojo/public/c/",

    // Contains sysroot dirs like debian_bullseye_amd64-sysroot/ that are not
    // part of the repository.
    "build/linux/",

    // glslang_tab.cpp.h uses #line directive and modifies the file path to
    // "MachineIndependent/glslang.y" so the isInThirdPartyLocation() filter
    // cannot
    // catch it even though glslang_tab.cpp.h is in third_party/
    "MachineIndependent/",

    // Exclusion for potential performance reasons with the std::array rewrite.
    // Please run additional performance benchmarks before rewriting these
    // files. In particular the changes to WTF's vector.h
    "skia/ext/",
    "third_party/blink/renderer/core/css/parser/css_parser_fast_paths.cc",
    "third_party/blink/renderer/core/layout/inline/line_breaker.cc",
    "third_party/blink/renderer/core/paint/box_border_painter.cc",
    "third_party/blink/renderer/platform/image-decoders/",
    "third_party/blink/renderer/platform/text/",
    "third_party/blink/renderer/platform/wtf/",
    "url/url_canon_host.cc",
    "url/url_canon_path.cc",

    // Exclude auto generated files. These are files that contain the string
    // "This file is auto-generated from".
    "gpu/GLES2/gl2chromium_autogen.h",
    "gpu/command_buffer/client/gles2_implementation_impl_autogen.h",
    "gpu/command_buffer/client/gles2_implementation_unittest_autogen.h",
    "gpu/command_buffer/client/raster_implementation_impl_autogen.h",
    "gpu/command_buffer/client/raster_implementation_unittest_autogen.h",
    "gpu/command_buffer/common/gles2_cmd_format_autogen.h",
    "gpu/command_buffer/service/context_state_impl_autogen.h",
    "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h",
    "gpu/command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h",
    "gpu/command_buffer/service/raster_decoder_autogen.h",
    "gpu/config/gpu_control_list_testing_autogen.cc",
    "gpu/config/gpu_control_list_testing_autogen.h",
    "gpu/config/gpu_control_list_testing_entry_enums_autogen.h",
    "gpu/config/gpu_control_list_testing_exceptions_autogen.h",
    "gpu/ipc/common/vulkan_types.mojom",
    "gpu/ipc/common/vulkan_types_mojom_traits.cc",
    "gpu/ipc/common/vulkan_types_mojom_traits.h",
    "gpu/vulkan/vulkan_function_pointers.cc",
    "gpu/vulkan/vulkan_function_pointers.h",
    "ppapi/c/dev/ppb_opengles2ext_dev.h",
    "ppapi/c/ppb_opengles2.h",
    "ppapi/lib/gl/gles2/gles2.c",
    "ppapi/shared_impl/ppb_opengles2_shared.cc",
    "ui/gl/egl_bindings_autogen_mock.cc",
    "ui/gl/egl_bindings_autogen_mock.h",
    "ui/gl/gl_bindings_api_autogen_egl.h",
    "ui/gl/gl_bindings_api_autogen_gl.h",
    "ui/gl/gl_bindings_autogen_egl.cc",
    "ui/gl/gl_bindings_autogen_egl.h",
    "ui/gl/gl_bindings_autogen_gl.cc",
    "ui/gl/gl_bindings_autogen_gl.h",
    "ui/gl/gl_bindings_autogen_mock.cc",
    "ui/gl/gl_bindings_autogen_mock.h",
    "ui/gl/gl_enums_implementation_autogen.h",
    "ui/gl/gl_mock_autogen_egl.h",
    "ui/gl/gl_mock_autogen_gl.h",
    "ui/gl/gl_stub_autogen_gl.cc",
    "ui/gl/gl_stub_autogen_gl.h",

    // Requested in crrev.com/c/6731996.
    "net/websockets/websocket_frame.cc",

    // Exclude these generated files.
    //
    // An example of `spanify` picking them up can be seen at
    // https://crrev.com/c/6389460/1/third_party/blink/renderer/core/xml/xpath_grammar_generated.cc
    //
    // while a proper "rewrite" would require manipulating bison, e.g.
    // https://crrev.com/c/6357073
    "third_party/blink/renderer/core/xml/xpath_grammar_generated.h",
    "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc",

    // Included inside a class declaration. Adding top-level #includes (e.g.,
    // for span.h, <vector>) here will cause compilation errors.
    "gpu/command_buffer/client/gles2_interface_autogen.h",

    // This test seems to deliberately go out of bounds into other contiguous
    // regions of memory.
    "remoting/base/typed_buffer_unittest.cc",

    // This test is explicitly testing unsafe buffers.
    "base/unsafe_buffers_unittest.cc",

    // This test does weird things having a heap of size zero, allocating it
    // somewhere else and then assuming they can index it without knowing the
    // bounds.
    "third_party/blink/renderer/platform/heap/test/heap_test.cc",
};

#endif  // TOOLS_CLANG_SPANIFY_SPANIFYMANUALPATHSTOIGNORE_H_
