| Index: chrome/browser/resources/net_internals/main.js | 
| =================================================================== | 
| --- chrome/browser/resources/net_internals/main.js	(revision 43905) | 
| +++ chrome/browser/resources/net_internals/main.js	(working copy) | 
| @@ -50,6 +50,14 @@ | 
| "badProxiesTableBody", | 
| "clearBadProxies"); | 
|  | 
| +  // Create a view which will display information on the host resolver. | 
| +  var dnsView = new DnsView("dnsTabContent", | 
| +                            "hostResolverCacheTbody", | 
| +                            "clearHostResolverCache", | 
| +                            "hostResolverCacheCapacity", | 
| +                            "hostResolverCacheTTLSuccess", | 
| +                            "hostResolverCacheTTLFailure"); | 
| + | 
| // Create a view which lets you tab between the different sub-views. | 
| var categoryTabSwitcher = | 
| new TabSwitcherView(new DivView('categoryTabHandles')); | 
| @@ -57,7 +65,7 @@ | 
| // Populate the main tabs. | 
| categoryTabSwitcher.addTab('requestsTab', requestsView, false); | 
| categoryTabSwitcher.addTab('proxyTab', proxyView, false); | 
| -  categoryTabSwitcher.addTab('dnsTab', new DivView('dnsTabContent'), false); | 
| +  categoryTabSwitcher.addTab('dnsTab', dnsView, false); | 
| categoryTabSwitcher.addTab('socketsTab', new DivView('socketsTabContent'), | 
| false); | 
| categoryTabSwitcher.addTab('httpCacheTab', | 
| @@ -104,10 +112,11 @@ | 
| this.logObservers_ = []; | 
| this.proxySettingsObservers_ = []; | 
| this.badProxiesObservers_ = []; | 
| +  this.hostResolverCacheObservers_ = []; | 
|  | 
| -  // Map from observer method name (i.e. 'onProxySettingsChanged', 'onBadProxiesChanged') | 
| -  // to the previously received data for that type. Used to tell if the data has | 
| -  // actually changed since we last polled it. | 
| +  // Map from observer method name (i.e. 'onProxySettingsChanged', | 
| +  // 'onBadProxiesChanged') to the previously received data for that type. Used | 
| +  // to tell if the data has actually changed since we last polled it. | 
| this.prevPollData_ = {}; | 
| } | 
|  | 
| @@ -144,10 +153,19 @@ | 
| chrome.send('getBadProxies'); | 
| }; | 
|  | 
| +BrowserBridge.prototype.sendGetHostResolverCache = function() { | 
| +  // The browser will call receivedHostResolverCache on completion. | 
| +  chrome.send('getHostResolverCache'); | 
| +}; | 
| + | 
| BrowserBridge.prototype.sendClearBadProxies = function() { | 
| chrome.send('clearBadProxies'); | 
| }; | 
|  | 
| +BrowserBridge.prototype.sendClearHostResolverCache = function() { | 
| +  chrome.send('clearHostResolverCache'); | 
| +}; | 
| + | 
| //------------------------------------------------------------------------------ | 
| // Messages received from the browser | 
| //------------------------------------------------------------------------------ | 
| @@ -161,11 +179,13 @@ | 
| LogEventType = constantsMap; | 
| }; | 
|  | 
| -BrowserBridge.prototype.receivedLogEventPhaseConstants = function(constantsMap) { | 
| +BrowserBridge.prototype.receivedLogEventPhaseConstants = | 
| +function(constantsMap) { | 
| LogEventPhase = constantsMap; | 
| }; | 
|  | 
| -BrowserBridge.prototype.receivedLogSourceTypeConstants = function(constantsMap) { | 
| +BrowserBridge.prototype.receivedLogSourceTypeConstants = | 
| +function(constantsMap) { | 
| LogSourceType = constantsMap; | 
| }; | 
|  | 
| @@ -187,6 +207,13 @@ | 
| this.badProxiesObservers_, 'onBadProxiesChanged', badProxies); | 
| }; | 
|  | 
| +BrowserBridge.prototype.receivedHostResolverCache = | 
| +function(hostResolverCache) { | 
| +  this.dispatchToObserversFromPoll_( | 
| +      this.hostResolverCacheObservers_, 'onHostResolverCacheChanged', | 
| +      hostResolverCache); | 
| +}; | 
| + | 
| //------------------------------------------------------------------------------ | 
|  | 
| /** | 
| @@ -228,6 +255,16 @@ | 
| }; | 
|  | 
| /** | 
| + * Adds a listener of the host resolver cache. |observer| will be called back | 
| + * when data is received, through: | 
| + * | 
| + *   observer.onHostResolverCacheChanged(hostResolverCache) | 
| + */ | 
| +BrowserBridge.prototype.addHostResolverCacheObserver = function(observer) { | 
| +  this.hostResolverCacheObservers_.push(observer); | 
| +}; | 
| + | 
| +/** | 
| * The browser gives us times in terms of "time ticks" in milliseconds. | 
| * This function converts the tick count to a Date() object. | 
| * | 
| @@ -244,8 +281,12 @@ | 
| }; | 
|  | 
| BrowserBridge.prototype.doPolling_ = function() { | 
| +  // TODO(eroman): Optimize this by using a separate polling frequency for the | 
| +  // data consumed by the currently active view. Everything else can be on a low | 
| +  // frequency poll since it won't impact the display. | 
| this.sendGetProxySettings(); | 
| this.sendGetBadProxies(); | 
| +  this.sendGetHostResolverCache(); | 
| }; | 
|  | 
| /** | 
|  |