1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "net/base/capturing_net_log.h" 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace net { 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 9731df977c0511bca2206b5f333555b1205ff1f43Iain MerrickCapturingNetLog::Entry::Entry(EventType type, 10731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick const base::TimeTicks& time, 11731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick Source source, 12731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick EventPhase phase, 13731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick EventParameters* extra_parameters) 14731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick : type(type), time(time), source(source), phase(phase), 15731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick extra_parameters(extra_parameters) { 16731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick} 17731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 18731df977c0511bca2206b5f333555b1205ff1f43Iain MerrickCapturingNetLog::Entry::~Entry() {} 19731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochCapturingNetLog::CapturingNetLog(size_t max_num_entries) 213f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen : last_id_(-1), 223f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen max_num_entries_(max_num_entries), 233f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen log_level_(LOG_ALL_BUT_BYTES) { 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 26731df977c0511bca2206b5f333555b1205ff1f43Iain MerrickCapturingNetLog::~CapturingNetLog() {} 27731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 2872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenvoid CapturingNetLog::GetEntries(EntryList* entry_list) const { 2972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen base::AutoLock lock(lock_); 3072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen *entry_list = entries_; 3172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen} 3272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 3372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenvoid CapturingNetLog::Clear() { 3472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen base::AutoLock lock(lock_); 3572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen entries_.clear(); 3672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen} 3772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 3872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenvoid CapturingNetLog::SetLogLevel(NetLog::LogLevel log_level) { 3972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen base::AutoLock lock(lock_); 4072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen log_level_ = log_level; 4172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen} 4272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid CapturingNetLog::AddEntry(EventType type, 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const base::TimeTicks& time, 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const Source& source, 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EventPhase phase, 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EventParameters* extra_parameters) { 4872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen base::AutoLock lock(lock_); 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Entry entry(type, time, source, phase, extra_parameters); 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (entries_.size() + 1 < max_num_entries_) 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch entries_.push_back(entry); 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochuint32 CapturingNetLog::NextID() { 5521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen return base::subtle::NoBarrier_AtomicIncrement(&last_id_, 1); 5621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen} 5721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 5821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian MonsenNetLog::LogLevel CapturingNetLog::GetLogLevel() const { 5972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen base::AutoLock lock(lock_); 603f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen return log_level_; 6121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen} 6221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 63731df977c0511bca2206b5f333555b1205ff1f43Iain MerrickCapturingBoundNetLog::CapturingBoundNetLog(const NetLog::Source& source, 64731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick CapturingNetLog* net_log) 65731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick : source_(source), capturing_net_log_(net_log) { 66731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick} 67731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 68731df977c0511bca2206b5f333555b1205ff1f43Iain MerrickCapturingBoundNetLog::CapturingBoundNetLog(size_t max_num_entries) 69731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick : capturing_net_log_(new CapturingNetLog(max_num_entries)) {} 70731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 71731df977c0511bca2206b5f333555b1205ff1f43Iain MerrickCapturingBoundNetLog::~CapturingBoundNetLog() {} 72731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 7321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenvoid CapturingBoundNetLog::GetEntries( 7421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen CapturingNetLog::EntryList* entry_list) const { 7521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen capturing_net_log_->GetEntries(entry_list); 76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 77c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 7821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenvoid CapturingBoundNetLog::Clear() { 7921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen capturing_net_log_->Clear(); 80c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 81c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 823f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsenvoid CapturingBoundNetLog::SetLogLevel(NetLog::LogLevel log_level) { 833f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen capturing_net_log_->SetLogLevel(log_level); 843f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen} 853f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 86c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} // namespace net 87