tor-browser

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

test_action-toggle-inverted-and-refresh-01.js (2906B)


      1 /* Any copyright is dedicated to the Public Domain.
      2   http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 
      6 // Test that changing displays with different inverted state properly
      7 // refreshes the selected census.
      8 
      9 const {
     10  censusDisplays,
     11  censusState,
     12  viewState,
     13 } = require("resource://devtools/client/memory/constants.js");
     14 const {
     15  setCensusDisplayAndRefresh,
     16 } = require("resource://devtools/client/memory/actions/census-display.js");
     17 const {
     18  takeSnapshotAndCensus,
     19  selectSnapshotAndRefresh,
     20 } = require("resource://devtools/client/memory/actions/snapshot.js");
     21 const {
     22  changeView,
     23 } = require("resource://devtools/client/memory/actions/view.js");
     24 
     25 add_task(async function () {
     26  const front = new StubbedMemoryFront();
     27  const heapWorker = new HeapAnalysesClient();
     28  await front.attach();
     29  const store = Store();
     30  const { getState, dispatch } = store;
     31 
     32  dispatch(changeView(viewState.CENSUS));
     33 
     34  // Select a non-inverted display.
     35  dispatch(
     36    setCensusDisplayAndRefresh(heapWorker, censusDisplays.allocationStack)
     37  );
     38  equal(getState().censusDisplay.inverted, false, "not inverted by default");
     39 
     40  dispatch(takeSnapshotAndCensus(front, heapWorker));
     41  dispatch(takeSnapshotAndCensus(front, heapWorker));
     42  dispatch(takeSnapshotAndCensus(front, heapWorker));
     43 
     44  await waitUntilCensusState(store, s => s.census, [
     45    censusState.SAVED,
     46    censusState.SAVED,
     47    censusState.SAVED,
     48  ]);
     49  ok(true, "saved 3 snapshots and took a census of each of them");
     50 
     51  // Select an inverted display.
     52  dispatch(
     53    setCensusDisplayAndRefresh(
     54      heapWorker,
     55      censusDisplays.invertedAllocationStack
     56    )
     57  );
     58 
     59  await waitUntilCensusState(store, s => s.census, [
     60    censusState.SAVED,
     61    censusState.SAVED,
     62    censusState.SAVING,
     63  ]);
     64  ok(true, "toggling inverted should recompute the selected snapshot's census");
     65 
     66  equal(getState().censusDisplay.inverted, true, "now inverted");
     67 
     68  await waitUntilCensusState(store, s => s.census, [
     69    censusState.SAVED,
     70    censusState.SAVED,
     71    censusState.SAVED,
     72  ]);
     73 
     74  equal(getState().snapshots[0].census.display.inverted, false);
     75  equal(getState().snapshots[1].census.display.inverted, false);
     76  equal(getState().snapshots[2].census.display.inverted, true);
     77 
     78  dispatch(selectSnapshotAndRefresh(heapWorker, getState().snapshots[1].id));
     79  await waitUntilCensusState(store, s => s.census, [
     80    censusState.SAVED,
     81    censusState.SAVING,
     82    censusState.SAVED,
     83  ]);
     84  ok(true, "selecting non-inverted census should trigger a recompute");
     85 
     86  await waitUntilCensusState(store, s => s.census, [
     87    censusState.SAVED,
     88    censusState.SAVED,
     89    censusState.SAVED,
     90  ]);
     91 
     92  equal(getState().snapshots[0].census.display.inverted, false);
     93  equal(getState().snapshots[1].census.display.inverted, true);
     94  equal(getState().snapshots[2].census.display.inverted, true);
     95 
     96  heapWorker.destroy();
     97  await front.detach();
     98 });