# ---------------------------------------------------------------------------
# This file sets up default exclusions for special cases of source code that
# would fail the various lint style checks used by lint_source.py
# This file complies with JSON with an exception that allows comments to be
# written, which begin with # character and last until the end of the line.
#
# This is a quick example of what each line should look like:
#
#   # Exclude src/xyzzy.cpp from the checks "gnusto" and "rezrov"
#   "src/xyzzy.cpp": ["gnusto", "rezrov"],
# ---------------------------------------------------------------------------

{
  # These files comes from NaCl and so have non-Android copyrights.
  "mods/android/bionic/libc/arch-nacl/syscalls/irt_nonsfi.h": ["copyright"],

  # TODO(crbug.com/408776) Is a mod of an stlport file and needs to be removed out of src/
  "src/ndk_translation/ndk_tests/encoding_test.cc": ["copyright"],

  # ART test does not allow to inject ARC MOD marks inside test expectation.
  # See also mods/upstream/art-test-output-race.
  # TODO(crbug.com/463789): Investigate why output race does not happen in
  # upstream.
  "mods/android/art/test/008-exceptions/expected.txt": ["analyze_diffs"],
  "mods/android/art/test/038-inner-null/expected.txt": ["analyze_diffs"],
  "mods/android/art/test/054-uncaught/expected.txt": ["analyze_diffs"],

  # TODO(lpique) Fix the file and remove the line
  "src/build/arc_team_extension/show_review_counts.js": ["gjslint"],

  # TODO(penghuang) remove it when flake8 W901 support #NOQA
  "src/build/run_integration_tests.py": ["flake8"],

  # File moved verbatim from buildbot (needs to be refactored).
  "src/buildbot/build_steps.py": ["flake8"],

  # This file contains the mix of c-style code and cpp-style code.
  # These files have enough intentional violations that we prefer to ignore
  # the entire file rather than use NOLINT as many times as would be needed:
  "src/common/chromium_build_config.h": ["cpplint"],
  "src/common/trace_event_internal.h": ["cpplint"],

  # Third party files.
  "third_party/examples/san-angeles/jni/importgl.h": ["cpplint"],
  "third_party/examples/replicaisland/tools/ExtractPoints.js": ["gjslint"],
  "third_party/examples/san-angeles/jni/app.h": ["cpplint"],
  "third_party/examples/san-angeles/jni/cams.h": ["cpplint"],
  "third_party/examples/san-angeles/jni/shapes.h": ["cpplint"],

  # These are the Khronos GL headers with their own style.
  "third_party/khronos/GLES/gl.h": ["cpplint"],
  "third_party/khronos/GLES/glext.h": ["cpplint"],
  "third_party/khronos/GLES/glplatform.h": ["cpplint"],
  "third_party/khronos/GLES2/gl2.h": ["cpplint"],
  "third_party/khronos/GLES2/gl2ext.h": ["cpplint"],
  "third_party/khronos/GLES2/gl2platform.h": ["cpplint"],

  # chrome_test source.
  "third_party/testing/chrome_test/chrome_test.js": ["gjslint", "analyze_diffs"],

  # Chromium third_party files not copyrighted by Chromium authors.
  "mods/android/external/chromium_org/third_party/opus/src/celt/arm/celt_pitch_xcorr_arm_gnu.S": ["copyright"],
  "mods/android/external/chromium_org/third_party/webrtc/modules/audio_processing/aecm/aecm_core_neon_offsets.h": ["copyright"],
  "mods/android/external/chromium_org/third_party/webrtc/modules/audio_processing/ns/nsx_core_neon_offsets.h": ["copyright"],

  # Having ARC MOD confuses this script.
  "src/build/arc.el": ["analyze_diffs"],

  # This is from NaCl SDK Tools.
  "canned/host/nacl_sdk/download.py": ["flake8"],
  "canned/host/nacl_sdk/sdk_update.py": ["flake8"],

  # This is part of the Chrome apps platform downloaded from GitHub:
  # https://github.com/petele/IAPDemo/blob/master/scripts/buy.js
  "canned/cws/buy.js": ["gjslint"]
}
