// Copyright (c) 2012 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_BASE_CAPTURING_NET_LOG_H_ #define NET_BASE_CAPTURING_NET_LOG_H_ #include #include #include "base/basictypes.h" #include "base/compiler_specific.h" #include "net/base/captured_net_log_entry.h" #include "net/base/capturing_net_log_observer.h" #include "net/base/net_log.h" namespace net { // CapturingNetLog is convenience class which combines a NetLog and a // CapturingNetLogObserver. It is intended for testing only, and is part of the // net_test_support project. class CapturingNetLog : public NetLog { public: // TODO(mmenke): Get rid of these. typedef CapturedNetLogEntry CapturedEntry; typedef CapturedNetLogEntry::List CapturedEntryList; CapturingNetLog(); ~CapturingNetLog() override; void SetLogLevel(LogLevel log_level); // Below methods are forwarded to capturing_net_log_observer_. void GetEntries(CapturedEntryList* entry_list) const; void GetEntriesForSource(Source source, CapturedEntryList* entry_list) const; size_t GetSize() const; void Clear(); private: CapturingNetLogObserver capturing_net_log_observer_; DISALLOW_COPY_AND_ASSIGN(CapturingNetLog); }; // Helper class that exposes a similar API as BoundNetLog, but uses a // CapturingNetLog rather than the more generic NetLog. // // A CapturingBoundNetLog can easily be converted to a BoundNetLog using the // bound() method. class CapturingBoundNetLog { public: CapturingBoundNetLog(); ~CapturingBoundNetLog(); // The returned BoundNetLog is only valid while |this| is alive. BoundNetLog bound() const { return net_log_; } // Fills |entry_list| with all entries in the log. void GetEntries(CapturingNetLog::CapturedEntryList* entry_list) const; // Fills |entry_list| with all entries in the log from the specified Source. void GetEntriesForSource( NetLog::Source source, CapturingNetLog::CapturedEntryList* entry_list) const; // Returns number of entries in the log. size_t GetSize() const; void Clear(); // Sets the log level of the underlying CapturingNetLog. void SetLogLevel(NetLog::LogLevel log_level); private: CapturingNetLog capturing_net_log_; const BoundNetLog net_log_; DISALLOW_COPY_AND_ASSIGN(CapturingBoundNetLog); }; } // namespace net #endif // NET_BASE_CAPTURING_NET_LOG_H_