From f0273cd5b4e8e50977c1c114e20e3fbc9b8be582 Mon Sep 17 00:00:00 2001 From: Kean Mariotti Date: Wed, 11 May 2022 07:23:29 +0000 Subject: [PATCH] Fix Chips missing on SF/WM traces when "Show Diff" toggled Test: yarn run test Fixes: 231924100 Change-Id: I1923b01e0841282fb27757b5c48ec5b3c76cb24a --- tools/winscope/spec/DiffSpec.js | 24 ++++++++++++++- tools/winscope/spec/utils/tree.js | 50 ++++++++++++++++++++++++++++++- tools/winscope/src/utils/diff.js | 3 ++ 3 files changed, 75 insertions(+), 2 deletions(-) diff --git a/tools/winscope/spec/DiffSpec.js b/tools/winscope/spec/DiffSpec.js index eb767fa6d..521e65921 100644 --- a/tools/winscope/spec/DiffSpec.js +++ b/tools/winscope/spec/DiffSpec.js @@ -1,5 +1,5 @@ import { DiffGenerator, DiffType } from "../src/utils/diff.js"; -import { Node, DiffNode, toPlainObject } from "./utils/tree.js"; +import { NodeBuilder, Node, DiffNode, toPlainObject } from "./utils/tree.js"; const treeOne = new Node({ id: 1 }, [ new Node({ id: 2 }, []), @@ -244,4 +244,26 @@ describe("DiffGenerator", () => { checkDiffTreeWithNoModifiedCheck(oldTree, newTree, expectedDiffTree); }); + + it("preserves node chips", () => { + const oldTree = new NodeBuilder().setId(1).setChildren([ + new NodeBuilder().setId(2).setChips(["CHIP2"]).build(), + new NodeBuilder().setId(3).build(), + ]).build(); + + const newTree = new NodeBuilder().setId(1).setChildren([ + new NodeBuilder().setId(2).setChips(["CHIP2"]).build(), + new NodeBuilder().setId(4).setChips(["CHIP4"]).build(), + ]).build(); + + const expectedDiffTree = toPlainObject( + new NodeBuilder().setId(1).setDiffType(DiffType.NONE).setChildren([ + new NodeBuilder().setId(2).setChips(["CHIP2"]).setDiffType(DiffType.NONE).build(), + new NodeBuilder().setId(3).setDiffType(DiffType.DELETED).build(), + new NodeBuilder().setId(4).setChips(["CHIP4"]).setDiffType(DiffType.ADDED).build(), + ]).build() + ); + + checkDiffTreeWithNoModifiedCheck(oldTree, newTree, expectedDiffTree); + }); }); \ No newline at end of file diff --git a/tools/winscope/spec/utils/tree.js b/tools/winscope/spec/utils/tree.js index 57e0ea7e9..da1959b22 100644 --- a/tools/winscope/spec/utils/tree.js +++ b/tools/winscope/spec/utils/tree.js @@ -1,3 +1,51 @@ +class NodeBuilder { + setId(id) { + this.id = id; + this.chips = []; + return this; + } + + setChildren(children) { + this.children = children; + return this; + } + + setChips(chips) { + this.chips = chips; + return this; + } + + setDiffType(diffType) { + this.diffType = diffType; + return this; + } + + build() { + var node = { + name: undefined, + stableId: undefined, + kind: undefined, + shortName: undefined + }; + + if ('id' in this) { + node.id = this.id; + } + + node.children = 'children' in this ? this.children : []; + + if ('chips' in this) { + node.chips = this.chips; + } + + if ('diffType' in this) { + node.diff = { type: this.diffType } + } + + return node; + } +} + class Node { constructor(nodeDef, children) { Object.assign(this, nodeDef); @@ -55,4 +103,4 @@ function toPlainObject(theClass) { } } -export { Node, DiffNode, ObjNode, ObjDiffNode, toPlainObject }; \ No newline at end of file +export { NodeBuilder, Node, DiffNode, ObjNode, ObjDiffNode, toPlainObject }; \ No newline at end of file diff --git a/tools/winscope/src/utils/diff.js b/tools/winscope/src/utils/diff.js index 76d70e58d..7449b5520 100644 --- a/tools/winscope/src/utils/diff.js +++ b/tools/winscope/src/utils/diff.js @@ -119,6 +119,9 @@ export class DiffGenerator { clone.kind = node.kind; clone.stableId = node.stableId; clone.shortName = node.shortName; + if ('chips' in node) { + clone.chips = node.chips.slice(); + } return clone; }