tor-browser

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

RequestListColumnPath.js (2432B)


      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 } = require("resource://devtools/client/shared/vendor/react.js");
     10 const dom = require("resource://devtools/client/shared/vendor/react-dom-factories.js");
     11 const PropTypes = require("resource://devtools/client/shared/vendor/react-prop-types.js");
     12 const {
     13  connect,
     14 } = require("resource://devtools/client/shared/vendor/react-redux.js");
     15 const {
     16  getUrlToolTip,
     17  propertiesEqual,
     18 } = require("resource://devtools/client/netmonitor/src/utils/request-utils.js");
     19 const { truncateString } = require("resource://devtools/shared/string.js");
     20 const {
     21  MAX_UI_STRING_LENGTH,
     22 } = require("resource://devtools/client/netmonitor/src/constants.js");
     23 const {
     24  getOverriddenUrl,
     25 } = require("resource://devtools/client/netmonitor/src/selectors/index.js");
     26 
     27 const UPDATED_FILE_PROPS = ["urlDetails", "waitingTime"];
     28 
     29 class RequestListColumnPath extends Component {
     30  static get propTypes() {
     31    return {
     32      item: PropTypes.object.isRequired,
     33      onWaterfallMouseDown: PropTypes.func,
     34      isOverridden: PropTypes.bool.isRequired,
     35      overriddenUrl: PropTypes.string,
     36    };
     37  }
     38 
     39  shouldComponentUpdate(nextProps) {
     40    return (
     41      !propertiesEqual(UPDATED_FILE_PROPS, this.props.item, nextProps.item) ||
     42      nextProps.overriddenUrl !== this.props.overriddenUrl
     43    );
     44  }
     45 
     46  render() {
     47    const {
     48      item: { urlDetails },
     49      isOverridden,
     50      overriddenUrl,
     51    } = this.props;
     52    const requestedPath = urlDetails.path;
     53    const pathToolTip = getUrlToolTip(urlDetails);
     54 
     55    // Build extra content for the title if the request is overridden.
     56    const overrideTitle = isOverridden ? ` → ${overriddenUrl}` : "";
     57 
     58    return dom.td(
     59      {
     60        className: "requests-list-column requests-list-path",
     61        title:
     62          truncateString(pathToolTip, MAX_UI_STRING_LENGTH) + overrideTitle,
     63      },
     64      dom.div({}, truncateString(requestedPath, MAX_UI_STRING_LENGTH))
     65    );
     66  }
     67 }
     68 
     69 module.exports = connect(
     70  (state, props) => {
     71    const overriddenUrl = getOverriddenUrl(state, props.item.urlDetails?.url);
     72    return {
     73      isOverridden: !!overriddenUrl,
     74      overriddenUrl,
     75    };
     76  },
     77  {},
     78  undefined,
     79  { storeKey: "toolbox-store" }
     80 )(RequestListColumnPath);