ax_common.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. // Copyright 2020 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef UI_ACCESSIBILITY_AX_COMMON_H_
  5. #define UI_ACCESSIBILITY_AX_COMMON_H_
  6. #include "build/build_config.h"
  7. #if (!defined(NDEBUG) || defined(ADDRESS_SANITIZER) || \
  8. defined(LEAK_SANITIZER) || defined(MEMORY_SANITIZER) || \
  9. defined(THREAD_SANITIZER) || defined(UNDEFINED_SANITIZER) || \
  10. DCHECK_IS_ON()) && \
  11. !BUILDFLAG(IS_IOS)
  12. // Enable fast fails on clusterfuzz and other builds used to debug Chrome,
  13. // in order to help narrow down illegal states more quickly.
  14. #define AX_FAIL_FAST_BUILD
  15. #endif
  16. // SANITIZER_CHECK's use case is severe, but recoverable situations that need
  17. // priority debugging. They trigger on Clusterfuzz, debug and sanitizer builds.
  18. // Prefer DCHECK() when enabled because it logs messages in the crash tool,
  19. // unlike CHECK().
  20. #if defined(AX_FAIL_FAST_BUILD) && !DCHECK_IS_ON()
  21. #define SANITIZER_CHECK(val) CHECK(val)
  22. #define SANITIZER_CHECK_EQ(val1, val2) CHECK_EQ(val1, val2)
  23. #define SANITIZER_CHECK_NE(val1, val2) CHECK_NE(val1, val2)
  24. #define SANITIZER_CHECK_LE(val1, val2) CHECK_LE(val1, val2)
  25. #define SANITIZER_CHECK_LT(val1, val2) CHECK_LT(val1, val2)
  26. #define SANITIZER_CHECK_GE(val1, val2) CHECK_GE(val1, val2)
  27. #define SANITIZER_CHECK_GT(val1, val2) CHECK_GT(val1, val2)
  28. #define SANITIZER_NOTREACHED() SANITIZER_CHECK(false)
  29. #else
  30. // Fall back on an ordinary DCHECK.
  31. #define SANITIZER_CHECK(val) DCHECK(val)
  32. #define SANITIZER_CHECK_EQ(val1, val2) DCHECK_EQ(val1, val2)
  33. #define SANITIZER_CHECK_NE(val1, val2) DCHECK_NE(val1, val2)
  34. #define SANITIZER_CHECK_LE(val1, val2) DCHECK_LE(val1, val2)
  35. #define SANITIZER_CHECK_LT(val1, val2) DCHECK_LT(val1, val2)
  36. #define SANITIZER_CHECK_GE(val1, val2) DCHECK_GE(val1, val2)
  37. #define SANITIZER_CHECK_GT(val1, val2) DCHECK_GT(val1, val2)
  38. #define SANITIZER_NOTREACHED() NOTREACHED()
  39. #endif // AX_FAIL_FAST_BUILD && !DCHECK_IS_ON()
  40. #endif // UI_ACCESSIBILITY_AX_COMMON_H_