// Copyright 2022 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_AUTOFILL_CORE_COMMON_LOGGING_LOG_MACROS_H_ #define COMPONENTS_AUTOFILL_CORE_COMMON_LOGGING_LOG_MACROS_H_ // Logging macro in the style of LOG(INFO) intended for // chrome://autofill-internals. // // In `LOG_AF(logger) << expression`, the `expression` is evaluated only // if the `logger` is active. The expression `logger` must be of type // `LogManager` or `LogBuffer` or `LogManager*` or `LogBuffer`*. // // Support for other types of `logger` can be added by adding template // specializations of `LoggerTraits`. #define LOG_AF(logger) … namespace autofill::internal { // Traits for targets of LOG_AF(). There are currently specializations for // `LogManager*` and `LogBuffer*`. template <typename T> struct LoggerTraits { … }; // This class is used to explicitly ignore values in the conditional // logging macros. This avoids compiler warnings like "value computed // is not used" and "statement has no effect". class Voidify { … }; } // namespace autofill::internal #endif // COMPONENTS_AUTOFILL_CORE_COMMON_LOGGING_LOG_MACROS_H_