Reuse panel frame composition in native XCUI shell
This commit is contained in:
@@ -202,4 +202,47 @@ TEST(NewEditorXCUIDemoPanelTest, ClearingHostedPreviewPresenterDoesNotRestoreImG
|
||||
EXPECT_EQ(stats.flushedCommandCount, 0u);
|
||||
}
|
||||
|
||||
TEST(NewEditorXCUIDemoPanelTest, ComposeFrameBuildsShellAgnosticFrameState) {
|
||||
auto previewPresenter = std::make_unique<RecordingHostedPreviewPresenter>();
|
||||
RecordingHostedPreviewPresenter* previewPresenterPtr = previewPresenter.get();
|
||||
auto canvasHost = std::make_unique<StubCanvasHost>();
|
||||
StubCanvasHost* canvasHostPtr = canvasHost.get();
|
||||
|
||||
XCUIDemoPanel panel(nullptr, std::move(previewPresenter));
|
||||
panel.SetCanvasHost(std::move(canvasHost));
|
||||
|
||||
const XCEngine::NewEditor::XCUIDemoPanelFrameComposition& composition =
|
||||
panel.ComposeFrame(XCEngine::NewEditor::XCUIDemoPanelFrameComposeOptions{
|
||||
512.0f,
|
||||
24.0f,
|
||||
true,
|
||||
false,
|
||||
false,
|
||||
123456u,
|
||||
"XCUIDemoTestCanvas"});
|
||||
|
||||
EXPECT_EQ(&composition, &panel.GetLastFrameComposition());
|
||||
ASSERT_NE(composition.frame, nullptr);
|
||||
EXPECT_TRUE(composition.hostedPreviewEnabled);
|
||||
EXPECT_FALSE(composition.nativeHostedPreview);
|
||||
EXPECT_FALSE(composition.hasHostedSurfaceDescriptor);
|
||||
EXPECT_FALSE(composition.showHostedSurfaceImage);
|
||||
EXPECT_EQ(composition.previewPathLabel, "hosted presenter");
|
||||
EXPECT_EQ(composition.previewStateLabel, "live");
|
||||
EXPECT_EQ(composition.inputSnapshot.timestampNanoseconds, 123456u);
|
||||
EXPECT_EQ(composition.canvasSession.canvasRect.width, canvasHostPtr->session.canvasRect.width);
|
||||
EXPECT_EQ(composition.canvasSession.canvasRect.height, canvasHostPtr->session.canvasRect.height);
|
||||
EXPECT_EQ(composition.input.canvasRect.width, canvasHostPtr->session.canvasRect.width);
|
||||
EXPECT_EQ(composition.input.canvasRect.height, canvasHostPtr->session.canvasRect.height);
|
||||
EXPECT_EQ(canvasHostPtr->beginCanvasCallCount, 1u);
|
||||
EXPECT_EQ(canvasHostPtr->endCanvasCallCount, 1u);
|
||||
EXPECT_FLOAT_EQ(canvasHostPtr->lastRequest.height, 512.0f);
|
||||
EXPECT_FLOAT_EQ(canvasHostPtr->lastRequest.topInset, 24.0f);
|
||||
EXPECT_STREQ(canvasHostPtr->lastRequest.childId, "XCUIDemoTestCanvas");
|
||||
EXPECT_EQ(previewPresenterPtr->presentCallCount, 1u);
|
||||
EXPECT_EQ(previewPresenterPtr->lastDebugName, "XCUI Demo");
|
||||
EXPECT_EQ(composition.previewStats.submittedDrawListCount, panel.GetLastPreviewStats().submittedDrawListCount);
|
||||
EXPECT_EQ(composition.previewStats.submittedCommandCount, panel.GetLastPreviewStats().submittedCommandCount);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
Reference in New Issue
Block a user