| Index: chrome/browser/net/passive_log_collector.h | 
| =================================================================== | 
| --- chrome/browser/net/passive_log_collector.h	(revision 44225) | 
| +++ chrome/browser/net/passive_log_collector.h	(working copy) | 
| @@ -8,15 +8,41 @@ | 
| #include <vector> | 
|  | 
| #include "base/hash_tables.h" | 
| +#include "base/time.h" | 
| +#include "base/ref_counted.h" | 
| #include "chrome/browser/net/chrome_net_log.h" | 
| #include "net/base/net_log.h" | 
|  | 
| class PassiveLogCollector : public ChromeNetLog::Observer { | 
| 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(int order, | 
| +          net::NetLog::EventType type, | 
| +          const base::TimeTicks& time, | 
| +          net::NetLog::Source source, | 
| +          net::NetLog::EventPhase phase, | 
| +          net::NetLog::EventParameters* extra_parameters) | 
| +        : order(order), type(type), time(time), source(source), phase(phase), | 
| +          extra_parameters(extra_parameters) { | 
| +    } | 
| + | 
| +    int order; | 
| +    net::NetLog::EventType type; | 
| +    base::TimeTicks time; | 
| +    net::NetLog::Source source; | 
| +    net::NetLog::EventPhase phase; | 
| +    scoped_refptr<net::NetLog::EventParameters> extra_parameters; | 
| +  }; | 
| + | 
| +  typedef std::vector<Entry> EntryList; | 
| + | 
| struct RequestInfo { | 
| RequestInfo() : num_entries_truncated(0) {} | 
| std::string url; | 
| -    net::CapturingNetLog::EntryList entries; | 
| +    EntryList entries; | 
| size_t num_entries_truncated; | 
| }; | 
|  | 
| @@ -28,7 +54,7 @@ | 
| public: | 
| explicit RequestTrackerBase(size_t max_graveyard_size); | 
|  | 
| -    void OnAddEntry(const net::CapturingNetLog::Entry& entry); | 
| +    void OnAddEntry(const Entry& entry); | 
|  | 
| RequestInfoList GetLiveRequests() const; | 
| void ClearRecentlyDeceased(); | 
| @@ -39,6 +65,9 @@ | 
|  | 
| void Clear(); | 
|  | 
| +    // Appends all the captured entries to |out|. The ordering is undefined. | 
| +    void AppendAllEntries(EntryList* out) const; | 
| + | 
| const RequestInfo* GetRequestInfoFromGraveyard(int id) const; | 
|  | 
| protected: | 
| @@ -50,8 +79,7 @@ | 
|  | 
| // Updates |out_info| with the information from |entry|. Returns an action | 
| // to perform for this map entry on completion. | 
| -    virtual Action DoAddEntry(const net::CapturingNetLog::Entry& entry, | 
| -                              RequestInfo* out_info) = 0; | 
| +    virtual Action DoAddEntry(const Entry& entry, RequestInfo* out_info) = 0; | 
|  | 
| bool is_unbounded() const { return is_unbounded_; } | 
|  | 
| @@ -78,8 +106,7 @@ | 
| ConnectJobTracker(); | 
|  | 
| protected: | 
| -    virtual Action DoAddEntry(const net::CapturingNetLog::Entry& entry, | 
| -                              RequestInfo* out_info); | 
| +    virtual Action DoAddEntry(const Entry& entry, RequestInfo* out_info); | 
| private: | 
| DISALLOW_COPY_AND_ASSIGN(ConnectJobTracker); | 
| }; | 
| @@ -93,14 +120,12 @@ | 
| explicit RequestTracker(ConnectJobTracker* connect_job_tracker); | 
|  | 
| protected: | 
| -    virtual Action DoAddEntry(const net::CapturingNetLog::Entry& entry, | 
| -                              RequestInfo* out_info); | 
| +    virtual Action DoAddEntry(const Entry& entry, RequestInfo* out_info); | 
|  | 
| private: | 
| // Searches through |connect_job_tracker_| for information on the | 
| // ConnectJob specified in |entry|, and appends it to |live_entry|. | 
| -    void AddConnectJobInfo(const net::CapturingNetLog::Entry& entry, | 
| -                           RequestInfo* live_entry); | 
| +    void AddConnectJobInfo(const Entry& entry, RequestInfo* live_entry); | 
|  | 
| ConnectJobTracker* connect_job_tracker_; | 
|  | 
| @@ -112,14 +137,14 @@ | 
| public: | 
| InitProxyResolverTracker(); | 
|  | 
| -    void OnAddEntry(const net::CapturingNetLog::Entry& entry); | 
| +    void OnAddEntry(const Entry& entry); | 
|  | 
| -    const net::CapturingNetLog::EntryList& entries() const { | 
| +    const EntryList& entries() const { | 
| return entries_; | 
| } | 
|  | 
| private: | 
| -    net::CapturingNetLog::EntryList entries_; | 
| +    EntryList entries_; | 
| DISALLOW_COPY_AND_ASSIGN(InitProxyResolverTracker); | 
| }; | 
|  | 
| @@ -148,12 +173,20 @@ | 
| return &init_proxy_resolver_tracker_; | 
| } | 
|  | 
| +  // 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; | 
| + | 
| private: | 
| ConnectJobTracker connect_job_tracker_; | 
| RequestTracker url_request_tracker_; | 
| RequestTracker socket_stream_tracker_; | 
| InitProxyResolverTracker init_proxy_resolver_tracker_; | 
|  | 
| +  // The count of how many events have flowed through this log. Used to set the | 
| +  // "order" field on captured events. | 
| +  int num_events_seen_; | 
| + | 
| DISALLOW_COPY_AND_ASSIGN(PassiveLogCollector); | 
| }; | 
|  | 
|  |