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

Unified Diff: chrome/browser/net/passive_log_collector.h

Issue 1696005: Add net log entries that summarize transmit and receive byte counts. (Closed)
Patch Set: More tests and address comments Created 10 years, 8 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
« no previous file with comments | « chrome/browser/net/chrome_net_log.cc ('k') | chrome/browser/net/passive_log_collector.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/net/passive_log_collector.h
diff --git a/chrome/browser/net/passive_log_collector.h b/chrome/browser/net/passive_log_collector.h
index df9688ae3d99eca1ca1464bd48199ea0eebcd3f8..55b7279a07956f67ca86d350d206c8560bc6dc40 100644
--- a/chrome/browser/net/passive_log_collector.h
+++ b/chrome/browser/net/passive_log_collector.h
@@ -12,6 +12,7 @@
#include "base/time.h"
#include "chrome/browser/net/chrome_net_log.h"
#include "net/base/net_log.h"
+#include "testing/gtest/include/gtest/gtest_prod.h"
class PassiveLogCollector : public ChromeNetLog::Observer {
public:
@@ -19,7 +20,7 @@ class PassiveLogCollector : public ChromeNetLog::Observer {
// including an "order" field that identifies when it was captured relative
// to other events.
struct Entry {
- Entry(int order,
+ Entry(uint32 order,
net::NetLog::EventType type,
const base::TimeTicks& time,
net::NetLog::Source source,
@@ -29,7 +30,7 @@ class PassiveLogCollector : public ChromeNetLog::Observer {
extra_parameters(extra_parameters) {
}
- int order;
+ uint32 order;
net::NetLog::EventType type;
base::TimeTicks time;
net::NetLog::Source source;
@@ -40,10 +41,29 @@ class PassiveLogCollector : public ChromeNetLog::Observer {
typedef std::vector<Entry> EntryList;
struct RequestInfo {
- RequestInfo() : num_entries_truncated(0) {}
- std::string url;
+ RequestInfo()
+ : source_id(net::NetLog::Source::kInvalidId),
+ num_entries_truncated(0),
+ total_bytes_transmitted(0),
+ total_bytes_received(0),
+ bytes_transmitted(0),
+ bytes_received(0),
+ last_tx_rx_position(0) {}
+ uint32 source_id;
EntryList entries;
size_t num_entries_truncated;
+ net::NetLog::Source subordinate_source;
+
+ // Only used in RequestTracker.
+ std::string url;
+
+ // Only used in SocketTracker.
+ uint64 total_bytes_transmitted;
+ uint64 total_bytes_received;
+ uint64 bytes_transmitted;
+ uint64 bytes_received;
+ uint32 last_tx_rx_position; // The |order| of the last Tx or Rx entry.
+ base::TimeTicks last_tx_rx_time; // The |time| of the last Tx or Rx entry.
};
typedef std::vector<RequestInfo> RequestInfoList;
@@ -61,15 +81,13 @@ class PassiveLogCollector : public ChromeNetLog::Observer {
RequestInfoList GetRecentlyDeceased() const;
void SetUnbounded(bool unbounded);
- bool IsUnbounded() const { return is_unbounded_; }
+ bool is_unbounded() const { return is_unbounded_; }
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:
enum Action {
ACTION_NONE,
@@ -81,12 +99,19 @@ class PassiveLogCollector : public ChromeNetLog::Observer {
// to perform for this map entry on completion.
virtual Action DoAddEntry(const Entry& entry, RequestInfo* out_info) = 0;
- bool is_unbounded() const { return is_unbounded_; }
+ // Finds a request, either in the live entries or the graveyard and returns
+ // it.
+ RequestInfo* GetRequestInfo(uint32 id);
+
+ // When GetLiveRequests() is called, RequestTrackerBase calls this method
+ // for each entry after adding it to the list which will be returned
+ // to the caller.
+ virtual void OnLiveRequest(RequestInfo* info) const {}
private:
- typedef base::hash_map<int, RequestInfo> SourceIDToInfoMap;
+ typedef base::hash_map<uint32, RequestInfo> SourceIDToInfoMap;
- void RemoveFromLiveRequests(int source_id);
+ void RemoveFromLiveRequests(uint32 source_id);
void InsertIntoGraveyard(const RequestInfo& info);
SourceIDToInfoMap live_requests_;
@@ -105,29 +130,56 @@ class PassiveLogCollector : public ChromeNetLog::Observer {
ConnectJobTracker();
+ void AppendLogEntries(RequestInfo* out_info, bool unbounded,
+ uint32 connect_id);
+
protected:
virtual Action DoAddEntry(const Entry& entry, RequestInfo* out_info);
private:
DISALLOW_COPY_AND_ASSIGN(ConnectJobTracker);
};
+ // Specialization of RequestTrackerBase for handling Sockets.
+ class SocketTracker : public RequestTrackerBase {
+ public:
+ static const size_t kMaxGraveyardSize;
+
+ SocketTracker();
+
+ void AppendLogEntries(RequestInfo* out_info, bool unbounded,
+ uint32 socket_id, bool clear);
+
+ protected:
+ virtual Action DoAddEntry(const Entry& entry, RequestInfo* out_info);
+
+ private:
+ void ClearInfo(RequestInfo* info);
+
+ DISALLOW_COPY_AND_ASSIGN(SocketTracker);
+ };
+
// Specialization of RequestTrackerBase for handling URLRequest/SocketStream.
class RequestTracker : public RequestTrackerBase {
public:
static const size_t kMaxGraveyardSize;
static const size_t kMaxGraveyardURLSize;
- explicit RequestTracker(ConnectJobTracker* connect_job_tracker);
+ RequestTracker(ConnectJobTracker* connect_job_tracker,
+ SocketTracker* socket_tracker);
+
+ void IntegrateSubordinateSource(RequestInfo* info,
+ bool clear_entries) const;
protected:
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 Entry& entry, RequestInfo* live_entry);
+ virtual void OnLiveRequest(RequestInfo* info) const {
+ IntegrateSubordinateSource(info, false);
+ }
+ private:
ConnectJobTracker* connect_job_tracker_;
+ SocketTracker* socket_tracker_;
DISALLOW_COPY_AND_ASSIGN(RequestTracker);
};
@@ -178,14 +230,18 @@ class PassiveLogCollector : public ChromeNetLog::Observer {
void GetAllCapturedEvents(EntryList* out) const;
private:
+ FRIEND_TEST(PassiveLogCollectorTest, LostConnectJob);
+ FRIEND_TEST(PassiveLogCollectorTest, LostSocket);
+
ConnectJobTracker connect_job_tracker_;
+ SocketTracker socket_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_;
+ uint32 num_events_seen_;
DISALLOW_COPY_AND_ASSIGN(PassiveLogCollector);
};
« no previous file with comments | « chrome/browser/net/chrome_net_log.cc ('k') | chrome/browser/net/passive_log_collector.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698