summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/resources/net_internals/dataview.js15
-rw-r--r--chrome/browser/resources/net_internals/index.html8
-rw-r--r--chrome/browser/resources/net_internals/kernelextensionsview.js32
-rw-r--r--chrome/browser/resources/net_internals/main.css1
-rw-r--r--chrome/browser/resources/net_internals/main.js36
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:
*