Split legacy ImGui shell out of Application

This commit is contained in:
2026-04-05 15:28:42 +08:00
parent 6fd3ed434d
commit 050502cf78
9 changed files with 656 additions and 407 deletions

View File

@@ -319,4 +319,90 @@ TEST(ApplicationShellCommandBindingsTest, HostedPreviewRegistrationGuardsAllowTe
EXPECT_FALSE(Application::HasHostedPreviewPublishedTexture(registration));
}
TEST(ApplicationShellCommandBindingsTest, NativeHostedPreviewConsumptionLeavesHostedPathInDirectAppendMode) {
const auto consumption = Application::ResolveNativeHostedPreviewConsumption(
false,
false,
false,
"Pending",
"Waiting");
EXPECT_EQ(
consumption.surfaceState,
Application::NativeHostedPreviewSurfaceState::Disabled);
EXPECT_FALSE(consumption.queueRuntimeFrame);
EXPECT_TRUE(consumption.appendRuntimeDrawDataToShell);
EXPECT_FALSE(consumption.showSurfaceImage);
EXPECT_TRUE(consumption.drawRuntimeDebugRects);
EXPECT_TRUE(consumption.placeholderTitle.empty());
EXPECT_TRUE(consumption.placeholderSubtitle.empty());
EXPECT_EQ(
Application::ComposeNativeHostedPreviewStatusLine(consumption, "Runtime status"),
"Runtime status");
}
TEST(ApplicationShellCommandBindingsTest, NativeHostedPreviewConsumptionQueuesFrameWhileAwaitingFirstSurfacePublish) {
const auto consumption = Application::ResolveNativeHostedPreviewConsumption(
true,
false,
false,
"Native XCUI preview pending",
"Waiting for queued native preview output to publish into the shell card.");
EXPECT_EQ(
consumption.surfaceState,
Application::NativeHostedPreviewSurfaceState::AwaitingSubmit);
EXPECT_TRUE(consumption.queueRuntimeFrame);
EXPECT_FALSE(consumption.appendRuntimeDrawDataToShell);
EXPECT_FALSE(consumption.showSurfaceImage);
EXPECT_FALSE(consumption.drawRuntimeDebugRects);
EXPECT_EQ(consumption.placeholderTitle, "Native XCUI preview pending");
EXPECT_EQ(
consumption.placeholderSubtitle,
"Waiting for queued native preview output to publish into the shell card.");
EXPECT_EQ(
Application::ComposeNativeHostedPreviewStatusLine(consumption, "Runtime status"),
"Native surface awaiting submit | Runtime status");
}
TEST(ApplicationShellCommandBindingsTest, NativeHostedPreviewConsumptionDistinguishesWarmingFromLiveSurfaceStates) {
const auto warming = Application::ResolveNativeHostedPreviewConsumption(
true,
true,
false,
"Native layout preview pending",
"Waiting for queued native preview output to publish into the layout card.");
const auto live = Application::ResolveNativeHostedPreviewConsumption(
true,
true,
true,
"Native layout preview pending",
"Waiting for queued native preview output to publish into the layout card.");
EXPECT_EQ(
warming.surfaceState,
Application::NativeHostedPreviewSurfaceState::Warming);
EXPECT_TRUE(warming.queueRuntimeFrame);
EXPECT_FALSE(warming.appendRuntimeDrawDataToShell);
EXPECT_FALSE(warming.showSurfaceImage);
EXPECT_FALSE(warming.drawRuntimeDebugRects);
EXPECT_EQ(warming.placeholderTitle, "Native layout preview pending");
EXPECT_EQ(
Application::ComposeNativeHostedPreviewStatusLine(warming, "Layout status"),
"Native surface warming | Layout status");
EXPECT_EQ(
live.surfaceState,
Application::NativeHostedPreviewSurfaceState::Live);
EXPECT_TRUE(live.queueRuntimeFrame);
EXPECT_FALSE(live.appendRuntimeDrawDataToShell);
EXPECT_TRUE(live.showSurfaceImage);
EXPECT_TRUE(live.drawRuntimeDebugRects);
EXPECT_TRUE(live.placeholderTitle.empty());
EXPECT_TRUE(live.placeholderSubtitle.empty());
EXPECT_EQ(
Application::ComposeNativeHostedPreviewStatusLine(live, "Layout status"),
"Native surface live | Layout status");
}
} // namespace