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

Unified Diff: netlog_viewer/modules_view.js

Issue 2178423002: Bring the gh-pages branch up to date with the master branch (Closed) Base URL: https://github.com/catapult-project/catapult.git@gh-pages
Patch Set: Created 4 years, 5 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 | « netlog_viewer/modules_view.html ('k') | netlog_viewer/prerender_view.html » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: netlog_viewer/modules_view.js
diff --git a/netlog_viewer/modules_view.js b/netlog_viewer/modules_view.js
new file mode 100644
index 0000000000000000000000000000000000000000..6c4f535c3e088902064321debf7194d77ed6cf45
--- /dev/null
+++ b/netlog_viewer/modules_view.js
@@ -0,0 +1,203 @@
+// Copyright (c) 2012 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 installed Chrome extensions / apps as well
+ * as Winsock layered service providers and namespace providers.
+ *
+ * For each layered service provider, shows the name, dll, and type
+ * information. For each namespace provider, shows the name and
+ * whether or not it's active.
+ */
+var ModulesView = (function() {
+ 'use strict';
+
+ // We inherit from DivView.
+ var superClass = DivView;
+
+ /**
+ * @constructor
+ */
+ function ModulesView() {
+ assertFirstConstructorCall(ModulesView);
+
+ // Call superclass's constructor.
+ superClass.call(this, ModulesView.MAIN_BOX_ID);
+
+ this.serviceProvidersTbody_ =
+ $(ModulesView.SERVICE_PROVIDERS_TBODY_ID);
+ this.namespaceProvidersTbody_ =
+ $(ModulesView.NAMESPACE_PROVIDERS_TBODY_ID);
+
+ g_browser.addServiceProvidersObserver(this, false);
+ g_browser.addExtensionInfoObserver(this, true);
+ }
+
+ ModulesView.TAB_ID = 'tab-handle-modules';
+ ModulesView.TAB_NAME = 'Modules';
+ ModulesView.TAB_HASH = '#modules';
+
+ // IDs for special HTML elements in modules_view.html.
+ ModulesView.MAIN_BOX_ID = 'modules-view-tab-content';
+ ModulesView.EXTENSION_INFO_ID = 'modules-view-extension-info';
+ ModulesView.EXTENSION_INFO_UNAVAILABLE_ID =
+ 'modules-view-extension-info-unavailable';
+ ModulesView.EXTENSION_INFO_NO_CONTENT_ID =
+ 'modules-view-extension-info-no-content';
+ ModulesView.EXTENSION_INFO_CONTENT_ID =
+ 'modules-view-extension-info-content';
+ ModulesView.EXTENSION_INFO_TBODY_ID =
+ 'modules-view-extension-info-tbody';
+ ModulesView.WINDOWS_SERVICE_PROVIDERS_ID =
+ 'modules-view-windows-service-providers';
+ ModulesView.SERVICE_PROVIDERS_TBODY_ID =
+ 'modules-view-service-providers-tbody';
+ ModulesView.NAMESPACE_PROVIDERS_TBODY_ID =
+ 'modules-view-namespace-providers-tbody';
+
+ cr.addSingletonGetter(ModulesView);
+
+ ModulesView.prototype = {
+ // Inherit the superclass's methods.
+ __proto__: superClass.prototype,
+
+ onLoadLogFinish: function(data) {
+ // Show the tab if there are either service providers or extension info.
+ var hasExtensionInfo = this.onExtensionInfoChanged(data.extensionInfo);
+ var hasSpiInfo = this.onServiceProvidersChanged(data.serviceProviders);
+ return hasExtensionInfo || hasSpiInfo;
+ },
+
+ onExtensionInfoChanged: function(extensionInfo) {
+ setNodeDisplay($(ModulesView.EXTENSION_INFO_CONTENT_ID),
+ extensionInfo && extensionInfo.length > 0);
+ setNodeDisplay($(ModulesView.EXTENSION_INFO_UNAVAILABLE_ID),
+ !extensionInfo);
+ setNodeDisplay($(ModulesView.EXTENSION_INFO_NO_CONTENT_ID),
+ extensionInfo && extensionInfo.length == 0);
+
+ var tbodyExtension = $(ModulesView.EXTENSION_INFO_TBODY_ID);
+ tbodyExtension.innerHTML = '';
+
+ if (extensionInfo && extensionInfo.length > 0) {
+ // Fill in the extensions table.
+ for (var i = 0; i < extensionInfo.length; ++i) {
+ var e = extensionInfo[i];
+ var tr = addNode(tbodyExtension, 'tr');
+ tr.className = (e.enabled ? 'enabled' : '');
+
+ addNodeWithText(tr, 'td', e.id);
+ addNodeWithText(tr, 'td', e.packagedApp);
+ addNodeWithText(tr, 'td', e.enabled);
+ addNodeWithText(tr, 'td', e.name);
+ addNodeWithText(tr, 'td', e.version);
+ addNodeWithText(tr, 'td', e.description);
+ }
+ }
+
+ return !!extensionInfo;
+ },
+
+ onServiceProvidersChanged: function(serviceProviders) {
+ setNodeDisplay($(ModulesView.WINDOWS_SERVICE_PROVIDERS_ID),
+ serviceProviders);
+ if (serviceProviders) {
+ var tbodyService = $(ModulesView.SERVICE_PROVIDERS_TBODY_ID);
+ tbodyService.innerHTML = '';
+
+ // Fill in the service providers table.
+ for (var i = 0; i < serviceProviders.service_providers.length; ++i) {
+ var s = serviceProviders.service_providers[i];
+ var tr = addNode(tbodyService, 'tr');
+
+ addNodeWithText(tr, 'td', s.name);
+ addNodeWithText(tr, 'td', s.version);
+ addNodeWithText(tr, 'td',
+ ModulesView.getLayeredServiceProviderType(s));
+ addNodeWithText(tr, 'td',
+ ModulesView.getLayeredServiceProviderSocketType(s));
+ addNodeWithText(tr, 'td',
+ ModulesView.getLayeredServiceProviderProtocolType(s));
+ }
+
+ var tbodyNamespace = $(ModulesView.NAMESPACE_PROVIDERS_TBODY_ID);
+ tbodyNamespace.innerHTML = '';
+
+ // Fill in the namespace providers table.
+ for (var i = 0; i < serviceProviders.namespace_providers.length; ++i) {
+ var n = serviceProviders.namespace_providers[i];
+ var tr = addNode(tbodyNamespace, 'tr');
+
+ addNodeWithText(tr, 'td', n.name);
+ addNodeWithText(tr, 'td', n.version);
+ addNodeWithText(tr, 'td', ModulesView.getNamespaceProviderType(n));
+ addNodeWithText(tr, 'td', n.active);
+ }
+ }
+
+ return !!serviceProviders;
+ },
+ };
+
+ /**
+ * Returns type of a layered service provider.
+ */
+ ModulesView.getLayeredServiceProviderType = function(serviceProvider) {
+ if (serviceProvider.chain_length == 0)
+ return 'Layer';
+ if (serviceProvider.chain_length == 1)
+ return 'Base';
+ return 'Chain';
+ };
+
+ var SOCKET_TYPE = {
+ '1': 'SOCK_STREAM',
+ '2': 'SOCK_DGRAM',
+ '3': 'SOCK_RAW',
+ '4': 'SOCK_RDM',
+ '5': 'SOCK_SEQPACKET'
+ };
+
+ /**
+ * Returns socket type of a layered service provider as a string.
+ */
+ ModulesView.getLayeredServiceProviderSocketType = function(serviceProvider) {
+ return tryGetValueWithKey(SOCKET_TYPE, serviceProvider.socket_type);
+ };
+
+ var PROTOCOL_TYPE = {
+ '1': 'IPPROTO_ICMP',
+ '6': 'IPPROTO_TCP',
+ '17': 'IPPROTO_UDP',
+ '58': 'IPPROTO_ICMPV6'
+ };
+
+ /**
+ * Returns protocol type of a layered service provider as a string.
+ */
+ ModulesView.getLayeredServiceProviderProtocolType =
+ function(serviceProvider) {
+ return tryGetValueWithKey(PROTOCOL_TYPE, serviceProvider.socket_protocol);
+ };
+
+ var NAMESPACE_PROVIDER_PTYPE = {
+ '12': 'NS_DNS',
+ '15': 'NS_NLA',
+ '16': 'NS_BTH',
+ '32': 'NS_NTDS',
+ '37': 'NS_EMAIL',
+ '38': 'NS_PNRPNAME',
+ '39': 'NS_PNRPCLOUD'
+ };
+
+ /**
+ * Returns the type of a namespace provider as a string.
+ */
+ ModulesView.getNamespaceProviderType = function(namespaceProvider) {
+ return tryGetValueWithKey(NAMESPACE_PROVIDER_PTYPE,
+ namespaceProvider.type);
+ };
+
+ return ModulesView;
+})();
« no previous file with comments | « netlog_viewer/modules_view.html ('k') | netlog_viewer/prerender_view.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698