1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch/** 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch * This view displays information on the host resolver: 7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch * 8731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick * - Shows the default address family. 9731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick * - Has a button to enable IPv6, if it is disabled. 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch * - Shows the current host cache contents. 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch * - Has a button to clear the host cache. 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch * - Shows the parameters used to construct the host cache (capacity, ttl). 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch * 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch * @constructor 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch */ 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochfunction DnsView(mainBoxId, 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch cacheTbodyId, 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch clearCacheButtonId, 19731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick defaultFamilySpanId, 20731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ipv6DisabledSpanId, 21731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick enableIPv6ButtonId, 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch capacitySpanId, 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ttlSuccessSpanId, 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ttlFailureSpanId) { 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DivView.call(this, mainBoxId); 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Hook up the UI components. 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch this.cacheTbody_ = document.getElementById(cacheTbodyId); 29731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick this.defaultFamilySpan_ = document.getElementById(defaultFamilySpanId); 30731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick this.ipv6DisabledSpan_ = document.getElementById(ipv6DisabledSpanId); 31731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 32731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick document.getElementById(enableIPv6ButtonId).onclick = 33731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick g_browser.enableIPv6.bind(g_browser); 34731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch this.capacitySpan_ = document.getElementById(capacitySpanId); 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch this.ttlSuccessSpan_ = document.getElementById(ttlSuccessSpanId); 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch this.ttlFailureSpan_ = document.getElementById(ttlFailureSpanId); 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch var clearCacheButton = document.getElementById(clearCacheButtonId); 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch clearCacheButton.onclick = 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch g_browser.sendClearHostResolverCache.bind(g_browser); 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 43731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick // Register to receive changes to the host resolver info. 44731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick g_browser.addHostResolverInfoObserver(this); 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochinherits(DnsView, DivView); 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 49731df977c0511bca2206b5f333555b1205ff1f43Iain MerrickDnsView.prototype.onHostResolverInfoChanged = function(hostResolverInfo) { 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Clear the existing values. 51731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick this.defaultFamilySpan_.innerHTML = ''; 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch this.capacitySpan_.innerHTML = ''; 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch this.ttlSuccessSpan_.innerHTML = ''; 54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch this.ttlFailureSpan_.innerHTML = ''; 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch this.cacheTbody_.innerHTML = ''; 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 57731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick // No info. 58731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick if (!hostResolverInfo) 59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return; 60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 61731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick var family = hostResolverInfo.default_address_family; 62731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick addTextNode(this.defaultFamilySpan_, getKeyWithValue(AddressFamily, family)); 63731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 64731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick var ipv6Disabled = (family == AddressFamily.ADDRESS_FAMILY_IPV4); 65731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick setNodeDisplay(this.ipv6DisabledSpan_, ipv6Disabled); 66731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Fill in the basic cache information. 68731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick var hostResolverCache = hostResolverInfo.cache; 69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch addTextNode(this.capacitySpan_, hostResolverCache.capacity); 70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch addTextNode(this.ttlSuccessSpan_, hostResolverCache.ttl_success_ms); 71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch addTextNode(this.ttlFailureSpan_, hostResolverCache.ttl_failure_ms); 72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Fill in the cache contents table. 74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch for (var i = 0; i < hostResolverCache.entries.length; ++i) { 75c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch var e = hostResolverCache.entries[i]; 76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch var tr = addNode(this.cacheTbody_, 'tr'); 77c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 78c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch var hostnameCell = addNode(tr, 'td'); 79c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch addTextNode(hostnameCell, e.hostname); 80c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 81c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch var familyCell = addNode(tr, 'td'); 82731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick addTextNode(familyCell, getKeyWithValue(AddressFamily, e.address_family)); 83c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 84c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch var addressesCell = addNode(tr, 'td'); 85c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 86c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (e.error != undefined) { 87c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch addTextNode(addressesCell, 'error: ' + e.error); 88c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } else { 89c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch for (var j = 0; j < e.addresses.length; ++j) { 90c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch var address = e.addresses[j]; 91c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (j != 0) 92c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch addNode(addressesCell, 'br'); 93c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch addTextNode(addressesCell, address); 94c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 95c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 96c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 97c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch var expiresDate = g_browser.convertTimeTicksToDate(e.expiration); 98c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch var expiresCell = addNode(tr, 'td'); 99c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch addTextNode(expiresCell, expiresDate.toLocaleString()); 100c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 101c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 102