| Index: netlog_viewer/netlog_viewer/dns_view.js
|
| diff --git a/netlog_viewer/netlog_viewer/dns_view.js b/netlog_viewer/netlog_viewer/dns_view.js
|
| index fa941390e3127ebe5cf2f2e1a915c72357f4893d..70a55b0bbc867be7d1030b77553c07eef710dc33 100644
|
| --- a/netlog_viewer/netlog_viewer/dns_view.js
|
| +++ b/netlog_viewer/netlog_viewer/dns_view.js
|
| @@ -51,6 +51,7 @@ var DnsView = (function() {
|
|
|
| DnsView.ACTIVE_SPAN_ID = 'dns-view-cache-active';
|
| DnsView.EXPIRED_SPAN_ID = 'dns-view-cache-expired';
|
| + DnsView.NETWORK_SPAN_ID = 'dns-view-network-changes';
|
| DnsView.CACHE_TBODY_ID = 'dns-view-cache-tbody';
|
|
|
| cr.addSingletonGetter(DnsView);
|
| @@ -69,6 +70,7 @@ var DnsView = (function() {
|
| $(DnsView.CACHE_TBODY_ID).innerHTML = '';
|
| $(DnsView.ACTIVE_SPAN_ID).innerHTML = '0';
|
| $(DnsView.EXPIRED_SPAN_ID).innerHTML = '0';
|
| + $(DnsView.NETWORK_SPAN_ID).innerHTML = '0';
|
|
|
| // Update fields containing async DNS configuration information.
|
| displayAsyncDnsConfig_(hostResolverInfo);
|
| @@ -80,6 +82,8 @@ var DnsView = (function() {
|
| // Fill in the basic cache information.
|
| var hostResolverCache = hostResolverInfo.cache;
|
| $(DnsView.CAPACITY_SPAN_ID).innerText = hostResolverCache.capacity;
|
| + $(DnsView.NETWORK_SPAN_ID).innerText =
|
| + valueOrDefault(hostResolverCache.network_changes, '');
|
|
|
| var expiredEntries = 0;
|
| // Date the cache was logged. This will be either now, when actively
|
| @@ -95,34 +99,53 @@ var DnsView = (function() {
|
| for (var i = 0; i < hostResolverCache.entries.length; ++i) {
|
| var e = hostResolverCache.entries[i];
|
| var tr = addNode($(DnsView.CACHE_TBODY_ID), 'tr');
|
| + var expired = false;
|
|
|
| var hostnameCell = addNode(tr, 'td');
|
| addTextNode(hostnameCell, e.hostname);
|
|
|
| var familyCell = addNode(tr, 'td');
|
| - addTextNode(familyCell,
|
| - addressFamilyToString(e.address_family));
|
| + addTextNode(familyCell, addressFamilyToString(e.address_family));
|
|
|
| var addressesCell = addNode(tr, 'td');
|
|
|
| if (e.error != undefined) {
|
| - var errorText =
|
| - e.error + ' (' + netErrorToString(e.error) + ')';
|
| + var errorText = e.error + ' (' + netErrorToString(e.error) + ')';
|
| var errorNode = addTextNode(addressesCell, 'error: ' + errorText);
|
| addressesCell.classList.add('warning-text');
|
| } else {
|
| addListToNode_(addNode(addressesCell, 'div'), e.addresses);
|
| }
|
|
|
| + var ttlCell = addNode(tr, 'td');
|
| + addTextNode(ttlCell, valueOrDefault(e.ttl, ''));
|
| +
|
| var expiresDate = timeutil.convertTimeTicksToDate(e.expiration);
|
| var expiresCell = addNode(tr, 'td');
|
| timeutil.addNodeWithDate(expiresCell, expiresDate);
|
| if (logDate > timeutil.convertTimeTicksToDate(e.expiration)) {
|
| - ++expiredEntries;
|
| + expired = true;
|
| var expiredSpan = addNode(expiresCell, 'span');
|
| expiredSpan.classList.add('warning-text');
|
| addTextNode(expiredSpan, ' [Expired]');
|
| }
|
| +
|
| + // HostCache keeps track of how many network changes have happened since
|
| + // it was created, and entries store what that number was at the time
|
| + // they were created. If more network changes have happened since an
|
| + // entry was created, the entry is expired.
|
| + var networkChangesCell = addNode(tr, 'td');
|
| + addTextNode(networkChangesCell, valueOrDefault(e.network_changes, ''));
|
| + if (e.network_changes < hostResolverCache.network_changes) {
|
| + expired = true;
|
| + var expiredSpan = addNode(networkChangesCell, 'span');
|
| + expiredSpan.classList.add('warning-text');
|
| + addTextNode(expiredSpan, ' [Expired]');
|
| + }
|
| +
|
| + if (expired) {
|
| + expiredEntries++;
|
| + }
|
| }
|
|
|
| $(DnsView.ACTIVE_SPAN_ID).innerText =
|
| @@ -142,10 +165,9 @@ var DnsView = (function() {
|
|
|
| // Figure out if the internal DNS resolver is disabled or has no valid
|
| // configuration information, and update display accordingly.
|
| - var enabled = hostResolverInfo &&
|
| - hostResolverInfo.dns_config !== undefined;
|
| - var noConfig = enabled &&
|
| - hostResolverInfo.dns_config.nameservers === undefined;
|
| + var enabled = hostResolverInfo && hostResolverInfo.dns_config !== undefined;
|
| + var noConfig =
|
| + enabled && hostResolverInfo.dns_config.nameservers === undefined;
|
| $(DnsView.INTERNAL_DNS_ENABLED_SPAN_ID).innerText = enabled;
|
| setNodeDisplay($(DnsView.INTERNAL_DNS_INVALID_CONFIG_SPAN_ID), noConfig);
|
|
|
| @@ -191,6 +213,14 @@ var DnsView = (function() {
|
| addNodeWithText(node, 'div', list[i]);
|
| }
|
|
|
| + // TODO(mgersh): The |ttl| and |network_changes| properties were introduced in
|
| + // M59 and may not exist when loading older logs. This can be removed in M62.
|
| + function valueOrDefault(value, defaultValue) {
|
| + if (value != undefined)
|
| + return value;
|
| + return defaultValue;
|
| + }
|
| +
|
| return DnsView;
|
| })();
|
|
|
|
|