tor-browser

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

headers-provider.js (2212B)


      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 { ObjectProvider } = ChromeUtils.importESModule(
      8  "resource://devtools/client/shared/components/tree/ObjectProvider.mjs",
      9  { global: "current" }
     10 );
     11 
     12 /**
     13 * Custom tree provider.
     14 *
     15 * This provider is used to provide set of headers and is
     16 * utilized by the HeadersPanel.
     17 * The default ObjectProvider can't be used since it doesn't
     18 * allow duplicities by design and so it can't support duplicity
     19 * headers (more headers with the same name).
     20 */
     21 var HeadersProvider = {
     22  ...ObjectProvider,
     23 
     24  getChildren(object) {
     25    if (object && object.value instanceof HeaderList) {
     26      return object.value.headers.map(
     27        (header, index) => new Header(header.name, header.value, index)
     28      );
     29    }
     30    return ObjectProvider.getChildren(object);
     31  },
     32 
     33  hasChildren(object) {
     34    if (object.value instanceof HeaderList) {
     35      return !!object.value.headers.length;
     36    } else if (object instanceof Header) {
     37      return false;
     38    }
     39    return ObjectProvider.hasChildren(object);
     40  },
     41 
     42  getLabel(object) {
     43    if (object instanceof Header) {
     44      return object.name;
     45    }
     46    return ObjectProvider.getLabel(object);
     47  },
     48 
     49  getValue(object) {
     50    if (object instanceof Header) {
     51      return object.value;
     52    }
     53    return ObjectProvider.getValue(object);
     54  },
     55 
     56  getKey(object) {
     57    if (object instanceof Header) {
     58      return object.key;
     59    }
     60    return ObjectProvider.getKey(object);
     61  },
     62 
     63  getType(object) {
     64    if (object instanceof Header) {
     65      return "string";
     66    }
     67    return ObjectProvider.getType(object);
     68  },
     69 };
     70 
     71 /**
     72 * Helper data structures for list of headers.
     73 */
     74 function HeaderList(headers) {
     75  // Clone, so the sort doesn't affect the original array.
     76  this.headers = headers.slice(0);
     77  this.headers.sort((a, b) => {
     78    return a.name.toLowerCase().localeCompare(b.name.toLowerCase());
     79  });
     80 }
     81 
     82 function Header(name, value, key) {
     83  this.name = name;
     84  this.value = value;
     85  this.key = key;
     86 }
     87 
     88 module.exports = {
     89  HeadersProvider,
     90  HeaderList,
     91 };