| Index: net/log/net_log.cc
|
| diff --git a/net/log/net_log.cc b/net/log/net_log.cc
|
| index 7f1d6e91218d4d99671a0a5cd691e47c0ac7ae27..e112c2cb3953ceec6f30a33f91a7e0cc23c7569d 100644
|
| --- a/net/log/net_log.cc
|
| +++ b/net/log/net_log.cc
|
| @@ -17,22 +17,23 @@ namespace net {
|
|
|
| namespace {
|
|
|
| -// Returns parameters for logging data transferred events. Includes number of
|
| -// bytes transferred and, if the log level indicates bytes should be logged and
|
| -// |byte_count| > 0, the bytes themselves. The bytes are hex-encoded, since
|
| -// base::StringValue only supports UTF-8.
|
| +// Returns parameters for logging data transferred events. At a minum includes
|
| +// the number of bytes transferred. If the capture mode allows logging byte
|
| +// contents and |byte_count| > 0, then will include the actual bytes. The
|
| +// bytes are hex-encoded, since base::StringValue only supports UTF-8.
|
| base::Value* BytesTransferredCallback(int byte_count,
|
| const char* bytes,
|
| - NetLog::LogLevel log_level) {
|
| + NetLogCaptureMode capture_mode) {
|
| base::DictionaryValue* dict = new base::DictionaryValue();
|
| dict->SetInteger("byte_count", byte_count);
|
| - if (NetLog::IsLoggingBytes(log_level) && byte_count > 0)
|
| + if (capture_mode.include_socket_bytes() && byte_count > 0)
|
| dict->SetString("hex_encoded_bytes", base::HexEncode(bytes, byte_count));
|
| return dict;
|
| }
|
|
|
| -base::Value* SourceEventParametersCallback(const NetLog::Source source,
|
| - NetLog::LogLevel /* log_level */) {
|
| +base::Value* SourceEventParametersCallback(
|
| + const NetLog::Source source,
|
| + NetLogCaptureMode /* capture_mode */) {
|
| if (!source.IsValid())
|
| return NULL;
|
| base::DictionaryValue* event_params = new base::DictionaryValue();
|
| @@ -42,7 +43,7 @@ base::Value* SourceEventParametersCallback(const NetLog::Source source,
|
|
|
| base::Value* NetLogIntegerCallback(const char* name,
|
| int value,
|
| - NetLog::LogLevel /* log_level */) {
|
| + NetLogCaptureMode /* capture_mode */) {
|
| base::DictionaryValue* event_params = new base::DictionaryValue();
|
| event_params->SetInteger(name, value);
|
| return event_params;
|
| @@ -50,7 +51,7 @@ base::Value* NetLogIntegerCallback(const char* name,
|
|
|
| base::Value* NetLogInt64Callback(const char* name,
|
| int64 value,
|
| - NetLog::LogLevel /* log_level */) {
|
| + NetLogCaptureMode /* capture_mode */) {
|
| base::DictionaryValue* event_params = new base::DictionaryValue();
|
| event_params->SetString(name, base::Int64ToString(value));
|
| return event_params;
|
| @@ -58,7 +59,7 @@ base::Value* NetLogInt64Callback(const char* name,
|
|
|
| base::Value* NetLogStringCallback(const char* name,
|
| const std::string* value,
|
| - NetLog::LogLevel /* log_level */) {
|
| + NetLogCaptureMode /* capture_mode */) {
|
| base::DictionaryValue* event_params = new base::DictionaryValue();
|
| event_params->SetString(name, *value);
|
| return event_params;
|
| @@ -66,7 +67,7 @@ base::Value* NetLogStringCallback(const char* name,
|
|
|
| base::Value* NetLogString16Callback(const char* name,
|
| const base::string16* value,
|
| - NetLog::LogLevel /* log_level */) {
|
| + NetLogCaptureMode /* capture_mode */) {
|
| base::DictionaryValue* event_params = new base::DictionaryValue();
|
| event_params->SetString(name, *value);
|
| return event_params;
|
| @@ -137,7 +138,7 @@ base::Value* NetLog::Entry::ToValue() const {
|
|
|
| // Set the event-specific parameters.
|
| if (data_->parameters_callback) {
|
| - base::Value* value = data_->parameters_callback->Run(log_level_);
|
| + base::Value* value = data_->parameters_callback->Run(capture_mode_);
|
| if (value)
|
| entry_dict->Set("params", value);
|
| }
|
| @@ -147,7 +148,7 @@ base::Value* NetLog::Entry::ToValue() const {
|
|
|
| base::Value* NetLog::Entry::ParametersToValue() const {
|
| if (data_->parameters_callback)
|
| - return data_->parameters_callback->Run(log_level_);
|
| + return data_->parameters_callback->Run(capture_mode_);
|
| return NULL;
|
| }
|
|
|
| @@ -166,15 +167,14 @@ NetLog::EntryData::EntryData(EventType type,
|
| NetLog::EntryData::~EntryData() {
|
| }
|
|
|
| -NetLog::Entry::Entry(const EntryData* data, LogLevel log_level)
|
| - : data_(data), log_level_(log_level) {
|
| +NetLog::Entry::Entry(const EntryData* data, NetLogCaptureMode capture_mode)
|
| + : data_(data), capture_mode_(capture_mode) {
|
| }
|
|
|
| NetLog::Entry::~Entry() {
|
| }
|
|
|
| -NetLog::ThreadSafeObserver::ThreadSafeObserver()
|
| - : log_level_(LOG_NONE), net_log_(NULL) {
|
| +NetLog::ThreadSafeObserver::ThreadSafeObserver() : net_log_(NULL) {
|
| }
|
|
|
| NetLog::ThreadSafeObserver::~ThreadSafeObserver() {
|
| @@ -184,9 +184,9 @@ NetLog::ThreadSafeObserver::~ThreadSafeObserver() {
|
| DCHECK(!net_log_);
|
| }
|
|
|
| -NetLog::LogLevel NetLog::ThreadSafeObserver::log_level() const {
|
| +NetLogCaptureMode NetLog::ThreadSafeObserver::capture_mode() const {
|
| DCHECK(net_log_);
|
| - return log_level_;
|
| + return capture_mode_;
|
| }
|
|
|
| NetLog* NetLog::ThreadSafeObserver::net_log() const {
|
| @@ -194,10 +194,13 @@ NetLog* NetLog::ThreadSafeObserver::net_log() const {
|
| }
|
|
|
| void NetLog::ThreadSafeObserver::OnAddEntryData(const EntryData& entry_data) {
|
| - OnAddEntry(Entry(&entry_data, log_level()));
|
| + OnAddEntry(Entry(&entry_data, capture_mode()));
|
| }
|
|
|
| -NetLog::NetLog() : last_id_(0), effective_log_level_(LOG_NONE) {
|
| +NetLog::NetLog()
|
| + : last_id_(0),
|
| + effective_capture_mode_int32_(
|
| + NetLogCaptureMode::None().ToInternalValue()) {
|
| }
|
|
|
| NetLog::~NetLog() {
|
| @@ -219,35 +222,36 @@ uint32 NetLog::NextID() {
|
| return base::subtle::NoBarrier_AtomicIncrement(&last_id_, 1);
|
| }
|
|
|
| -NetLog::LogLevel NetLog::GetLogLevel() const {
|
| - base::subtle::Atomic32 log_level =
|
| - base::subtle::NoBarrier_Load(&effective_log_level_);
|
| - return static_cast<net::NetLog::LogLevel>(log_level);
|
| +NetLogCaptureMode NetLog::GetCaptureMode() const {
|
| + base::subtle::Atomic32 capture_mode =
|
| + base::subtle::NoBarrier_Load(&effective_capture_mode_int32_);
|
| + return NetLogCaptureMode::FromInternalValue(capture_mode);
|
| }
|
|
|
| void NetLog::DeprecatedAddObserver(net::NetLog::ThreadSafeObserver* observer,
|
| - LogLevel log_level) {
|
| - DCHECK_NE(LOG_NONE, log_level);
|
| + NetLogCaptureMode capture_mode) {
|
| + DCHECK(capture_mode.enabled());
|
| +
|
| base::AutoLock lock(lock_);
|
|
|
| DCHECK(!observer->net_log_);
|
| - DCHECK_EQ(LOG_NONE, observer->log_level_);
|
| + DCHECK(!observer->capture_mode_.enabled());
|
| observers_.AddObserver(observer);
|
| observer->net_log_ = this;
|
| - observer->log_level_ = log_level;
|
| - UpdateLogLevel();
|
| + observer->capture_mode_ = capture_mode;
|
| + UpdateCaptureMode();
|
| }
|
|
|
| -void NetLog::SetObserverLogLevel(net::NetLog::ThreadSafeObserver* observer,
|
| - LogLevel log_level) {
|
| - DCHECK_NE(LOG_NONE, log_level);
|
| +void NetLog::SetObserverCaptureMode(net::NetLog::ThreadSafeObserver* observer,
|
| + NetLogCaptureMode capture_mode) {
|
| + DCHECK(capture_mode.enabled());
|
| base::AutoLock lock(lock_);
|
|
|
| DCHECK(observers_.HasObserver(observer));
|
| DCHECK_EQ(this, observer->net_log_);
|
| - DCHECK_NE(LOG_NONE, observer->log_level_);
|
| - observer->log_level_ = log_level;
|
| - UpdateLogLevel();
|
| + DCHECK(observer->capture_mode_.enabled());
|
| + observer->capture_mode_ = capture_mode;
|
| + UpdateCaptureMode();
|
| }
|
|
|
| void NetLog::DeprecatedRemoveObserver(
|
| @@ -256,26 +260,26 @@ void NetLog::DeprecatedRemoveObserver(
|
|
|
| DCHECK(observers_.HasObserver(observer));
|
| DCHECK_EQ(this, observer->net_log_);
|
| - DCHECK_NE(LOG_NONE, observer->log_level_);
|
| + DCHECK(observer->capture_mode_.enabled());
|
| observers_.RemoveObserver(observer);
|
| observer->net_log_ = NULL;
|
| - observer->log_level_ = LOG_NONE;
|
| - UpdateLogLevel();
|
| + observer->capture_mode_ = NetLogCaptureMode();
|
| + UpdateCaptureMode();
|
| }
|
|
|
| -void NetLog::UpdateLogLevel() {
|
| +void NetLog::UpdateCaptureMode() {
|
| lock_.AssertAcquired();
|
|
|
| - // Look through all the observers and find the finest granularity
|
| - // log level (higher values of the enum imply *lower* log levels).
|
| - LogLevel new_effective_log_level = LOG_NONE;
|
| + // Accumulate the capture mode of all the observers to find the maximum level.
|
| + NetLogCaptureMode new_capture_mode = NetLogCaptureMode::None();
|
| ObserverListBase<ThreadSafeObserver>::Iterator it(&observers_);
|
| ThreadSafeObserver* observer;
|
| while ((observer = it.GetNext()) != NULL) {
|
| - new_effective_log_level =
|
| - std::min(new_effective_log_level, observer->log_level());
|
| + new_capture_mode =
|
| + NetLogCaptureMode::Max(new_capture_mode, observer->capture_mode());
|
| }
|
| - base::subtle::NoBarrier_Store(&effective_log_level_, new_effective_log_level);
|
| + base::subtle::NoBarrier_Store(&effective_capture_mode_int32_,
|
| + new_capture_mode.ToInternalValue());
|
| }
|
|
|
| // static
|
| @@ -345,16 +349,6 @@ const char* NetLog::EventPhaseToString(EventPhase phase) {
|
| }
|
|
|
| // static
|
| -bool NetLog::IsLoggingBytes(LogLevel log_level) {
|
| - return log_level == NetLog::LOG_ALL;
|
| -}
|
| -
|
| -// static
|
| -bool NetLog::IsLogging(LogLevel log_level) {
|
| - return log_level < NetLog::LOG_NONE;
|
| -}
|
| -
|
| -// static
|
| NetLog::ParametersCallback NetLog::IntegerCallback(const char* name,
|
| int value) {
|
| return base::Bind(&NetLogIntegerCallback, name, value);
|
| @@ -384,7 +378,7 @@ void NetLog::AddEntry(EventType type,
|
| const Source& source,
|
| EventPhase phase,
|
| const NetLog::ParametersCallback* parameters_callback) {
|
| - if (GetLogLevel() == LOG_NONE)
|
| + if (!GetCaptureMode().enabled())
|
| return;
|
| EntryData entry_data(type, source, phase, base::TimeTicks::Now(),
|
| parameters_callback);
|
| @@ -474,20 +468,12 @@ void BoundNetLog::AddByteTransferEvent(NetLog::EventType event_type,
|
| AddEvent(event_type, base::Bind(BytesTransferredCallback, byte_count, bytes));
|
| }
|
|
|
| -NetLog::LogLevel BoundNetLog::GetLogLevel() const {
|
| +NetLogCaptureMode BoundNetLog::GetCaptureMode() const {
|
| CrashIfInvalid();
|
|
|
| if (net_log_)
|
| - return net_log_->GetLogLevel();
|
| - return NetLog::LOG_NONE;
|
| -}
|
| -
|
| -bool BoundNetLog::IsLoggingBytes() const {
|
| - return NetLog::IsLoggingBytes(GetLogLevel());
|
| -}
|
| -
|
| -bool BoundNetLog::IsLogging() const {
|
| - return NetLog::IsLogging(GetLogLevel());
|
| + return net_log_->GetCaptureMode();
|
| + return NetLogCaptureMode();
|
| }
|
|
|
| // static
|
|
|