forked from mirrors/gecko-dev
		
	 938483d542
			
		
	
	
		938483d542
		
	
	
	
	
		
			
			Differential Revision: https://phabricator.services.mozilla.com/D42123 --HG-- extra : moz-landing-system : lando
		
			
				
	
	
		
			118 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			118 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;
 | |
| });
 |