Index: chrome/browser/net/passive_log_collector.h |
=================================================================== |
--- chrome/browser/net/passive_log_collector.h (revision 67848) |
+++ chrome/browser/net/passive_log_collector.h (working copy) |
@@ -32,29 +32,12 @@ |
// The data captured by PassiveLogCollector is grouped by NetLog::Source, into |
// a SourceInfo structure. These in turn are grouped by NetLog::SourceType, and |
// owned by a SourceTracker instance for the specific source type. |
-class PassiveLogCollector : public ChromeNetLog::Observer { |
+// |
+// The PassiveLogCollector is owned by the ChromeNetLog itself, and is not |
+// thread safe. The ChromeNetLog is responsible for calling it in a thread safe |
+// manner. |
+class PassiveLogCollector : public ChromeNetLog::ThreadSafeObserver { |
public: |
- // This structure encapsulates all of the parameters of a captured event, |
- // including an "order" field that identifies when it was captured relative |
- // to other events. |
- struct Entry { |
- Entry(uint32 order, |
- net::NetLog::EventType type, |
- const base::TimeTicks& time, |
- net::NetLog::Source source, |
- net::NetLog::EventPhase phase, |
- net::NetLog::EventParameters* params); |
- ~Entry(); |
- |
- uint32 order; |
- net::NetLog::EventType type; |
- base::TimeTicks time; |
- net::NetLog::Source source; |
- net::NetLog::EventPhase phase; |
- scoped_refptr<net::NetLog::EventParameters> params; |
- }; |
- |
- typedef std::vector<Entry> EntryList; |
typedef std::vector<net::NetLog::Source> SourceDependencyList; |
struct SourceInfo { |
@@ -67,7 +50,7 @@ |
std::string GetURL() const; |
uint32 source_id; |
- EntryList entries; |
+ ChromeNetLog::EntryList entries; |
size_t num_entries_truncated; |
// List of other sources which contain information relevant to this |
@@ -93,13 +76,13 @@ |
public: |
virtual ~SourceTrackerInterface() {} |
- virtual void OnAddEntry(const Entry& entry) = 0; |
+ virtual void OnAddEntry(const ChromeNetLog::Entry& entry) = 0; |
// Clears all the passively logged data from this tracker. |
virtual void Clear() = 0; |
// Appends all the captured entries to |out|. The ordering is undefined. |
- virtual void AppendAllEntries(EntryList* out) const = 0; |
+ virtual void AppendAllEntries(ChromeNetLog::EntryList* out) const = 0; |
}; |
// This source tracker is intended for TYPE_NONE. All entries go into a |
@@ -110,12 +93,12 @@ |
~GlobalSourceTracker(); |
// SourceTrackerInterface implementation: |
- virtual void OnAddEntry(const Entry& entry); |
+ virtual void OnAddEntry(const ChromeNetLog::Entry& entry); |
virtual void Clear(); |
- virtual void AppendAllEntries(EntryList* out) const; |
+ virtual void AppendAllEntries(ChromeNetLog::EntryList* out) const; |
private: |
- typedef std::deque<Entry> CircularEntryList; |
+ typedef std::deque<ChromeNetLog::Entry> CircularEntryList; |
CircularEntryList entries_; |
DISALLOW_COPY_AND_ASSIGN(GlobalSourceTracker); |
}; |
@@ -136,9 +119,9 @@ |
virtual ~SourceTracker(); |
// SourceTrackerInterface implementation: |
- virtual void OnAddEntry(const Entry& entry); |
+ virtual void OnAddEntry(const ChromeNetLog::Entry& entry); |
virtual void Clear(); |
- virtual void AppendAllEntries(EntryList* out) const; |
+ virtual void AppendAllEntries(ChromeNetLog::EntryList* out) const; |
#ifdef UNIT_TEST |
// Helper used to inspect the current state by unit-tests. |
@@ -172,7 +155,8 @@ |
// Updates |out_info| with the information from |entry|. Returns an action |
// to perform for this map entry on completion. |
- virtual Action DoAddEntry(const Entry& entry, SourceInfo* out_info) = 0; |
+ virtual Action DoAddEntry(const ChromeNetLog::Entry& entry, |
+ SourceInfo* out_info) = 0; |
// Removes |source_id| from |sources_|. This also releases any references |
// to dependencies held by this source. |
@@ -217,7 +201,8 @@ |
explicit ConnectJobTracker(PassiveLogCollector* parent); |
protected: |
- virtual Action DoAddEntry(const Entry& entry, SourceInfo* out_info); |
+ virtual Action DoAddEntry(const ChromeNetLog::Entry& entry, |
+ SourceInfo* out_info); |
private: |
DISALLOW_COPY_AND_ASSIGN(ConnectJobTracker); |
}; |
@@ -231,7 +216,8 @@ |
SocketTracker(); |
protected: |
- virtual Action DoAddEntry(const Entry& entry, SourceInfo* out_info); |
+ virtual Action DoAddEntry(const ChromeNetLog::Entry& entry, |
+ SourceInfo* out_info); |
private: |
DISALLOW_COPY_AND_ASSIGN(SocketTracker); |
@@ -246,7 +232,8 @@ |
explicit RequestTracker(PassiveLogCollector* parent); |
protected: |
- virtual Action DoAddEntry(const Entry& entry, SourceInfo* out_info); |
+ virtual Action DoAddEntry(const ChromeNetLog::Entry& entry, |
+ SourceInfo* out_info); |
private: |
DISALLOW_COPY_AND_ASSIGN(RequestTracker); |
@@ -262,7 +249,8 @@ |
InitProxyResolverTracker(); |
protected: |
- virtual Action DoAddEntry(const Entry& entry, SourceInfo* out_info); |
+ virtual Action DoAddEntry(const ChromeNetLog::Entry& entry, |
+ SourceInfo* out_info); |
private: |
DISALLOW_COPY_AND_ASSIGN(InitProxyResolverTracker); |
@@ -277,7 +265,8 @@ |
SpdySessionTracker(); |
protected: |
- virtual Action DoAddEntry(const Entry& entry, SourceInfo* out_info); |
+ virtual Action DoAddEntry(const ChromeNetLog::Entry& entry, |
+ SourceInfo* out_info); |
private: |
DISALLOW_COPY_AND_ASSIGN(SpdySessionTracker); |
@@ -292,7 +281,8 @@ |
DNSRequestTracker(); |
protected: |
- virtual Action DoAddEntry(const Entry& entry, SourceInfo* out_info); |
+ virtual Action DoAddEntry(const ChromeNetLog::Entry& entry, |
+ SourceInfo* out_info); |
private: |
DISALLOW_COPY_AND_ASSIGN(DNSRequestTracker); |
@@ -307,7 +297,8 @@ |
DNSJobTracker(); |
protected: |
- virtual Action DoAddEntry(const Entry& entry, SourceInfo* out_info); |
+ virtual Action DoAddEntry(const ChromeNetLog::Entry& entry, |
+ SourceInfo* out_info); |
private: |
DISALLOW_COPY_AND_ASSIGN(DNSJobTracker); |
@@ -316,25 +307,25 @@ |
PassiveLogCollector(); |
~PassiveLogCollector(); |
- // Observer implementation: |
+ // ThreadSafeObserver implementation: |
virtual void OnAddEntry(net::NetLog::EventType type, |
const base::TimeTicks& time, |
const net::NetLog::Source& source, |
net::NetLog::EventPhase phase, |
net::NetLog::EventParameters* params); |
- // Returns the tracker to use for sources of type |source_type|, or NULL. |
- SourceTrackerInterface* GetTrackerForSourceType( |
- net::NetLog::SourceType source_type); |
- |
// Clears all of the passively logged data. |
void Clear(); |
// Fills |out| with the full list of events that have been passively |
// captured. The list is ordered by capture time. |
- void GetAllCapturedEvents(EntryList* out) const; |
+ void GetAllCapturedEvents(ChromeNetLog::EntryList* out) const; |
private: |
+ // Returns the tracker to use for sources of type |source_type|, or NULL. |
+ SourceTrackerInterface* GetTrackerForSourceType_( |
+ net::NetLog::SourceType source_type); |
+ |
FRIEND_TEST_ALL_PREFIXES(PassiveLogCollectorTest, |
HoldReferenceToDependentSource); |
FRIEND_TEST_ALL_PREFIXES(PassiveLogCollectorTest, |