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

Unified Diff: chrome/browser/resources/net_internals/events_tracker.js

Issue 9585027: Limit the number of captured events held by about:net-internals. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: address mmenke comments Created 8 years, 9 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/resources/net_internals/capture_view.js ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/resources/net_internals/events_tracker.js
diff --git a/chrome/browser/resources/net_internals/events_tracker.js b/chrome/browser/resources/net_internals/events_tracker.js
index 34ed91eb170fac3f310d0df5beba5b0b209e55b5..02d36a7e2b28fd9d697e7a40c8ec4ac70ec09d0a 100644
--- a/chrome/browser/resources/net_internals/events_tracker.js
+++ b/chrome/browser/resources/net_internals/events_tracker.js
@@ -17,6 +17,10 @@ var EventsTracker = (function() {
this.capturedEvents_ = [];
this.observers_ = [];
+
+ // Controls how large |capturedEvents_| can grow.
+ this.softLimit_ = Infinity;
+ this.hardLimit_ = Infinity;
}
cr.addSingletonGetter(EventsTracker);
@@ -53,6 +57,15 @@ var EventsTracker = (function() {
for (var i = 0; i < this.observers_.length; ++i) {
this.observers_[i].onReceivedLogEntries(logEntries);
}
+
+ // Check that we haven't grown too big. If so, toss out older events.
+ if (this.getNumCapturedEvents() > this.hardLimit_) {
+ var originalEvents = this.capturedEvents_;
+ this.deleteAllLogEntries();
+ // Delete the oldest events until we reach the soft limit.
+ originalEvents.splice(0, originalEvents.length - this.softLimit_);
+ this.addLogEntries(originalEvents);
+ }
},
/**
@@ -64,6 +77,29 @@ var EventsTracker = (function() {
*/
addLogEntryObserver: function(observer) {
this.observers_.push(observer);
+ },
+
+ /**
+ * Set bounds on the maximum number of events that will be tracked. This
+ * helps to bound the total amount of memory usage, since otherwise
+ * long-running capture sessions can exhaust the renderer's memory and
+ * crash.
+ *
+ * Once |hardLimit| number of events have been captured we do a garbage
+ * collection and toss out old events, bringing our count down to
+ * |softLimit|.
+ *
+ * To log observers this will look like all the events got deleted, and
+ * then subsequently a bunch of new events were received. In other words, it
+ * behaves the same as if the user had simply started logging a bit later
+ * in time!
+ */
+ setLimits: function(softLimit, hardLimit) {
+ if (hardLimit != Infinity && softLimit >= hardLimit)
+ throw 'hardLimit must be greater than softLimit';
+
+ this.softLimit_ = softLimit;
+ this.hardLimit_ = hardLimit;
}
};
« no previous file with comments | « chrome/browser/resources/net_internals/capture_view.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698