blob: 1d85d3dc48e8a0a322f9ab0a43494db0a36e9ea3 [file] [log] [blame]
// Copyright 2021 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "src/ui/scenic/lib/view_tree/tests/utils.h"
#include <lib/syslog/cpp/macros.h>
namespace view_tree {
std::shared_ptr<view_tree::Snapshot> TwoNodeSnapshot() {
auto snapshot = std::make_shared<view_tree::Snapshot>();
snapshot->root = kNodeA;
auto& view_tree = snapshot->view_tree;
view_tree[kNodeA] = ViewNode{.parent = ZX_KOID_INVALID, .children = {kNodeB}};
view_tree[kNodeB] = ViewNode{.parent = kNodeA};
return snapshot;
}
std::shared_ptr<const view_tree::Snapshot> ThreeNodeSnapshot() {
auto snapshot = std::make_shared<view_tree::Snapshot>();
snapshot->root = kNodeA;
auto& view_tree = snapshot->view_tree;
view_tree[kNodeA] = ViewNode{.parent = ZX_KOID_INVALID, .children = {kNodeB}};
view_tree[kNodeB] = ViewNode{.parent = kNodeA, .children = {kNodeC}};
view_tree[kNodeC] = ViewNode{.parent = kNodeB};
return snapshot;
}
std::shared_ptr<const view_tree::Snapshot> FourNodeSnapshot() {
auto snapshot = std::make_shared<view_tree::Snapshot>();
snapshot->root = kNodeA;
auto& view_tree = snapshot->view_tree;
view_tree[kNodeA] = ViewNode{.parent = ZX_KOID_INVALID, .children = {kNodeB, kNodeC}};
view_tree[kNodeB] = ViewNode{.parent = kNodeA, .children = {kNodeD}};
view_tree[kNodeC] = ViewNode{.parent = kNodeA};
view_tree[kNodeD] = ViewNode{.parent = kNodeB};
return snapshot;
}
std::shared_ptr<const view_tree::Snapshot> SingleDepthViewTreeSnapshot(
uint64_t total_nodes, std::optional<bool> gfx_is_rendering) {
FX_DCHECK(total_nodes > 0) << "precondition";
auto snapshot = std::make_shared<view_tree::Snapshot>();
const float width = 1, height = 1;
snapshot->root = kNodeA;
auto& view_tree = snapshot->view_tree;
view_tree[kNodeA] = ViewNode{.parent = ZX_KOID_INVALID, .children = {}};
view_tree[kNodeA].bounding_box = {.min = {0, 0}, .max = {{width, height}}};
if (gfx_is_rendering.has_value()) {
view_tree[kNodeA].gfx_is_rendering = gfx_is_rendering;
}
for (zx_koid_t i = 0; i < total_nodes - 1; i++) {
// The minimum node_id for a child can be 2 since node_id of the root is 1.
view_tree[kNodeA].children.insert(i + 2);
view_tree[i + 2] = ViewNode{.parent = kNodeA};
view_tree[i + 2].bounding_box = {.min = {0, 0}, .max = {{width, height}}};
if (gfx_is_rendering.has_value()) {
view_tree[i + 2].gfx_is_rendering = gfx_is_rendering;
}
}
return snapshot;
}
} // namespace view_tree