blob: 2df33c57238080d9908efada9156f242e3f796a6 [file] [log] [blame]
// 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 the Alt-Svc mappings.
*/
var AltSvcView = (function() {
'use strict';
// We inherit from DivView.
var superClass = DivView;
/**
* @constructor
*/
function AltSvcView() {
assertFirstConstructorCall(AltSvcView);
// Call superclass's constructor.
superClass.call(this, AltSvcView.MAIN_BOX_ID);
g_browser.addAltSvcMappingsObserver(this, true);
}
AltSvcView.TAB_ID = 'tab-handle-alt-svc';
AltSvcView.TAB_NAME = 'Alt-Svc';
AltSvcView.TAB_HASH = '#alt-svc';
// IDs for special HTML elements in alt_svc_view.html
AltSvcView.MAIN_BOX_ID = 'alt-svc-view-tab-content';
AltSvcView.ALTERNATE_PROTOCOL_MAPPINGS_ID =
'alt-svc-view-alternate-protocol-mappings';
AltSvcView.MAPPINGS_CONTENT_ID =
'alt-svc-view-mappings-content';
AltSvcView.MAPPINGS_NO_CONTENT_ID =
'alt-svc-view-mappings-no-content';
AltSvcView.MAPPINGS_TBODY_ID = 'alt-svc-view-mappings-tbody';
cr.addSingletonGetter(AltSvcView);
AltSvcView.prototype = {
// Inherit the superclass's methods.
__proto__: superClass.prototype,
onLoadLogFinish: function(data) {
// TODO(rch): Remove the check for spdyAlternateProtocolMappings after
// M53 (It was renamed to altSvcMappings in M50).
return this.onAltSvcMappingsChanged(data.altSvcMappings ||
data.spdyAlternateProtocolMappings);
},
/**
* Displays the alternate service mappings.
*/
onAltSvcMappingsChanged: function(altSvcMappings) {
if (!altSvcMappings)
return false;
var hasMappings = altSvcMappings && altSvcMappings.length > 0;
setNodeDisplay($(AltSvcView.MAPPINGS_CONTENT_ID), hasMappings);
setNodeDisplay($(AltSvcView.MAPPINGS_NO_CONTENT_ID), !hasMappings);
var tbody = $(AltSvcView.MAPPINGS_TBODY_ID);
tbody.innerHTML = '';
// Fill in the alternate service mappings table.
for (var i = 0; i < altSvcMappings.length; ++i) {
var a = altSvcMappings[i];
var tr = addNode(tbody, 'tr');
addNodeWithText(tr, 'td', a.server);
addNodeWithText(tr, 'td', a.alternative_service);
}
return true;
}
};
return AltSvcView;
})();