Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(352)

Unified Diff: net/log/net_log_entry.h

Issue 2333923004: Extracting NetLog inner classes into their own classes. (Closed)
Patch Set: Some nit fixes and better, impl-agnostic naming of net_log_parameters_callback_typedef.h -> net/log… Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/log/net_log_entry.h
diff --git a/net/log/net_log_entry.h b/net/log/net_log_entry.h
new file mode 100644
index 0000000000000000000000000000000000000000..4812704185bcd939f2c8d5671ff34117c97c4a70
--- /dev/null
+++ b/net/log/net_log_entry.h
@@ -0,0 +1,73 @@
+// Copyright 2016 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_NET_LOG_ENTRY_H_
+#define NET_LOG_NET_LOG_ENTRY_H_
+
+#include <memory>
+
+#include "base/macros.h"
+#include "base/time/time.h"
+#include "net/base/net_export.h"
+#include "net/log/net_log_capture_mode.h"
+#include "net/log/net_log_event_type.h"
+#include "net/log/net_log_parameters_callback.h"
+#include "net/log/net_log_source.h"
+
+namespace base {
+class Value;
+}
+
+namespace net {
+
+struct NET_EXPORT NetLogEntryData {
+ NetLogEntryData(NetLogEventType type,
+ NetLogSource source,
+ NetLogEventPhase phase,
+ base::TimeTicks time,
+ const NetLogParametersCallback* parameters_callback);
+ ~NetLogEntryData();
+
+ const NetLogEventType type;
+ const NetLogSource source;
+ const NetLogEventPhase phase;
+ const base::TimeTicks time;
+ const NetLogParametersCallback* const parameters_callback;
+};
+
+// A NetLogEntry pre-binds NetLogEntryData to a capture mode, so observers will
+// observe the output of ToValue() and ParametersToValue() at their log
+// capture mode rather than the current maximum.
+class NET_EXPORT NetLogEntry {
+ public:
+ NetLogEntry(const NetLogEntryData* data, NetLogCaptureMode capture_mode);
+ ~NetLogEntry();
+
+ NetLogEventType type() const { return data_->type; }
+ NetLogSource source() const { return data_->source; }
+ NetLogEventPhase phase() const { return data_->phase; }
+
+ // Serializes the specified event to a Value. The Value also includes the
+ // current time. Takes in a time to allow back-dating entries.
+ std::unique_ptr<base::Value> ToValue() const;
+
+ // Returns the parameters as a Value. Returns nullptr if there are no
+ // parameters.
+ std::unique_ptr<base::Value> ParametersToValue() const;
+
+ private:
+ const NetLogEntryData* const data_;
+
+ // Log capture mode when the event occurred.
+ const NetLogCaptureMode capture_mode_;
+
+ // It is not safe to copy this class, since |parameters_callback_| may
+ // include pointers that become stale immediately after the event is added,
+ // even if the code were modified to keep its own copy of the callback.
+ DISALLOW_COPY_AND_ASSIGN(NetLogEntry);
+};
+
+} // namespace net
+
+#endif // NET_LOG_NET_LOG_ENTRY_H_

Powered by Google App Engine
This is Rietveld 408576698