tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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);