tor-browser

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

RequestListColumnUrl.js (3192B)


      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  td,
     16 } = require("resource://devtools/client/shared/vendor/react-dom-factories.js");
     17 const PropTypes = require("resource://devtools/client/shared/vendor/react-prop-types.mjs");
     18 const {
     19  getFormattedIPAndPort,
     20 } = require("resource://devtools/client/netmonitor/src/utils/format-utils.js");
     21 const {
     22  getUrlToolTip,
     23  propertiesEqual,
     24 } = require("resource://devtools/client/netmonitor/src/utils/request-utils.js");
     25 const SecurityState = createFactory(
     26  require("resource://devtools/client/netmonitor/src/components/SecurityState.js")
     27 );
     28 const {
     29  getOverriddenUrl,
     30 } = require("resource://devtools/client/netmonitor/src/selectors/index.js");
     31 const { truncateString } = require("resource://devtools/shared/string.js");
     32 const {
     33  MAX_UI_STRING_LENGTH,
     34 } = require("resource://devtools/client/netmonitor/src/constants.js");
     35 
     36 const UPDATED_FILE_PROPS = ["remoteAddress", "securityState", "urlDetails"];
     37 
     38 class RequestListColumnUrl extends Component {
     39  static get propTypes() {
     40    return {
     41      isOverridden: PropTypes.bool.isRequired,
     42      item: PropTypes.object.isRequired,
     43      onSecurityIconMouseDown: PropTypes.func.isRequired,
     44      overriddenUrl: PropTypes.string,
     45    };
     46  }
     47 
     48  shouldComponentUpdate(nextProps) {
     49    return (
     50      !propertiesEqual(UPDATED_FILE_PROPS, this.props.item, nextProps.item) ||
     51      nextProps.overriddenUrl !== this.props.overriddenUrl
     52    );
     53  }
     54 
     55  render() {
     56    const {
     57      isOverridden,
     58      item: { urlDetails },
     59      overriddenUrl,
     60    } = this.props;
     61 
     62    const { item, onSecurityIconMouseDown } = this.props;
     63 
     64    const {
     65      remoteAddress,
     66      remotePort,
     67      urlDetails: { isLocal },
     68    } = item;
     69 
     70    // deals with returning whole url
     71    const originalURL = urlDetails.url;
     72    const urlToolTip = getUrlToolTip(urlDetails);
     73 
     74    // Build extra content for the title if this is a remote address.
     75    const remoteAddressTitle = remoteAddress
     76      ? ` (${getFormattedIPAndPort(remoteAddress, remotePort)})`
     77      : "";
     78 
     79    // Build extra content for the title if the request is overridden.
     80    const overrideTitle = isOverridden ? ` → ${overriddenUrl}` : "";
     81 
     82    return td(
     83      {
     84        className: "requests-list-column requests-list-url",
     85        title:
     86          truncateString(urlToolTip, MAX_UI_STRING_LENGTH) +
     87          remoteAddressTitle +
     88          overrideTitle,
     89      },
     90      SecurityState({ item, onSecurityIconMouseDown, isLocal }),
     91      truncateString(originalURL, MAX_UI_STRING_LENGTH)
     92    );
     93  }
     94 }
     95 
     96 module.exports = connect(
     97  (state, props) => {
     98    const overriddenUrl = getOverriddenUrl(state, props.item.urlDetails.url);
     99    return {
    100      isOverridden: !!overriddenUrl,
    101      overriddenUrl,
    102    };
    103  },
    104  {},
    105  undefined,
    106  { storeKey: "toolbox-store" }
    107 )(RequestListColumnUrl);