mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-25 11:15:34 +00:00
46ec4d3cc4
This patch overhauls the memory tool's frontend from being in a state of viewing a snapshot's census (the implicit default) or viewing a census diff (a special cased kind of thing) to one of three recognized view states: (1) census, (2) diffing, or (3) dominator tree. The logic surrounding our current view is more explicit now. View option (3) is the new one, whose introduction required those clean ups. Dominator trees are too large to render in full, all at once. Instead, we eagerly load and render a few levels deep and then incrementally fetch further subtrees as their parents are expanded in the UI. This means that we get new Tree component instances across incremental fetches. Before this commit, the Tree component stored a bunch of state internally (in this.state rather than this.props) and we would lose focus and expansion state across incremental fetches. This internal state has been pulled out and made as explicit props, which are now managed by actions and reducers just like the rest of the state. --HG-- rename : devtools/client/memory/components/tree-item.js => devtools/client/memory/components/census-tree-item.js
20 lines
665 B
JavaScript
20 lines
665 B
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
"use strict";
|
|
|
|
const { actions, dominatorTreeBreakdowns } = require("../constants");
|
|
const DEFAULT_BREAKDOWN = dominatorTreeBreakdowns.coarseType.breakdown;
|
|
|
|
const handlers = Object.create(null);
|
|
|
|
handlers[actions.SET_DOMINATOR_TREE_BREAKDOWN] = function (_, { breakdown }) {
|
|
return breakdown;
|
|
};
|
|
|
|
module.exports = function (state = DEFAULT_BREAKDOWN, action) {
|
|
const handler = handlers[action.type];
|
|
return handler ? handler(state, action) : state;
|
|
};
|