| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2011 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 Winsock layered service providers and | |
| 7 * 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 * @constructor | |
| 14 */ | |
| 15 function ServiceProvidersView() { | |
| 16 const tabId = 'serviceProvidersTab'; | |
| 17 const mainBoxId = 'serviceProvidersTabContent'; | |
| 18 const serviceProvidersTbodyId = 'serviceProvidersTbody'; | |
| 19 const namespaceProvidersTbodyId = 'namespaceProvidersTbody'; | |
| 20 | |
| 21 DivView.call(this, mainBoxId); | |
| 22 | |
| 23 var tab = $(tabId); | |
| 24 setNodeDisplay(tab, true); | |
| 25 | |
| 26 this.serviceProvidersTbody_ = $(serviceProvidersTbodyId); | |
| 27 this.namespaceProvidersTbody_ = $(namespaceProvidersTbodyId); | |
| 28 | |
| 29 g_browser.addServiceProvidersObserver(this); | |
| 30 } | |
| 31 | |
| 32 inherits(ServiceProvidersView, DivView); | |
| 33 | |
| 34 ServiceProvidersView.prototype.onLoadLogFinish = function(data) { | |
| 35 return this.onServiceProvidersChanged(data.serviceProviders); | |
| 36 }; | |
| 37 | |
| 38 ServiceProvidersView.prototype.onServiceProvidersChanged = | |
| 39 function(serviceProviders) { | |
| 40 return serviceProviders && | |
| 41 this.updateServiceProviders_(serviceProviders['service_providers']) && | |
| 42 this.updateNamespaceProviders_(serviceProviders['namespace_providers']); | |
| 43 }; | |
| 44 | |
| 45 /** | |
| 46 * Returns type of a layered service provider. | |
| 47 */ | |
| 48 ServiceProvidersView.getLayeredServiceProviderType = | |
| 49 function(serviceProvider) { | |
| 50 if (serviceProvider.chain_length == 0) | |
| 51 return 'Layer'; | |
| 52 if (serviceProvider.chain_length == 1) | |
| 53 return 'Base'; | |
| 54 return 'Chain'; | |
| 55 }; | |
| 56 | |
| 57 ServiceProvidersView.namespaceProviderType_ = { | |
| 58 '12': 'NS_DNS', | |
| 59 '15': 'NS_NLA', | |
| 60 '16': 'NS_BTH', | |
| 61 '32': 'NS_NTDS', | |
| 62 '37': 'NS_EMAIL', | |
| 63 '38': 'NS_PNRPNAME', | |
| 64 '39': 'NS_PNRPCLOUD' | |
| 65 }; | |
| 66 | |
| 67 /** | |
| 68 * Returns the type of a namespace provider as a string. | |
| 69 */ | |
| 70 ServiceProvidersView.getNamespaceProviderType = function(namespaceProvider) { | |
| 71 return tryGetValueWithKey(ServiceProvidersView.namespaceProviderType_, | |
| 72 namespaceProvider.type); | |
| 73 }; | |
| 74 | |
| 75 ServiceProvidersView.socketType_ = { | |
| 76 '1': 'SOCK_STREAM', | |
| 77 '2': 'SOCK_DGRAM', | |
| 78 '3': 'SOCK_RAW', | |
| 79 '4': 'SOCK_RDM', | |
| 80 '5': 'SOCK_SEQPACKET' | |
| 81 }; | |
| 82 | |
| 83 /** | |
| 84 * Returns socket type of a layered service provider as a string. | |
| 85 */ | |
| 86 ServiceProvidersView.getSocketType = function(layeredServiceProvider) { | |
| 87 return tryGetValueWithKey(ServiceProvidersView.socketType_, | |
| 88 layeredServiceProvider.socket_type); | |
| 89 }; | |
| 90 | |
| 91 ServiceProvidersView.protocolType_ = { | |
| 92 '1': 'IPPROTO_ICMP', | |
| 93 '6': 'IPPROTO_TCP', | |
| 94 '17': 'IPPROTO_UDP', | |
| 95 '58': 'IPPROTO_ICMPV6' | |
| 96 }; | |
| 97 | |
| 98 /** | |
| 99 * Returns protocol type of a layered service provider as a string. | |
| 100 */ | |
| 101 ServiceProvidersView.getProtocolType = function(layeredServiceProvider) { | |
| 102 return tryGetValueWithKey(ServiceProvidersView.protocolType_, | |
| 103 layeredServiceProvider.socket_protocol); | |
| 104 }; | |
| 105 | |
| 106 /** | |
| 107 * Updates the table of layered service providers. | |
| 108 */ | |
| 109 ServiceProvidersView.prototype.updateServiceProviders_ = | |
| 110 function(serviceProviders) { | |
| 111 this.serviceProvidersTbody_.innerHTML = ''; | |
| 112 | |
| 113 if (!serviceProviders) | |
| 114 return false; | |
| 115 | |
| 116 // Add a table row for each service provider. | |
| 117 for (var i = 0; i < serviceProviders.length; ++i) { | |
| 118 var tr = addNode(this.serviceProvidersTbody_, 'tr'); | |
| 119 var entry = serviceProviders[i]; | |
| 120 | |
| 121 addNodeWithText(tr, 'td', entry.name); | |
| 122 addNodeWithText(tr, 'td', entry.version); | |
| 123 addNodeWithText(tr, 'td', | |
| 124 ServiceProvidersView.getLayeredServiceProviderType(entry)); | |
| 125 addNodeWithText(tr, 'td', ServiceProvidersView.getSocketType(entry)); | |
| 126 addNodeWithText(tr, 'td', ServiceProvidersView.getProtocolType(entry)); | |
| 127 addNodeWithText(tr, 'td', entry.path); | |
| 128 } | |
| 129 return true; | |
| 130 }; | |
| 131 | |
| 132 /** | |
| 133 * Updates the lable of namespace providers. | |
| 134 */ | |
| 135 ServiceProvidersView.prototype.updateNamespaceProviders_ = | |
| 136 function(namespaceProviders) { | |
| 137 this.namespaceProvidersTbody_.innerHTML = ''; | |
| 138 | |
| 139 if (!namespaceProviders) | |
| 140 return false; | |
| 141 | |
| 142 // Add a table row for each namespace provider. | |
| 143 for (var i = 0; i < namespaceProviders.length; ++i) { | |
| 144 var tr = addNode(this.namespaceProvidersTbody_, 'tr'); | |
| 145 var entry = namespaceProviders[i]; | |
| 146 addNodeWithText(tr, 'td', entry.name); | |
| 147 addNodeWithText(tr, 'td', entry.version); | |
| 148 addNodeWithText(tr, 'td', | |
| 149 ServiceProvidersView.getNamespaceProviderType(entry)); | |
| 150 addNodeWithText(tr, 'td', entry.active); | |
| 151 } | |
| 152 return true; | |
| 153 }; | |
| OLD | NEW |