summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authormmenke@chromium.org <mmenke@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-01-06 17:26:13 +0000
committermmenke@chromium.org <mmenke@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-01-06 17:26:13 +0000
commitd60c79650e1be14bb75b25362b2eadd0c76b48ba (patch)
tree13c7de9cd16935bd495a963ae04df2778d12fa04 /chrome
parentc0918c5df71848044da5e6268270fe2d640ab0bc (diff)
downloadchromium_src-d60c79650e1be14bb75b25362b2eadd0c76b48ba.zip
chromium_src-d60c79650e1be14bb75b25362b2eadd0c76b48ba.tar.gz
chromium_src-d60c79650e1be14bb75b25362b2eadd0c76b48ba.tar.bz2
First pass at adding http/backend cache events to the NetLog.
Adds sources and events for ActiveCacheEntry and EntryImpl objects, as well as adding cache read/write events to HttpCacheTransactions. Most new read/write events are only logged when NetLog logging mode is set to log all events. Also, net-internals now merges begin and end events that have parameters, as long as only one of them has parameters. I think this increases readability, at the cost of making it a little more difficult to follow timings with just the "st" values. BUG=59382 TEST=none yet, other than updates to existing tests. Review URL: http://codereview.chromium.org/4067002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@70618 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/net/connection_tester.cc1
-rw-r--r--chrome/browser/net/passive_log_collector.cc26
-rw-r--r--chrome/browser/net/passive_log_collector.h17
-rw-r--r--chrome/browser/resources/net_internals/logviewpainter.js75
-rw-r--r--chrome/browser/resources/net_internals/main.css4
-rw-r--r--chrome/browser/resources/net_internals/sourceentry.js3
-rw-r--r--chrome/service/net/service_url_request_context.cc1
-rw-r--r--chrome/test/plugin/plugin_test.cpp1
8 files changed, 90 insertions, 38 deletions
diff --git a/chrome/browser/net/connection_tester.cc b/chrome/browser/net/connection_tester.cc
index 18960eb..f23d619 100644
--- a/chrome/browser/net/connection_tester.cc
+++ b/chrome/browser/net/connection_tester.cc
@@ -71,6 +71,7 @@ class ExperimentURLRequestContext : public URLRequestContext {
dnsrr_resolver_, NULL /* dns_cert_checker */,
NULL /* ssl_host_info_factory */, proxy_service_,
ssl_config_service_, http_auth_handler_factory_, NULL, NULL),
+ NULL /* net_log */,
net::HttpCache::DefaultBackend::InMemory(0));
// In-memory cookie store.
cookie_store_ = new net::CookieMonster(NULL, NULL);
diff --git a/chrome/browser/net/passive_log_collector.cc b/chrome/browser/net/passive_log_collector.cc
index 0d41479..21e2935 100644
--- a/chrome/browser/net/passive_log_collector.cc
+++ b/chrome/browser/net/passive_log_collector.cc
@@ -70,6 +70,7 @@ PassiveLogCollector::PassiveLogCollector()
trackers_[net::NetLog::SOURCE_HOST_RESOLVER_IMPL_REQUEST] =
&dns_request_tracker_;
trackers_[net::NetLog::SOURCE_HOST_RESOLVER_IMPL_JOB] = &dns_job_tracker_;
+ trackers_[net::NetLog::SOURCE_DISK_CACHE_ENTRY] = &disk_cache_entry_tracker_;
// Make sure our mapping is up-to-date.
for (size_t i = 0; i < arraysize(trackers_); ++i)
DCHECK(trackers_[i]) << "Unhandled SourceType: " << i;
@@ -560,3 +561,28 @@ PassiveLogCollector::DNSJobTracker::DoAddEntry(const ChromeNetLog::Entry& entry,
return ACTION_NONE;
}
}
+
+//----------------------------------------------------------------------------
+// DiskCacheEntryTracker
+//----------------------------------------------------------------------------
+
+const size_t PassiveLogCollector::DiskCacheEntryTracker::kMaxNumSources = 100;
+const size_t PassiveLogCollector::DiskCacheEntryTracker::kMaxGraveyardSize = 25;
+
+PassiveLogCollector::DiskCacheEntryTracker::DiskCacheEntryTracker()
+ : SourceTracker(kMaxNumSources, kMaxGraveyardSize, NULL) {
+}
+
+PassiveLogCollector::SourceTracker::Action
+PassiveLogCollector::DiskCacheEntryTracker::DoAddEntry(
+ const ChromeNetLog::Entry& entry, SourceInfo* out_info) {
+ AddEntryToSourceInfo(entry, out_info);
+
+ // If the request has ended, move it to the graveyard.
+ if (entry.type == net::NetLog::TYPE_DISK_CACHE_ENTRY &&
+ entry.phase == net::NetLog::PHASE_END) {
+ return ACTION_MOVE_TO_GRAVEYARD;
+ }
+
+ return ACTION_NONE;
+}
diff --git a/chrome/browser/net/passive_log_collector.h b/chrome/browser/net/passive_log_collector.h
index 114e439..a415d59 100644
--- a/chrome/browser/net/passive_log_collector.h
+++ b/chrome/browser/net/passive_log_collector.h
@@ -304,6 +304,22 @@ class PassiveLogCollector : public ChromeNetLog::ThreadSafeObserver {
DISALLOW_COPY_AND_ASSIGN(DNSJobTracker);
};
+ // Tracks the log entries for the last seen SOURCE_DISK_CACHE_ENTRY.
+ class DiskCacheEntryTracker : public SourceTracker {
+ public:
+ static const size_t kMaxNumSources;
+ static const size_t kMaxGraveyardSize;
+
+ DiskCacheEntryTracker();
+
+ protected:
+ virtual Action DoAddEntry(const ChromeNetLog::Entry& entry,
+ SourceInfo* out_info);
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(DiskCacheEntryTracker);
+ };
+
PassiveLogCollector();
~PassiveLogCollector();
@@ -340,6 +356,7 @@ class PassiveLogCollector : public ChromeNetLog::ThreadSafeObserver {
SpdySessionTracker spdy_session_tracker_;
DNSRequestTracker dns_request_tracker_;
DNSJobTracker dns_job_tracker_;
+ DiskCacheEntryTracker disk_cache_entry_tracker_;
// This array maps each NetLog::SourceType to one of the tracker instances
// defined above. Use of this array avoid duplicating the list of trackers
diff --git a/chrome/browser/resources/net_internals/logviewpainter.js b/chrome/browser/resources/net_internals/logviewpainter.js
index 82686c6..28df383 100644
--- a/chrome/browser/resources/net_internals/logviewpainter.js
+++ b/chrome/browser/resources/net_internals/logviewpainter.js
@@ -49,10 +49,9 @@ function addSourceEntry_(node, sourceEntry) {
function canCollapseBeginWithEnd(beginEntry) {
return beginEntry &&
beginEntry.isBegin() &&
- !beginEntry.orig.params &&
beginEntry.end &&
beginEntry.end.index == beginEntry.index + 1 &&
- !beginEntry.end.orig.params &&
+ (!beginEntry.orig.params || !beginEntry.end.orig.params) &&
beginEntry.orig.wasPassivelyCaptured ==
beginEntry.end.orig.wasPassivelyCaptured;
}
@@ -70,43 +69,43 @@ PrintSourceEntriesAsText = function(sourceEntries, doSecurityStripping) {
for (var i = 0; i < entries.length; ++i) {
var entry = entries[i];
- // Avoid printing the END for a BEGIN that was immediately before.
- if (entry.isEnd() && canCollapseBeginWithEnd(entry.begin))
- continue;
-
- tablePrinter.addRow();
-
- // Annotate this entry with "(P)" if it was passively captured.
- tablePrinter.addCell(entry.orig.wasPassivelyCaptured ? '(P) ' : '');
-
- tablePrinter.addCell('t=');
- var date = g_browser.convertTimeTicksToDate(entry.orig.time) ;
- var tCell = tablePrinter.addCell(date.getTime());
- tCell.alignRight = true;
- tablePrinter.addCell(' [st=');
- var stCell = tablePrinter.addCell(date.getTime() - startTime);
- stCell.alignRight = true;
- tablePrinter.addCell('] ');
-
- var indentationStr = makeRepeatedString(' ', entry.getDepth() * 3);
- var mainCell =
- tablePrinter.addCell(indentationStr + getTextForEvent(entry));
- tablePrinter.addCell(' ');
-
- // Get the elapsed time.
- if (entry.isBegin()) {
- tablePrinter.addCell('[dt=');
- var dt = '?';
- // Definite time.
- if (entry.end) {
- dt = entry.end.orig.time - entry.orig.time;
- }
- var dtCell = tablePrinter.addCell(dt);
- dtCell.alignRight = true;
+ // Avoid printing the END for a BEGIN that was immediately before, unless
+ // both have extra parameters.
+ if (!entry.isEnd() || !canCollapseBeginWithEnd(entry.begin)) {
+ tablePrinter.addRow();
+
+ // Annotate this entry with "(P)" if it was passively captured.
+ tablePrinter.addCell(entry.orig.wasPassivelyCaptured ? '(P) ' : '');
+
+ tablePrinter.addCell('t=');
+ var date = g_browser.convertTimeTicksToDate(entry.orig.time) ;
+ var tCell = tablePrinter.addCell(date.getTime());
+ tCell.alignRight = true;
+ tablePrinter.addCell(' [st=');
+ var stCell = tablePrinter.addCell(date.getTime() - startTime);
+ stCell.alignRight = true;
+ tablePrinter.addCell('] ');
+
+ var indentationStr = makeRepeatedString(' ', entry.getDepth() * 3);
+ var mainCell =
+ tablePrinter.addCell(indentationStr + getTextForEvent(entry));
+ tablePrinter.addCell(' ');
+
+ // Get the elapsed time.
+ if (entry.isBegin()) {
+ tablePrinter.addCell('[dt=');
+ var dt = '?';
+ // Definite time.
+ if (entry.end) {
+ dt = entry.end.orig.time - entry.orig.time;
+ }
+ var dtCell = tablePrinter.addCell(dt);
+ dtCell.alignRight = true;
- tablePrinter.addCell(']');
- } else {
- mainCell.allowOverflow = true;
+ tablePrinter.addCell(']');
+ } else {
+ mainCell.allowOverflow = true;
+ }
}
// Output the extra parameters.
diff --git a/chrome/browser/resources/net_internals/main.css b/chrome/browser/resources/net_internals/main.css
index be3abee..8c6982c 100644
--- a/chrome/browser/resources/net_internals/main.css
+++ b/chrome/browser/resources/net_internals/main.css
@@ -92,6 +92,10 @@ body {
color: #308080;
}
+#eventsListTableBody .source_DISK_CACHE_ENTRY {
+ color: gray;
+}
+
#eventsListTableBody .source_SOCKET {
color: purple;
}
diff --git a/chrome/browser/resources/net_internals/sourceentry.js b/chrome/browser/resources/net_internals/sourceentry.js
index 4a4df6e..6c02c03 100644
--- a/chrome/browser/resources/net_internals/sourceentry.js
+++ b/chrome/browser/resources/net_internals/sourceentry.js
@@ -232,6 +232,9 @@ SourceEntry.prototype.getDescription = function() {
case LogSourceType.HOST_RESOLVER_IMPL_JOB:
description = e.params.host;
break;
+ case LogSourceType.DISK_CACHE_ENTRY:
+ description = e.params.key;
+ break;
case LogSourceType.SPDY_SESSION:
if (e.params.host)
description = e.params.host + ' (' + e.params.proxy + ')';
diff --git a/chrome/service/net/service_url_request_context.cc b/chrome/service/net/service_url_request_context.cc
index 7f589e0..46d3b7c 100644
--- a/chrome/service/net/service_url_request_context.cc
+++ b/chrome/service/net/service_url_request_context.cc
@@ -135,6 +135,7 @@ ServiceURLRequestContext::ServiceURLRequestContext(
http_auth_handler_factory_,
NULL /* network_delegate */,
NULL /* net_log */),
+ NULL /* net_log */,
net::HttpCache::DefaultBackend::InMemory(0));
// In-memory cookie store.
cookie_store_ = new net::CookieMonster(NULL, NULL);
diff --git a/chrome/test/plugin/plugin_test.cpp b/chrome/test/plugin/plugin_test.cpp
index 9aa885f..177ad5f 100644
--- a/chrome/test/plugin/plugin_test.cpp
+++ b/chrome/test/plugin/plugin_test.cpp
@@ -303,6 +303,7 @@ class PluginInstallerDownloadTest
http_auth_handler_factory_,
network_delegate_,
NULL),
+ NULL /* net_log */,
net::HttpCache::DefaultBackend::InMemory(0));
}