#ifndef NET_LOG_TEST_NET_LOG_H_
#define NET_LOG_TEST_NET_LOG_H_
#include <stddef.h>
#include <string>
#include <vector>
#include "base/compiler_specific.h"
#include "base/functional/callback.h"
#include "base/memory/raw_ptr.h"
#include "net/log/net_log.h"
#include "net/log/net_log_event_type.h"
namespace net {
struct NetLogSource;
class RecordingNetLogObserver : public NetLog::ThreadSafeObserver {
public:
RecordingNetLogObserver();
explicit RecordingNetLogObserver(NetLogCaptureMode capture_mode);
RecordingNetLogObserver(NetLog* net_log, NetLogCaptureMode capture_mode);
RecordingNetLogObserver(const RecordingNetLogObserver&) = delete;
RecordingNetLogObserver& operator=(const RecordingNetLogObserver&) = delete;
~RecordingNetLogObserver() override;
void SetObserverCaptureMode(NetLogCaptureMode capture_mode);
void SetThreadsafeAddEntryCallback(base::RepeatingClosure add_entry_callback);
void OnAddEntry(const NetLogEntry& entry) override;
std::vector<NetLogEntry> GetEntries() const;
std::vector<NetLogEntry> GetEntriesForSource(NetLogSource source) const;
std::vector<NetLogEntry> GetEntriesWithType(NetLogEventType type) const;
std::vector<NetLogEntry> GetEntriesForSourceWithType(
NetLogSource source,
NetLogEventType type,
NetLogEventPhase phase) const;
size_t GetSize() const;
void Clear();
std::string GetJson() const;
private:
mutable base::Lock lock_;
std::vector<NetLogEntry> entry_list_;
const raw_ptr<NetLog> net_log_;
base::RepeatingClosure add_entry_callback_;
};
}
#endif