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

Side by Side Diff: chrome/browser/resources/net_internals/main.js

Issue 1558027: Add the host resolver cache to the new net internals page. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: sync with fragment changes 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/resources/net_internals/index.html ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * Dictionary of constants (initialized by browser). 6 * Dictionary of constants (initialized by browser).
7 */ 7 */
8 var LogEntryType = null; 8 var LogEntryType = null;
9 var LogEventType = null; 9 var LogEventType = null;
10 var LogEventPhase = null; 10 var LogEventPhase = null;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 "actionBox", 43 "actionBox",
44 "splitterBox"); 44 "splitterBox");
45 45
46 // Create a view which will display info on the proxy setup. 46 // Create a view which will display info on the proxy setup.
47 var proxyView = new ProxyView("proxyTabContent", 47 var proxyView = new ProxyView("proxyTabContent",
48 "proxyCurrentConfig", 48 "proxyCurrentConfig",
49 "proxyReloadSettings", 49 "proxyReloadSettings",
50 "badProxiesTableBody", 50 "badProxiesTableBody",
51 "clearBadProxies"); 51 "clearBadProxies");
52 52
53 // Create a view which will display information on the host resolver.
54 var dnsView = new DnsView("dnsTabContent",
55 "hostResolverCacheTbody",
56 "clearHostResolverCache",
57 "hostResolverCacheCapacity",
58 "hostResolverCacheTTLSuccess",
59 "hostResolverCacheTTLFailure");
60
53 // Create a view which lets you tab between the different sub-views. 61 // Create a view which lets you tab between the different sub-views.
54 var categoryTabSwitcher = 62 var categoryTabSwitcher =
55 new TabSwitcherView(new DivView('categoryTabHandles')); 63 new TabSwitcherView(new DivView('categoryTabHandles'));
56 64
57 // Populate the main tabs. 65 // Populate the main tabs.
58 categoryTabSwitcher.addTab('requestsTab', requestsView, false); 66 categoryTabSwitcher.addTab('requestsTab', requestsView, false);
59 categoryTabSwitcher.addTab('proxyTab', proxyView, false); 67 categoryTabSwitcher.addTab('proxyTab', proxyView, false);
60 categoryTabSwitcher.addTab('dnsTab', new DivView('dnsTabContent'), false); 68 categoryTabSwitcher.addTab('dnsTab', dnsView, false);
61 categoryTabSwitcher.addTab('socketsTab', new DivView('socketsTabContent'), 69 categoryTabSwitcher.addTab('socketsTab', new DivView('socketsTabContent'),
62 false); 70 false);
63 categoryTabSwitcher.addTab('httpCacheTab', 71 categoryTabSwitcher.addTab('httpCacheTab',
64 new DivView('httpCacheTabContent'), false); 72 new DivView('httpCacheTabContent'), false);
65 73
66 // Build a map from the anchor name of each tab handle to its "tab ID". 74 // Build a map from the anchor name of each tab handle to its "tab ID".
67 // We will consider navigations to the #hash as a switch tab request. 75 // We will consider navigations to the #hash as a switch tab request.
68 var anchorMap = {}; 76 var anchorMap = {};
69 var tabIds = categoryTabSwitcher.getAllTabIds(); 77 var tabIds = categoryTabSwitcher.getAllTabIds();
70 for (var i = 0; i < tabIds.length; ++i) { 78 for (var i = 0; i < tabIds.length; ++i) {
(...skipping 26 matching lines...) Expand all
97 * This class provides a "bridge" for communicating between the javascript and 105 * This class provides a "bridge" for communicating between the javascript and
98 * the browser. 106 * the browser.
99 * 107 *
100 * @constructor 108 * @constructor
101 */ 109 */
102 function BrowserBridge() { 110 function BrowserBridge() {
103 // List of observers for various bits of browser state. 111 // List of observers for various bits of browser state.
104 this.logObservers_ = []; 112 this.logObservers_ = [];
105 this.proxySettingsObservers_ = []; 113 this.proxySettingsObservers_ = [];
106 this.badProxiesObservers_ = []; 114 this.badProxiesObservers_ = [];
115 this.hostResolverCacheObservers_ = [];
107 116
108 // Map from observer method name (i.e. 'onProxySettingsChanged', 'onBadProxies Changed') 117 // Map from observer method name (i.e. 'onProxySettingsChanged',
109 // to the previously received data for that type. Used to tell if the data has 118 // 'onBadProxiesChanged') to the previously received data for that type. Used
110 // actually changed since we last polled it. 119 // to tell if the data has actually changed since we last polled it.
111 this.prevPollData_ = {}; 120 this.prevPollData_ = {};
112 } 121 }
113 122
114 /** 123 /**
115 * Delay in milliseconds between polling of certain browser information. 124 * Delay in milliseconds between polling of certain browser information.
116 */ 125 */
117 BrowserBridge.POLL_INTERVAL_MS = 5000; 126 BrowserBridge.POLL_INTERVAL_MS = 5000;
118 127
119 //------------------------------------------------------------------------------ 128 //------------------------------------------------------------------------------
120 // Messages sent to the browser 129 // Messages sent to the browser
(...skipping 16 matching lines...) Expand all
137 146
138 BrowserBridge.prototype.sendReloadProxySettings = function() { 147 BrowserBridge.prototype.sendReloadProxySettings = function() {
139 chrome.send('reloadProxySettings'); 148 chrome.send('reloadProxySettings');
140 }; 149 };
141 150
142 BrowserBridge.prototype.sendGetBadProxies = function() { 151 BrowserBridge.prototype.sendGetBadProxies = function() {
143 // The browser will call receivedBadProxies on completion. 152 // The browser will call receivedBadProxies on completion.
144 chrome.send('getBadProxies'); 153 chrome.send('getBadProxies');
145 }; 154 };
146 155
156 BrowserBridge.prototype.sendGetHostResolverCache = function() {
157 // The browser will call receivedHostResolverCache on completion.
158 chrome.send('getHostResolverCache');
159 };
160
147 BrowserBridge.prototype.sendClearBadProxies = function() { 161 BrowserBridge.prototype.sendClearBadProxies = function() {
148 chrome.send('clearBadProxies'); 162 chrome.send('clearBadProxies');
149 }; 163 };
150 164
165 BrowserBridge.prototype.sendClearHostResolverCache = function() {
166 chrome.send('clearHostResolverCache');
167 };
168
151 //------------------------------------------------------------------------------ 169 //------------------------------------------------------------------------------
152 // Messages received from the browser 170 // Messages received from the browser
153 //------------------------------------------------------------------------------ 171 //------------------------------------------------------------------------------
154 172
155 BrowserBridge.prototype.receivedLogEntry = function(logEntry) { 173 BrowserBridge.prototype.receivedLogEntry = function(logEntry) {
156 for (var i = 0; i < this.logObservers_.length; ++i) 174 for (var i = 0; i < this.logObservers_.length; ++i)
157 this.logObservers_[i].onLogEntryAdded(logEntry); 175 this.logObservers_[i].onLogEntryAdded(logEntry);
158 }; 176 };
159 177
160 BrowserBridge.prototype.receivedLogEventTypeConstants = function(constantsMap) { 178 BrowserBridge.prototype.receivedLogEventTypeConstants = function(constantsMap) {
161 LogEventType = constantsMap; 179 LogEventType = constantsMap;
162 }; 180 };
163 181
164 BrowserBridge.prototype.receivedLogEventPhaseConstants = function(constantsMap) { 182 BrowserBridge.prototype.receivedLogEventPhaseConstants =
183 function(constantsMap) {
165 LogEventPhase = constantsMap; 184 LogEventPhase = constantsMap;
166 }; 185 };
167 186
168 BrowserBridge.prototype.receivedLogSourceTypeConstants = function(constantsMap) { 187 BrowserBridge.prototype.receivedLogSourceTypeConstants =
188 function(constantsMap) {
169 LogSourceType = constantsMap; 189 LogSourceType = constantsMap;
170 }; 190 };
171 191
172 BrowserBridge.prototype.receivedLogEntryTypeConstants = function(constantsMap) { 192 BrowserBridge.prototype.receivedLogEntryTypeConstants = function(constantsMap) {
173 LogEntryType = constantsMap; 193 LogEntryType = constantsMap;
174 }; 194 };
175 195
176 BrowserBridge.prototype.receivedTimeTickOffset = function(timeTickOffset) { 196 BrowserBridge.prototype.receivedTimeTickOffset = function(timeTickOffset) {
177 this.timeTickOffset_ = timeTickOffset; 197 this.timeTickOffset_ = timeTickOffset;
178 }; 198 };
179 199
180 BrowserBridge.prototype.receivedProxySettings = function(proxySettings) { 200 BrowserBridge.prototype.receivedProxySettings = function(proxySettings) {
181 this.dispatchToObserversFromPoll_( 201 this.dispatchToObserversFromPoll_(
182 this.proxySettingsObservers_, 'onProxySettingsChanged', proxySettings); 202 this.proxySettingsObservers_, 'onProxySettingsChanged', proxySettings);
183 }; 203 };
184 204
185 BrowserBridge.prototype.receivedBadProxies = function(badProxies) { 205 BrowserBridge.prototype.receivedBadProxies = function(badProxies) {
186 this.dispatchToObserversFromPoll_( 206 this.dispatchToObserversFromPoll_(
187 this.badProxiesObservers_, 'onBadProxiesChanged', badProxies); 207 this.badProxiesObservers_, 'onBadProxiesChanged', badProxies);
188 }; 208 };
189 209
210 BrowserBridge.prototype.receivedHostResolverCache =
211 function(hostResolverCache) {
212 this.dispatchToObserversFromPoll_(
213 this.hostResolverCacheObservers_, 'onHostResolverCacheChanged',
214 hostResolverCache);
215 };
216
190 //------------------------------------------------------------------------------ 217 //------------------------------------------------------------------------------
191 218
192 /** 219 /**
193 * Adds a listener of log entries. |observer| will be called back when new log 220 * Adds a listener of log entries. |observer| will be called back when new log
194 * data arrives, through: 221 * data arrives, through:
195 * 222 *
196 * observer.onLogEntryAdded(logEntry) 223 * observer.onLogEntryAdded(logEntry)
197 */ 224 */
198 BrowserBridge.prototype.addLogObserver = function(observer) { 225 BrowserBridge.prototype.addLogObserver = function(observer) {
199 this.logObservers_.push(observer); 226 this.logObservers_.push(observer);
(...skipping 21 matching lines...) Expand all
221 * |badProxies| is an array, where each entry has the property: 248 * |badProxies| is an array, where each entry has the property:
222 * badProxies[i].proxy_uri: String identify the proxy. 249 * badProxies[i].proxy_uri: String identify the proxy.
223 * badProxies[i].bad_until: The time when the proxy stops being considered 250 * badProxies[i].bad_until: The time when the proxy stops being considered
224 * bad. Note the time is in time ticks. 251 * bad. Note the time is in time ticks.
225 */ 252 */
226 BrowserBridge.prototype.addBadProxiesObsever = function(observer) { 253 BrowserBridge.prototype.addBadProxiesObsever = function(observer) {
227 this.badProxiesObservers_.push(observer); 254 this.badProxiesObservers_.push(observer);
228 }; 255 };
229 256
230 /** 257 /**
258 * Adds a listener of the host resolver cache. |observer| will be called back
259 * when data is received, through:
260 *
261 * observer.onHostResolverCacheChanged(hostResolverCache)
262 */
263 BrowserBridge.prototype.addHostResolverCacheObserver = function(observer) {
264 this.hostResolverCacheObservers_.push(observer);
265 };
266
267 /**
231 * The browser gives us times in terms of "time ticks" in milliseconds. 268 * The browser gives us times in terms of "time ticks" in milliseconds.
232 * This function converts the tick count to a Date() object. 269 * This function converts the tick count to a Date() object.
233 * 270 *
234 * @param {String} timeTicks. 271 * @param {String} timeTicks.
235 * @returns {Date} The time that |timeTicks| represents. 272 * @returns {Date} The time that |timeTicks| represents.
236 */ 273 */
237 BrowserBridge.prototype.convertTimeTicksToDate = function(timeTicks) { 274 BrowserBridge.prototype.convertTimeTicksToDate = function(timeTicks) {
238 // Note that the subtraction by 0 is to cast to a number (probably a float 275 // Note that the subtraction by 0 is to cast to a number (probably a float
239 // since the numbers are big). 276 // since the numbers are big).
240 var timeStampMs = (this.timeTickOffset_ - 0) + (timeTicks - 0); 277 var timeStampMs = (this.timeTickOffset_ - 0) + (timeTicks - 0);
241 var d = new Date(); 278 var d = new Date();
242 d.setTime(timeStampMs); 279 d.setTime(timeStampMs);
243 return d; 280 return d;
244 }; 281 };
245 282
246 BrowserBridge.prototype.doPolling_ = function() { 283 BrowserBridge.prototype.doPolling_ = function() {
284 // TODO(eroman): Optimize this by using a separate polling frequency for the
285 // data consumed by the currently active view. Everything else can be on a low
286 // frequency poll since it won't impact the display.
247 this.sendGetProxySettings(); 287 this.sendGetProxySettings();
248 this.sendGetBadProxies(); 288 this.sendGetBadProxies();
289 this.sendGetHostResolverCache();
249 }; 290 };
250 291
251 /** 292 /**
252 * Helper function to handle calling all the observers, but ONLY if the data has 293 * Helper function to handle calling all the observers, but ONLY if the data has
253 * actually changed since last time. This is used for data we received from 294 * actually changed since last time. This is used for data we received from
254 * browser on a poll loop. 295 * browser on a poll loop.
255 */ 296 */
256 BrowserBridge.prototype.dispatchToObserversFromPoll_ = function( 297 BrowserBridge.prototype.dispatchToObserversFromPoll_ = function(
257 observerList, method, data) { 298 observerList, method, data) {
258 var prevData = this.prevPollData_[method]; 299 var prevData = this.prevPollData_[method];
259 300
260 // If the data hasn't changed since last time, no need to notify observers. 301 // If the data hasn't changed since last time, no need to notify observers.
261 if (prevData && JSON.stringify(prevData) == JSON.stringify(data)) 302 if (prevData && JSON.stringify(prevData) == JSON.stringify(data))
262 return; 303 return;
263 304
264 this.prevPollData_[method] = data; 305 this.prevPollData_[method] = data;
265 306
266 // Ok, notify the observers of the change. 307 // Ok, notify the observers of the change.
267 for (var i = 0; i < observerList.length; ++i) 308 for (var i = 0; i < observerList.length; ++i)
268 observerList[i][method](data); 309 observerList[i][method](data);
269 }; 310 };
OLDNEW
« no previous file with comments | « chrome/browser/resources/net_internals/index.html ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698