capturing_net_log.cc revision 731df977c0511bca2206b5f333555b1205ff1f43
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)
21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    : next_id_(0), max_num_entries_(max_num_entries) {
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
24731df977c0511bca2206b5f333555b1205ff1f43Iain MerrickCapturingNetLog::~CapturingNetLog() {}
25731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid CapturingNetLog::AddEntry(EventType type,
27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                               const base::TimeTicks& time,
28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                               const Source& source,
29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                               EventPhase phase,
30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                               EventParameters* extra_parameters) {
31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  Entry entry(type, time, source, phase, extra_parameters);
32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  if (entries_.size() + 1 < max_num_entries_)
33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    entries_.push_back(entry);
34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochuint32 CapturingNetLog::NextID() {
37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  return next_id_++;
38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid CapturingNetLog::Clear() {
41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  entries_.clear();
42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
44731df977c0511bca2206b5f333555b1205ff1f43Iain MerrickCapturingBoundNetLog::CapturingBoundNetLog(const NetLog::Source& source,
45731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick                                           CapturingNetLog* net_log)
46731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    : source_(source), capturing_net_log_(net_log) {
47731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick}
48731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
49731df977c0511bca2206b5f333555b1205ff1f43Iain MerrickCapturingBoundNetLog::CapturingBoundNetLog(size_t max_num_entries)
50731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    : capturing_net_log_(new CapturingNetLog(max_num_entries)) {}
51731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
52731df977c0511bca2206b5f333555b1205ff1f43Iain MerrickCapturingBoundNetLog::~CapturingBoundNetLog() {}
53731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid CapturingBoundNetLog::Clear() {
55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  capturing_net_log_->Clear();
56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid CapturingBoundNetLog::AppendTo(const BoundNetLog& net_log) const {
59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  for (size_t i = 0; i < entries().size(); ++i) {
60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    const CapturingNetLog::Entry& entry = entries()[i];
61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    net_log.AddEntryWithTime(entry.type, entry.time, entry.phase,
62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                             entry.extra_parameters);
63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}  // namespace net
67