NetworkActionBar.js (4139B)
1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 5 "use strict"; 6 7 const { 8 Component, 9 createFactory, 10 } = require("resource://devtools/client/shared/vendor/react.mjs"); 11 const { 12 connect, 13 } = require("resource://devtools/client/shared/vendor/react-redux.js"); 14 const { 15 div, 16 } = require("resource://devtools/client/shared/vendor/react-dom-factories.js"); 17 const { 18 L10N, 19 } = require("resource://devtools/client/netmonitor/src/utils/l10n.js"); 20 const Actions = require("resource://devtools/client/netmonitor/src/actions/index.js"); 21 const { 22 PANELS, 23 } = require("resource://devtools/client/netmonitor/src/constants.js"); 24 25 const PropTypes = require("resource://devtools/client/shared/vendor/react-prop-types.mjs"); 26 27 const Tabbar = createFactory( 28 require("resource://devtools/client/shared/components/tabs/TabBar.js") 29 ); 30 const TabPanel = createFactory( 31 ChromeUtils.importESModule( 32 "resource://devtools/client/shared/components/tabs/Tabs.mjs" 33 ).TabPanel 34 ); 35 36 loader.lazyGetter(this, "SearchPanel", function () { 37 return createFactory( 38 require("resource://devtools/client/netmonitor/src/components/search/SearchPanel.js") 39 ); 40 }); 41 42 loader.lazyGetter(this, "RequestBlockingPanel", function () { 43 return createFactory( 44 require("resource://devtools/client/netmonitor/src/components/request-blocking/RequestBlockingPanel.js") 45 ); 46 }); 47 48 loader.lazyGetter(this, "HTTPCustomRequestPanel", function () { 49 return createFactory( 50 require("resource://devtools/client/netmonitor/src/components/new-request/HTTPCustomRequestPanel.js") 51 ); 52 }); 53 54 class NetworkActionBar extends Component { 55 static get propTypes() { 56 return { 57 connector: PropTypes.object.isRequired, 58 selectedActionBarTabId: PropTypes.string, 59 selectActionBarTab: PropTypes.func.isRequired, 60 toggleNetworkActionBar: PropTypes.func.isRequired, 61 }; 62 } 63 64 render() { 65 const { 66 connector, 67 selectedActionBarTabId, 68 selectActionBarTab, 69 toggleNetworkActionBar, 70 } = this.props; 71 72 // The request blocking and search panels are available behind a pref 73 const showBlockingPanel = Services.prefs.getBoolPref( 74 "devtools.netmonitor.features.requestBlocking" 75 ); 76 const showNewCustomRequestPanel = Services.prefs.getBoolPref( 77 "devtools.netmonitor.features.newEditAndResend" 78 ); 79 80 return div( 81 { className: "network-action-bar" }, 82 Tabbar( 83 { 84 activeTabId: selectedActionBarTabId, 85 onSelect: id => selectActionBarTab(id), 86 sidebarToggleButton: { 87 collapsed: false, 88 collapsePaneTitle: L10N.getStr("collapseActionPane"), 89 expandPaneTitle: "", 90 onClick: toggleNetworkActionBar, 91 alignRight: true, 92 canVerticalSplit: false, 93 }, 94 }, 95 showNewCustomRequestPanel && 96 TabPanel( 97 { 98 id: PANELS.HTTP_CUSTOM_REQUEST, 99 title: L10N.getStr("netmonitor.actionbar.HTTPCustomRequest"), 100 className: "network-action-bar-HTTP-custom-request", 101 }, 102 HTTPCustomRequestPanel({ connector }) 103 ), 104 TabPanel( 105 { 106 id: PANELS.SEARCH, 107 title: L10N.getStr("netmonitor.actionbar.search"), 108 className: "network-action-bar-search", 109 }, 110 SearchPanel({ connector }) 111 ), 112 showBlockingPanel && 113 TabPanel( 114 { 115 id: PANELS.BLOCKING, 116 title: L10N.getStr("netmonitor.actionbar.requestBlocking2"), 117 className: "network-action-bar-blocked", 118 }, 119 RequestBlockingPanel() 120 ) 121 ) 122 ); 123 } 124 } 125 126 module.exports = connect( 127 state => ({ 128 selectedActionBarTabId: state.ui.selectedActionBarTabId, 129 }), 130 dispatch => ({ 131 selectActionBarTab: id => dispatch(Actions.selectActionBarTab(id)), 132 toggleNetworkActionBar: () => dispatch(Actions.toggleNetworkActionBar()), 133 }) 134 )(NetworkActionBar);