mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-25 11:15:34 +00:00
938483d542
Differential Revision: https://phabricator.services.mozilla.com/D42123 --HG-- extra : moz-landing-system : lando
119 lines
2.8 KiB
JavaScript
119 lines
2.8 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
"use strict";
|
|
|
|
define(function(require, exports, module) {
|
|
const {
|
|
createFactory,
|
|
Component,
|
|
} = require("devtools/client/shared/vendor/react");
|
|
const PropTypes = require("devtools/client/shared/vendor/react-prop-types");
|
|
const dom = require("devtools/client/shared/vendor/react-dom-factories");
|
|
|
|
const { div, span, table, tbody, tr, td } = dom;
|
|
|
|
/**
|
|
* This template is responsible for rendering basic layout
|
|
* of the 'Headers' panel. It displays HTTP headers groups such as
|
|
* received or response headers.
|
|
*/
|
|
class Headers extends Component {
|
|
static get propTypes() {
|
|
return {
|
|
data: PropTypes.object,
|
|
};
|
|
}
|
|
|
|
constructor(props) {
|
|
super(props);
|
|
this.state = {};
|
|
}
|
|
|
|
render() {
|
|
const data = this.props.data;
|
|
|
|
return div(
|
|
{ className: "netInfoHeadersTable" },
|
|
div(
|
|
{ className: "netHeadersGroup" },
|
|
div(
|
|
{ className: "netInfoHeadersGroup" },
|
|
JSONView.Locale["jsonViewer.responseHeaders"]
|
|
),
|
|
table(
|
|
{ cellPadding: 0, cellSpacing: 0 },
|
|
HeaderListFactory({ headers: data.response })
|
|
)
|
|
),
|
|
div(
|
|
{ className: "netHeadersGroup" },
|
|
div(
|
|
{ className: "netInfoHeadersGroup" },
|
|
JSONView.Locale["jsonViewer.requestHeaders"]
|
|
),
|
|
table(
|
|
{ cellPadding: 0, cellSpacing: 0 },
|
|
HeaderListFactory({ headers: data.request })
|
|
)
|
|
)
|
|
);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* This template renders headers list,
|
|
* name + value pairs.
|
|
*/
|
|
class HeaderList extends Component {
|
|
static get propTypes() {
|
|
return {
|
|
headers: PropTypes.arrayOf(
|
|
PropTypes.shape({
|
|
name: PropTypes.string,
|
|
value: PropTypes.string,
|
|
})
|
|
),
|
|
};
|
|
}
|
|
|
|
constructor(props) {
|
|
super(props);
|
|
|
|
this.state = {
|
|
headers: [],
|
|
};
|
|
}
|
|
|
|
render() {
|
|
const headers = this.props.headers;
|
|
|
|
headers.sort(function(a, b) {
|
|
return a.name > b.name ? 1 : -1;
|
|
});
|
|
|
|
const rows = [];
|
|
headers.forEach(header => {
|
|
rows.push(
|
|
tr(
|
|
{ key: header.name },
|
|
td(
|
|
{ className: "netInfoParamName" },
|
|
span({ title: header.name }, header.name)
|
|
),
|
|
td({ className: "netInfoParamValue" }, header.value)
|
|
)
|
|
);
|
|
});
|
|
|
|
return tbody({}, rows);
|
|
}
|
|
}
|
|
|
|
const HeaderListFactory = createFactory(HeaderList);
|
|
|
|
// Exports from this module
|
|
exports.Headers = Headers;
|
|
});
|