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

Side by Side 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, 4 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
« no previous file with comments | « netlog_viewer/modules_view.html ('k') | netlog_viewer/prerender_view.html » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 /**
6 * This view displays information on installed Chrome extensions / apps as well
7 * as Winsock layered service providers and namespace providers.
8 *
9 * For each layered service provider, shows the name, dll, and type
10 * information. For each namespace provider, shows the name and
11 * whether or not it's active.
12 */
13 var ModulesView = (function() {
14 'use strict';
15
16 // We inherit from DivView.
17 var superClass = DivView;
18
19 /**
20 * @constructor
21 */
22 function ModulesView() {
23 assertFirstConstructorCall(ModulesView);
24
25 // Call superclass's constructor.
26 superClass.call(this, ModulesView.MAIN_BOX_ID);
27
28 this.serviceProvidersTbody_ =
29 $(ModulesView.SERVICE_PROVIDERS_TBODY_ID);
30 this.namespaceProvidersTbody_ =
31 $(ModulesView.NAMESPACE_PROVIDERS_TBODY_ID);
32
33 g_browser.addServiceProvidersObserver(this, false);
34 g_browser.addExtensionInfoObserver(this, true);
35 }
36
37 ModulesView.TAB_ID = 'tab-handle-modules';
38 ModulesView.TAB_NAME = 'Modules';
39 ModulesView.TAB_HASH = '#modules';
40
41 // IDs for special HTML elements in modules_view.html.
42 ModulesView.MAIN_BOX_ID = 'modules-view-tab-content';
43 ModulesView.EXTENSION_INFO_ID = 'modules-view-extension-info';
44 ModulesView.EXTENSION_INFO_UNAVAILABLE_ID =
45 'modules-view-extension-info-unavailable';
46 ModulesView.EXTENSION_INFO_NO_CONTENT_ID =
47 'modules-view-extension-info-no-content';
48 ModulesView.EXTENSION_INFO_CONTENT_ID =
49 'modules-view-extension-info-content';
50 ModulesView.EXTENSION_INFO_TBODY_ID =
51 'modules-view-extension-info-tbody';
52 ModulesView.WINDOWS_SERVICE_PROVIDERS_ID =
53 'modules-view-windows-service-providers';
54 ModulesView.SERVICE_PROVIDERS_TBODY_ID =
55 'modules-view-service-providers-tbody';
56 ModulesView.NAMESPACE_PROVIDERS_TBODY_ID =
57 'modules-view-namespace-providers-tbody';
58
59 cr.addSingletonGetter(ModulesView);
60
61 ModulesView.prototype = {
62 // Inherit the superclass's methods.
63 __proto__: superClass.prototype,
64
65 onLoadLogFinish: function(data) {
66 // Show the tab if there are either service providers or extension info.
67 var hasExtensionInfo = this.onExtensionInfoChanged(data.extensionInfo);
68 var hasSpiInfo = this.onServiceProvidersChanged(data.serviceProviders);
69 return hasExtensionInfo || hasSpiInfo;
70 },
71
72 onExtensionInfoChanged: function(extensionInfo) {
73 setNodeDisplay($(ModulesView.EXTENSION_INFO_CONTENT_ID),
74 extensionInfo && extensionInfo.length > 0);
75 setNodeDisplay($(ModulesView.EXTENSION_INFO_UNAVAILABLE_ID),
76 !extensionInfo);
77 setNodeDisplay($(ModulesView.EXTENSION_INFO_NO_CONTENT_ID),
78 extensionInfo && extensionInfo.length == 0);
79
80 var tbodyExtension = $(ModulesView.EXTENSION_INFO_TBODY_ID);
81 tbodyExtension.innerHTML = '';
82
83 if (extensionInfo && extensionInfo.length > 0) {
84 // Fill in the extensions table.
85 for (var i = 0; i < extensionInfo.length; ++i) {
86 var e = extensionInfo[i];
87 var tr = addNode(tbodyExtension, 'tr');
88 tr.className = (e.enabled ? 'enabled' : '');
89
90 addNodeWithText(tr, 'td', e.id);
91 addNodeWithText(tr, 'td', e.packagedApp);
92 addNodeWithText(tr, 'td', e.enabled);
93 addNodeWithText(tr, 'td', e.name);
94 addNodeWithText(tr, 'td', e.version);
95 addNodeWithText(tr, 'td', e.description);
96 }
97 }
98
99 return !!extensionInfo;
100 },
101
102 onServiceProvidersChanged: function(serviceProviders) {
103 setNodeDisplay($(ModulesView.WINDOWS_SERVICE_PROVIDERS_ID),
104 serviceProviders);
105 if (serviceProviders) {
106 var tbodyService = $(ModulesView.SERVICE_PROVIDERS_TBODY_ID);
107 tbodyService.innerHTML = '';
108
109 // Fill in the service providers table.
110 for (var i = 0; i < serviceProviders.service_providers.length; ++i) {
111 var s = serviceProviders.service_providers[i];
112 var tr = addNode(tbodyService, 'tr');
113
114 addNodeWithText(tr, 'td', s.name);
115 addNodeWithText(tr, 'td', s.version);
116 addNodeWithText(tr, 'td',
117 ModulesView.getLayeredServiceProviderType(s));
118 addNodeWithText(tr, 'td',
119 ModulesView.getLayeredServiceProviderSocketType(s));
120 addNodeWithText(tr, 'td',
121 ModulesView.getLayeredServiceProviderProtocolType(s));
122 }
123
124 var tbodyNamespace = $(ModulesView.NAMESPACE_PROVIDERS_TBODY_ID);
125 tbodyNamespace.innerHTML = '';
126
127 // Fill in the namespace providers table.
128 for (var i = 0; i < serviceProviders.namespace_providers.length; ++i) {
129 var n = serviceProviders.namespace_providers[i];
130 var tr = addNode(tbodyNamespace, 'tr');
131
132 addNodeWithText(tr, 'td', n.name);
133 addNodeWithText(tr, 'td', n.version);
134 addNodeWithText(tr, 'td', ModulesView.getNamespaceProviderType(n));
135 addNodeWithText(tr, 'td', n.active);
136 }
137 }
138
139 return !!serviceProviders;
140 },
141 };
142
143 /**
144 * Returns type of a layered service provider.
145 */
146 ModulesView.getLayeredServiceProviderType = function(serviceProvider) {
147 if (serviceProvider.chain_length == 0)
148 return 'Layer';
149 if (serviceProvider.chain_length == 1)
150 return 'Base';
151 return 'Chain';
152 };
153
154 var SOCKET_TYPE = {
155 '1': 'SOCK_STREAM',
156 '2': 'SOCK_DGRAM',
157 '3': 'SOCK_RAW',
158 '4': 'SOCK_RDM',
159 '5': 'SOCK_SEQPACKET'
160 };
161
162 /**
163 * Returns socket type of a layered service provider as a string.
164 */
165 ModulesView.getLayeredServiceProviderSocketType = function(serviceProvider) {
166 return tryGetValueWithKey(SOCKET_TYPE, serviceProvider.socket_type);
167 };
168
169 var PROTOCOL_TYPE = {
170 '1': 'IPPROTO_ICMP',
171 '6': 'IPPROTO_TCP',
172 '17': 'IPPROTO_UDP',
173 '58': 'IPPROTO_ICMPV6'
174 };
175
176 /**
177 * Returns protocol type of a layered service provider as a string.
178 */
179 ModulesView.getLayeredServiceProviderProtocolType =
180 function(serviceProvider) {
181 return tryGetValueWithKey(PROTOCOL_TYPE, serviceProvider.socket_protocol);
182 };
183
184 var NAMESPACE_PROVIDER_PTYPE = {
185 '12': 'NS_DNS',
186 '15': 'NS_NLA',
187 '16': 'NS_BTH',
188 '32': 'NS_NTDS',
189 '37': 'NS_EMAIL',
190 '38': 'NS_PNRPNAME',
191 '39': 'NS_PNRPCLOUD'
192 };
193
194 /**
195 * Returns the type of a namespace provider as a string.
196 */
197 ModulesView.getNamespaceProviderType = function(namespaceProvider) {
198 return tryGetValueWithKey(NAMESPACE_PROVIDER_PTYPE,
199 namespaceProvider.type);
200 };
201
202 return ModulesView;
203 })();
OLDNEW
« 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