// Copyright 2015 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef NET_LOG_NET_LOG_CAPTURE_MODE_H_ #define NET_LOG_NET_LOG_CAPTURE_MODE_H_ #include #include "net/base/net_export.h" namespace net { // NetLogCaptureMode specifies the logging level. // // It is used to control which events are emitted to the log, and what level of // detail is included in their parameters. // // The capture mode is expressed as a number, where higher values imply more // information. // // Note the numeric values are used in a bitfield (NetLogCaptureModeSet) so must // be sequential starting from 0, and not exceed 31. enum class NetLogCaptureMode : uint32_t { // Default logging level, which is expected to be light-weight and // does best-effort stripping of privacy/security sensitive data. // // * Includes most HTTP request/response headers, but strips cookies and // auth. // * Does not include the full bytes read/written to sockets. kDefault = 0, // Logging level that includes everything from kDefault, plus sensitive data // that it may have strippped. // // * Includes cookies and authentication headers. // * Does not include the full bytes read/written to sockets. kIncludeSensitive, // Logging level that includes everything that is possible to be logged. // // * Includes the actual bytes read/written to sockets // * Will result in large log files. kEverything, kLast = kEverything, }; // Bitfield of NetLogCaptureMode, that should be initialized to zero for empty // set. Bit "i" being set means that the set contains NetLogCaptureMode with // value "i". // // Use the NetLogCaptureModeSet*() functions to operate on it. using NetLogCaptureModeSet = uint32_t; inline NetLogCaptureModeSet NetLogCaptureModeToBit( NetLogCaptureMode capture_mode) { return 1 << static_cast(capture_mode); } inline bool NetLogCaptureModeSetContains(NetLogCaptureMode capture_mode, NetLogCaptureModeSet set) { return (set & NetLogCaptureModeToBit(capture_mode)) != 0; } inline bool NetLogCaptureModeSetAdd(NetLogCaptureMode value, NetLogCaptureModeSet* set) { return *set |= NetLogCaptureModeToBit(value); } // Returns true if |capture_mode| permits logging sensitive values such as // cookies and credentials. NET_EXPORT bool NetLogCaptureIncludesSensitive(NetLogCaptureMode capture_mode); // Returns true if |capture_mode| permits logging the full request/response // bytes from sockets. NET_EXPORT bool NetLogCaptureIncludesSocketBytes( NetLogCaptureMode capture_mode); } // namespace net #endif // NET_LOG_NET_LOG_CAPTURE_MODE_H_