blob: cef1b25cff14b1a996fd18632e508742de299075 [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// 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 <stdint.h>
#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<uint32_t>(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_