diff options
5 files changed, 91 insertions, 1 deletions
diff --git a/chrome/browser/resources/net_internals/dataview.js b/chrome/browser/resources/net_internals/dataview.js index 58aaccf..3d9cbc1 100644 --- a/chrome/browser/resources/net_internals/dataview.js +++ b/chrome/browser/resources/net_internals/dataview.js @@ -263,6 +263,21 @@ DataView.prototype.onUpdateAllCompleted = function(data) { } } + if (g_browser.isPlatformMac()) { + text.push(''); + text.push('----------------------------------------------'); + text.push(' Kernel extensions'); + text.push('----------------------------------------------'); + text.push(''); + + var kernelExtensions = data.kernelExtensions; + if (!kernelExtensions) { + text.push('No data'); + } else { + text.push(kernelExtensions); + } + } + // Open a new window to display this text. this.setText_(text.join('\n')); diff --git a/chrome/browser/resources/net_internals/index.html b/chrome/browser/resources/net_internals/index.html index 1ab90e6..c258d2e 100644 --- a/chrome/browser/resources/net_internals/index.html +++ b/chrome/browser/resources/net_internals/index.html @@ -26,6 +26,7 @@ found in the LICENSE file. <script src="socketpoolwrapper.js"></script> <script src="socketsview.js"></script> <script src="serviceprovidersview.js"></script> + <script src="kernelextensionsview.js"></script> </head> <body onload="onLoaded()"> <!-- Tab switcher for main categories. --> @@ -39,6 +40,8 @@ found in the LICENSE file. <li><a href="#httpCache" id=httpCacheTab>HTTP Cache</a></li> <!-- Tab is only shown on Windows --> <li><a href="#serviceProviders" id=serviceProvidersTab style="display: none;">SPIs</a></li> + <!-- Tab is only shown on Mac --> + <li><a href="#kernelExtensions" id=kernelExtensionsTab style="display: none;">Kexts</a></li> <li><a href="#tests" id=testTab>Tests</a></li> </ul> <div style="clear: both;"></div> @@ -169,6 +172,11 @@ found in the LICENSE file. </tbody> </table> </div> + <!-- Only shown on Mac --> + <div id=kernelExtensionsTabContent style="display: none;"> + <h4>Kernel extensions</h4> + <pre id=kernelExtensionsText></pre> + </div> <!-- Import/Export data --> <div id=dataTabContent> diff --git a/chrome/browser/resources/net_internals/kernelextensionsview.js b/chrome/browser/resources/net_internals/kernelextensionsview.js new file mode 100644 index 0000000..22eadca --- /dev/null +++ b/chrome/browser/resources/net_internals/kernelextensionsview.js @@ -0,0 +1,32 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +/** + * This view displays information on loaded Mac kernel extensions. + * + * Displays the output from running kexstat. + * + * @constructor + */ +function KernelExtensionsView(tabId, mainBoxId, textPReId) { + DivView.call(this, mainBoxId); + + var tab = document.getElementById(tabId); + setNodeDisplay(tab, true); + this.textPre_ = document.getElementById(textPReId); + + g_browser.addKernelExtensionsObserver(this); +} + +inherits(KernelExtensionsView, DivView); + +KernelExtensionsView.prototype.onKernelExtensionsChanged = +function(kernelExtensionsText) { + this.textPre_.innerHTML = ''; + if (kernelExtensionsText == null) { + addTextNode(this.textPre_, 'No data'); + } else { + addTextNode(this.textPre_, kernelExtensionsText); + } +}; diff --git a/chrome/browser/resources/net_internals/main.css b/chrome/browser/resources/net_internals/main.css index 0102cfb..3b2e10e 100644 --- a/chrome/browser/resources/net_internals/main.css +++ b/chrome/browser/resources/net_internals/main.css @@ -203,6 +203,7 @@ body { #dnsTabContent, #socketsTabContent, #serviceProvidersTabContent, +#kernelExtensionsTabContent, #testTabContent { overflow: auto; padding: 10px; diff --git a/chrome/browser/resources/net_internals/main.js b/chrome/browser/resources/net_internals/main.js index 50102c6..be5fc33 100644 --- a/chrome/browser/resources/net_internals/main.js +++ b/chrome/browser/resources/net_internals/main.js @@ -89,7 +89,6 @@ function onLoaded() { "socketPoolDiv", "socketPoolGroupsDiv"); - var serviceView; if (g_browser.isPlatformWindows()) { serviceView = new ServiceProvidersView("serviceProvidersTab", @@ -98,6 +97,13 @@ function onLoaded() { "namespaceProvidersTbody"); } + var extensionsView; + if (g_browser.isPlatformMac()) { + extensionsView = new KernelExtensionsView("kernelExtensionsTab", + "kernelExtensionsTabContent", + "kernelExtensionsText"); + } + // Create a view which lets you tab between the different sub-views. var categoryTabSwitcher = new TabSwitcherView(new DivView('categoryTabHandles')); @@ -111,6 +117,8 @@ function onLoaded() { categoryTabSwitcher.addTab('dataTab', dataView, false); if (g_browser.isPlatformWindows()) categoryTabSwitcher.addTab('serviceProvidersTab', serviceView, false); + if (g_browser.isPlatformMac()) + categoryTabSwitcher.addTab('kernelExtensionsTab', extensionsView, false); categoryTabSwitcher.addTab('testTab', testView, false); // Build a map from the anchor name of each tab handle to its "tab ID". @@ -171,6 +179,10 @@ function BrowserBridge() { this.pollableDataHelpers_.serviceProviders = new PollableDataHelper('onServiceProvidersChanged', this.sendGetServiceProviders.bind(this)); + } else if (this.isPlatformMac()) { + this.pollableDataHelpers_.kernelExtensions = + new PollableDataHelper('onKernelExtensionsChanged', + this.sendGetKernelExtensions.bind(this)); } // Cache of the data received. @@ -236,6 +248,10 @@ BrowserBridge.prototype.isPlatformWindows = function() { return /Win/.test(navigator.platform); }; +BrowserBridge.prototype.isPlatformMac = function() { + return /Mac/.test(navigator.platform); +}; + BrowserBridge.prototype.sendGetProxySettings = function() { // The browser will call receivedProxySettings on completion. chrome.send('getProxySettings'); @@ -279,6 +295,10 @@ BrowserBridge.prototype.sendGetServiceProviders = function() { chrome.send('getServiceProviders'); }; +BrowserBridge.prototype.sendGetKernelExtensions = function() { + chrome.send('getKernelExtensions'); +}; + BrowserBridge.prototype.enableIPv6 = function() { chrome.send('enableIPv6'); }; @@ -358,6 +378,10 @@ BrowserBridge.prototype.receivedServiceProviders = function(serviceProviders) { this.pollableDataHelpers_.serviceProviders.update(serviceProviders); }; +BrowserBridge.prototype.receivedKernelExtensions = function(kernelExtensions) { + this.pollableDataHelpers_.kernelExtensions.update(kernelExtensions); +}; + BrowserBridge.prototype.receivedPassiveLogEntries = function(entries) { this.numPassivelyCapturedEvents_ += entries.length; for (var i = 0; i < entries.length; ++i) { @@ -485,6 +509,16 @@ BrowserBridge.prototype.addServiceProvidersObserver = function(observer) { }; /** + * Adds a listener of the kernel extensions. |observer| will be called + * back when data is received, through: + * + * observer.onKernelExtensionsChanged(kernelExtensions) + */ +BrowserBridge.prototype.addKernelExtensionsObserver = function(observer) { + this.pollableDataHelpers_.kernelExtensions.addObserver(observer); +}; + +/** * Adds a listener for the progress of the connection tests. * The observer will be called back with: * |