| // 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_LOG_TEST_NET_LOG_H_ |
| #define NET_LOG_TEST_NET_LOG_H_ |
| |
| #include <string> |
| #include <vector> |
| |
| #include "base/compiler_specific.h" |
| #include "base/macros.h" |
| #include "net/log/net_log.h" |
| #include "net/log/net_log_with_source.h" |
| #include "net/log/test_net_log_entry.h" |
| #include "starboard/types.h" |
| |
| namespace net { |
| |
| class NetLogCaptureMode; |
| struct NetLogSource; |
| |
| // TestNetLog is NetLog subclass which records all NetLog events that occur and |
| // their parameters. It is intended for testing only, and is part of the |
| // net_test_support project. |
| class TestNetLog : public NetLog { |
| public: |
| TestNetLog(); |
| ~TestNetLog() override; |
| |
| void SetCaptureMode(NetLogCaptureMode capture_mode); |
| |
| // Below methods are forwarded to test_net_log_observer_. |
| void GetEntries(TestNetLogEntry::List* entry_list) const; |
| void GetEntriesForSource(NetLogSource source, |
| TestNetLogEntry::List* entry_list) const; |
| size_t GetSize() const; |
| void Clear(); |
| |
| // Returns a NetLog observer that will write entries to the TestNetLog's event |
| // store. For testing code that bypasses NetLogs and adds events directly to |
| // an observer. |
| NetLog::ThreadSafeObserver* GetObserver() const; |
| |
| private: |
| // The underlying observer class that does all the work. |
| class Observer; |
| |
| std::unique_ptr<Observer> observer_; |
| |
| DISALLOW_COPY_AND_ASSIGN(TestNetLog); |
| }; |
| |
| // Helper class that exposes a similar API as NetLogWithSource, but uses a |
| // TestNetLog rather than the more generic NetLog. |
| // |
| // A BoundTestNetLog can easily be converted to a NetLogWithSource using the |
| // bound() method. |
| class BoundTestNetLog { |
| public: |
| BoundTestNetLog(); |
| ~BoundTestNetLog(); |
| |
| // The returned NetLogWithSource is only valid while |this| is alive. |
| NetLogWithSource bound() const { return net_log_; } |
| |
| // Fills |entry_list| with all entries in the log. |
| void GetEntries(TestNetLogEntry::List* entry_list) const; |
| |
| // Fills |entry_list| with all entries in the log from the specified Source. |
| void GetEntriesForSource(NetLogSource source, |
| TestNetLogEntry::List* entry_list) const; |
| |
| // Returns number of entries in the log. |
| size_t GetSize() const; |
| |
| void Clear(); |
| |
| // Sets the capture mode of the underlying TestNetLog. |
| void SetCaptureMode(NetLogCaptureMode capture_mode); |
| |
| private: |
| TestNetLog test_net_log_; |
| const NetLogWithSource net_log_; |
| |
| DISALLOW_COPY_AND_ASSIGN(BoundTestNetLog); |
| }; |
| |
| } // namespace net |
| |
| #endif // NET_LOG_TEST_NET_LOG_H_ |