tor-browser

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

constants.js (12212B)


      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 file,
      3 * You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 
      5 "use strict";
      6 
      7 // Options passed to MemoryFront's startRecordingAllocations never change.
      8 exports.ALLOCATION_RECORDING_OPTIONS = {
      9  probability: 1,
     10  maxLogLength: 1,
     11 };
     12 
     13 // If TREE_ROW_HEIGHT changes, be sure to change `var(--heap-tree-row-height)`
     14 // in `devtools/client/themes/memory.css`
     15 exports.TREE_ROW_HEIGHT = 18;
     16 
     17 /*** Actions ******************************************************************/
     18 
     19 const actions = (exports.actions = {});
     20 
     21 // Fired by UI to request a snapshot from the actor.
     22 actions.TAKE_SNAPSHOT_START = "take-snapshot-start";
     23 actions.TAKE_SNAPSHOT_END = "take-snapshot-end";
     24 
     25 // When a heap snapshot is read into memory -- only fired
     26 // once per snapshot.
     27 actions.READ_SNAPSHOT_START = "read-snapshot-start";
     28 actions.READ_SNAPSHOT_END = "read-snapshot-end";
     29 
     30 // When a census is being performed on a heap snapshot
     31 actions.TAKE_CENSUS_START = "take-census-start";
     32 actions.TAKE_CENSUS_END = "take-census-end";
     33 actions.TAKE_CENSUS_ERROR = "take-census-error";
     34 
     35 // When a tree map is being calculated on a heap snapshot
     36 actions.TAKE_TREE_MAP_START = "take-tree-map-start";
     37 actions.TAKE_TREE_MAP_END = "take-tree-map-end";
     38 actions.TAKE_TREE_MAP_ERROR = "take-tree-map-error";
     39 
     40 // When requesting that the server start/stop recording allocation stacks.
     41 actions.TOGGLE_RECORD_ALLOCATION_STACKS_START =
     42  "toggle-record-allocation-stacks-start";
     43 actions.TOGGLE_RECORD_ALLOCATION_STACKS_END =
     44  "toggle-record-allocation-stacks-end";
     45 
     46 // When a heap snapshot is being saved to a user-specified
     47 // location on disk.
     48 actions.EXPORT_SNAPSHOT_START = "export-snapshot-start";
     49 actions.EXPORT_SNAPSHOT_END = "export-snapshot-end";
     50 actions.EXPORT_SNAPSHOT_ERROR = "export-snapshot-error";
     51 
     52 // When a heap snapshot is being read from a user selected file,
     53 // and represents the entire state until the census is available.
     54 actions.IMPORT_SNAPSHOT_START = "import-snapshot-start";
     55 actions.IMPORT_SNAPSHOT_END = "import-snapshot-end";
     56 actions.IMPORT_SNAPSHOT_ERROR = "import-snapshot-error";
     57 
     58 // Fired by UI to select a snapshot to view.
     59 actions.SELECT_SNAPSHOT = "select-snapshot";
     60 
     61 // Fired to delete a provided list of snapshots
     62 actions.DELETE_SNAPSHOTS_START = "delete-snapshots-start";
     63 actions.DELETE_SNAPSHOTS_END = "delete-snapshots-end";
     64 
     65 // Fired to toggle tree inversion on or off.
     66 actions.TOGGLE_INVERTED = "toggle-inverted";
     67 
     68 // Fired when a snapshot is selected for diffing.
     69 actions.SELECT_SNAPSHOT_FOR_DIFFING = "select-snapshot-for-diffing";
     70 
     71 // Fired when taking a census diff.
     72 actions.TAKE_CENSUS_DIFF_START = "take-census-diff-start";
     73 actions.TAKE_CENSUS_DIFF_END = "take-census-diff-end";
     74 actions.DIFFING_ERROR = "diffing-error";
     75 
     76 // Fired to set a new census display.
     77 actions.SET_CENSUS_DISPLAY = "set-census-display";
     78 
     79 // Fired to change the display that controls the dominator tree labels.
     80 actions.SET_LABEL_DISPLAY = "set-label-display";
     81 
     82 // Fired to set a tree map display
     83 actions.SET_TREE_MAP_DISPLAY = "set-tree-map-display";
     84 
     85 // Fired when changing between census or dominators view.
     86 actions.CHANGE_VIEW = "change-view";
     87 actions.POP_VIEW = "pop-view";
     88 
     89 // Fired when there is an error processing a snapshot or taking a census.
     90 actions.SNAPSHOT_ERROR = "snapshot-error";
     91 
     92 // Fired when there is a new filter string set.
     93 actions.SET_FILTER_STRING = "set-filter-string";
     94 
     95 // Fired to expand or collapse nodes in census reports.
     96 actions.EXPAND_CENSUS_NODE = "expand-census-node";
     97 actions.EXPAND_DIFFING_CENSUS_NODE = "expand-diffing-census-node";
     98 actions.COLLAPSE_CENSUS_NODE = "collapse-census-node";
     99 actions.COLLAPSE_DIFFING_CENSUS_NODE = "collapse-diffing-census-node";
    100 
    101 // Fired when nodes in various trees are focused.
    102 actions.FOCUS_CENSUS_NODE = "focus-census-node";
    103 actions.FOCUS_DIFFING_CENSUS_NODE = "focus-diffing-census-node";
    104 actions.FOCUS_DOMINATOR_TREE_NODE = "focus-dominator-tree-node";
    105 
    106 actions.FOCUS_INDIVIDUAL = "focus-individual";
    107 actions.FETCH_INDIVIDUALS_START = "fetch-individuals-start";
    108 actions.FETCH_INDIVIDUALS_END = "fetch-individuals-end";
    109 actions.INDIVIDUALS_ERROR = "individuals-error";
    110 
    111 actions.COMPUTE_DOMINATOR_TREE_START = "compute-dominator-tree-start";
    112 actions.COMPUTE_DOMINATOR_TREE_END = "compute-dominator-tree-end";
    113 actions.FETCH_DOMINATOR_TREE_START = "fetch-dominator-tree-start";
    114 actions.FETCH_DOMINATOR_TREE_END = "fetch-dominator-tree-end";
    115 actions.DOMINATOR_TREE_ERROR = "dominator-tree-error";
    116 actions.FETCH_IMMEDIATELY_DOMINATED_START = "fetch-immediately-dominated-start";
    117 actions.FETCH_IMMEDIATELY_DOMINATED_END = "fetch-immediately-dominated-end";
    118 actions.EXPAND_DOMINATOR_TREE_NODE = "expand-dominator-tree-node";
    119 actions.COLLAPSE_DOMINATOR_TREE_NODE = "collapse-dominator-tree-node";
    120 
    121 actions.RESIZE_SHORTEST_PATHS = "resize-shortest-paths";
    122 
    123 // Fired when the memory front is changed.
    124 actions.UPDATE_MEMORY_FRONT = "update-memory-front";
    125 
    126 /*** Census Displays ***************************************************************/
    127 
    128 const COUNT = Object.freeze({ by: "count", count: true, bytes: true });
    129 const INTERNAL_TYPE = Object.freeze({ by: "internalType", then: COUNT });
    130 const DESCRIPTIVE_TYPE = Object.freeze({ by: "descriptiveType", then: COUNT });
    131 const ALLOCATION_STACK = Object.freeze({
    132  by: "allocationStack",
    133  then: COUNT,
    134  noStack: COUNT,
    135 });
    136 const OBJECT_CLASS = Object.freeze({
    137  by: "objectClass",
    138  then: COUNT,
    139  other: COUNT,
    140 });
    141 const COARSE_TYPE = Object.freeze({
    142  by: "coarseType",
    143  objects: OBJECT_CLASS,
    144  strings: COUNT,
    145  scripts: {
    146    by: "filename",
    147    then: INTERNAL_TYPE,
    148    noFilename: INTERNAL_TYPE,
    149  },
    150  other: INTERNAL_TYPE,
    151  domNode: DESCRIPTIVE_TYPE,
    152 });
    153 
    154 exports.censusDisplays = Object.freeze({
    155  coarseType: Object.freeze({
    156    displayName: "Type",
    157    get tooltip() {
    158      // Importing down here is necessary because of the circular dependency
    159      // this introduces with `./utils.js`.
    160      const { L10N } = require("resource://devtools/client/memory/utils.js");
    161      return L10N.getStr("censusDisplays.coarseType.tooltip");
    162    },
    163    inverted: true,
    164    breakdown: COARSE_TYPE,
    165  }),
    166 
    167  allocationStack: Object.freeze({
    168    displayName: "Call Stack",
    169    get tooltip() {
    170      const { L10N } = require("resource://devtools/client/memory/utils.js");
    171      return L10N.getStr("censusDisplays.allocationStack.tooltip");
    172    },
    173    inverted: false,
    174    breakdown: ALLOCATION_STACK,
    175  }),
    176 
    177  invertedAllocationStack: Object.freeze({
    178    displayName: "Inverted Call Stack",
    179    get tooltip() {
    180      const { L10N } = require("resource://devtools/client/memory/utils.js");
    181      return L10N.getStr("censusDisplays.invertedAllocationStack.tooltip");
    182    },
    183    inverted: true,
    184    breakdown: ALLOCATION_STACK,
    185  }),
    186 });
    187 
    188 const DOMINATOR_TREE_LABEL_COARSE_TYPE = Object.freeze({
    189  by: "coarseType",
    190  objects: OBJECT_CLASS,
    191  scripts: Object.freeze({
    192    by: "internalType",
    193    then: Object.freeze({
    194      by: "filename",
    195      then: COUNT,
    196      noFilename: COUNT,
    197    }),
    198  }),
    199  strings: INTERNAL_TYPE,
    200  other: INTERNAL_TYPE,
    201  domNode: DESCRIPTIVE_TYPE,
    202 });
    203 
    204 exports.labelDisplays = Object.freeze({
    205  coarseType: Object.freeze({
    206    displayName: "Type",
    207    get tooltip() {
    208      const { L10N } = require("resource://devtools/client/memory/utils.js");
    209      return L10N.getStr("dominatorTreeDisplays.coarseType.tooltip");
    210    },
    211    breakdown: DOMINATOR_TREE_LABEL_COARSE_TYPE,
    212  }),
    213 
    214  allocationStack: Object.freeze({
    215    displayName: "Call Stack",
    216    get tooltip() {
    217      const { L10N } = require("resource://devtools/client/memory/utils.js");
    218      return L10N.getStr("dominatorTreeDisplays.allocationStack.tooltip");
    219    },
    220    breakdown: Object.freeze({
    221      by: "allocationStack",
    222      then: DOMINATOR_TREE_LABEL_COARSE_TYPE,
    223      noStack: DOMINATOR_TREE_LABEL_COARSE_TYPE,
    224    }),
    225  }),
    226 });
    227 
    228 exports.treeMapDisplays = Object.freeze({
    229  coarseType: Object.freeze({
    230    displayName: "Type",
    231    get tooltip() {
    232      const { L10N } = require("resource://devtools/client/memory/utils.js");
    233      return L10N.getStr("treeMapDisplays.coarseType.tooltip");
    234    },
    235    breakdown: COARSE_TYPE,
    236    inverted: false,
    237  }),
    238 });
    239 
    240 /*** View States **************************************************************/
    241 
    242 /**
    243 * The various main views that the tool can be in.
    244 */
    245 const viewState = (exports.viewState = Object.create(null));
    246 viewState.CENSUS = "view-state-census";
    247 viewState.DIFFING = "view-state-diffing";
    248 viewState.DOMINATOR_TREE = "view-state-dominator-tree";
    249 viewState.TREE_MAP = "view-state-tree-map";
    250 viewState.INDIVIDUALS = "view-state-individuals";
    251 
    252 /*** Snapshot States **********************************************************/
    253 
    254 const snapshotState = (exports.snapshotState = Object.create(null));
    255 
    256 /**
    257 * Various states a snapshot can be in.
    258 * An FSM describing snapshot states:
    259 *
    260 *     SAVING -> SAVED -> READING -> READ
    261 *                       ↗
    262 *              IMPORTING
    263 *
    264 * Any of these states may go to the ERROR state, from which they can never
    265 * leave (mwah ha ha ha!)
    266 */
    267 snapshotState.ERROR = "snapshot-state-error";
    268 snapshotState.IMPORTING = "snapshot-state-importing";
    269 snapshotState.SAVING = "snapshot-state-saving";
    270 snapshotState.SAVED = "snapshot-state-saved";
    271 snapshotState.READING = "snapshot-state-reading";
    272 snapshotState.READ = "snapshot-state-read";
    273 
    274 /*
    275 * Various states the census model can be in.
    276 *
    277 *     SAVING <-> SAVED
    278 *       |
    279 *       V
    280 *     ERROR
    281 */
    282 
    283 const censusState = (exports.censusState = Object.create(null));
    284 
    285 censusState.SAVING = "census-state-saving";
    286 censusState.SAVED = "census-state-saved";
    287 censusState.ERROR = "census-state-error";
    288 
    289 /*
    290 * Various states the tree map model can be in.
    291 *
    292 *     SAVING <-> SAVED
    293 *       |
    294 *       V
    295 *     ERROR
    296 */
    297 
    298 const treeMapState = (exports.treeMapState = Object.create(null));
    299 
    300 treeMapState.SAVING = "tree-map-state-saving";
    301 treeMapState.SAVED = "tree-map-state-saved";
    302 treeMapState.ERROR = "tree-map-state-error";
    303 
    304 /*** Diffing States ***********************************************************/
    305 
    306 /*
    307 * Various states the diffing model can be in.
    308 *
    309 *     SELECTING --> TAKING_DIFF <---> TOOK_DIFF
    310 *                       |
    311 *                       V
    312 *                     ERROR
    313 */
    314 const diffingState = (exports.diffingState = Object.create(null));
    315 
    316 // Selecting the two snapshots to diff.
    317 diffingState.SELECTING = "diffing-state-selecting";
    318 
    319 // Currently computing the diff between the two selected snapshots.
    320 diffingState.TAKING_DIFF = "diffing-state-taking-diff";
    321 
    322 // Have the diff between the two selected snapshots.
    323 diffingState.TOOK_DIFF = "diffing-state-took-diff";
    324 
    325 // An error occurred while computing the diff.
    326 diffingState.ERROR = "diffing-state-error";
    327 
    328 /*** Dominator Tree States ****************************************************/
    329 
    330 /*
    331 * Various states the dominator tree model can be in.
    332 *
    333 *     COMPUTING -> COMPUTED -> FETCHING -> LOADED <--> INCREMENTAL_FETCHING
    334 *
    335 * Any state may lead to the ERROR state, from which it can never leave.
    336 */
    337 const dominatorTreeState = (exports.dominatorTreeState = Object.create(null));
    338 dominatorTreeState.COMPUTING = "dominator-tree-state-computing";
    339 dominatorTreeState.COMPUTED = "dominator-tree-state-computed";
    340 dominatorTreeState.FETCHING = "dominator-tree-state-fetching";
    341 dominatorTreeState.LOADED = "dominator-tree-state-loaded";
    342 dominatorTreeState.INCREMENTAL_FETCHING =
    343  "dominator-tree-state-incremental-fetching";
    344 dominatorTreeState.ERROR = "dominator-tree-state-error";
    345 
    346 /*** States for Individuals Model *********************************************/
    347 
    348 /*
    349 * Various states the individuals model can be in.
    350 *
    351 *     COMPUTING_DOMINATOR_TREE -> FETCHING -> FETCHED
    352 *
    353 * Any state may lead to the ERROR state, from which it can never leave.
    354 */
    355 const individualsState = (exports.individualsState = Object.create(null));
    356 individualsState.COMPUTING_DOMINATOR_TREE =
    357  "individuals-state-computing-dominator-tree";
    358 individualsState.FETCHING = "individuals-state-fetching";
    359 individualsState.FETCHED = "individuals-state-fetched";
    360 individualsState.ERROR = "individuals-state-error";