Both webrtc (third_party/webrtc/base/thread_checker.h) and leveldatabase (third_party/leveldatabase/src/port/thread_annoations.h) leak the same macros so using them together is complicated.
I came upon this conflict when trying to make jumbo (merging many cc files for much higher compilation performance) work in content. I have a local hack that just undefs a lot of macros after including leveldatabase and webrtc headers:
#undef EXCLUSIVE_LOCKS_REQUIRED
#undef SHARED_LOCKS_REQUIRED
#undef LOCKS_EXCLUDED
#undef LOCK_RETURNED
#undef LOCKABLE
#undef SCOPED_LOCKABLE
#undef EXCLUSIVE_LOCK_FUNCTION
#undef SHARED_LOCK_FUNCTION
#undef EXCLUSIVE_TRYLOCK_FUNCTION
#undef SHARED_TRYLOCK_FUNCTION
#undef UNLOCK_FUNCTION
#undef NO_THREAD_SAFETY_ANALYSIS
Comment 1 by brat...@opera.com
, Nov 15 2017