推进 INI 面板 shell handoff control-page mount workflow helper

This commit is contained in:
2026-06-15 12:23:51 +08:00
parent 298aa5e403
commit c3d9b90de1
9 changed files with 234 additions and 9 deletions

View File

@@ -89,6 +89,7 @@ TOOL_TABLE = browser-shell-tool.tbl
!launchApi?.getShellSessionHandoffMountDomReadiness ||
!launchApi?.renderShellSessionHandoffMountState ||
!launchApi?.mountShellSessionHandoff ||
!launchApi?.mountShellSessionHandoffFromControlPage ||
!launchApi?.isSupportedShellSessionHandoffPackage
) {
throw new Error("launch API namespace did not expose shell integration helpers");
@@ -287,21 +288,24 @@ TOOL_TABLE = browser-shell-tool.tbl
"ready",
"shell integration control-page session readiness",
);
const readyMountState = launchApi.getShellSessionHandoffPackageMountState(
controlPageApi[handoffSummary.handoffMethods.loadSessionState](),
);
const readySessionLoadState = controlPageApi[handoffSummary.handoffMethods.loadSessionState]();
const readyMountState = launchApi.getShellSessionHandoffPackageMountState(readySessionLoadState);
const readyMountDisplay = launchApi.getShellSessionHandoffPackageMountDisplayViewModel(readyMountState);
const readyMountRenderState = launchApi.getShellSessionHandoffPackageMountRenderState(readyMountState);
const readyMountWorkflow = launchApi.mountShellSessionHandoff({
renderState: readyMountRenderState,
const readyControlPageMountWorkflow = launchApi.mountShellSessionHandoffFromControlPage({
sessionLoadState: readySessionLoadState,
contract: externalMountDomContract,
documentRef: document,
});
const readyMountWorkflow = readyControlPageMountWorkflow.mountWorkflow;
const readyMountRenderResult = readyMountWorkflow.renderResult;
assertEqual(readyMountState.ready, true, "shell handoff package mount-state readiness");
assertEqual(readyMountState.sessionLoadState.phase, "ready", "shell handoff package mount-state ready session");
assertEqual(readyMountDisplay.detailText, "No blocking reasons", "shell handoff package ready mount display");
assertEqual(readyMountRenderState.statusLine, "Ready: No blocking reasons", "shell handoff package ready mount render-state");
assertEqual(readyControlPageMountWorkflow.phase, "ready", "external shell control-page mount workflow phase");
assertEqual(readyControlPageMountWorkflow.sessionLoadState.phase, "ready", "external shell control-page mount workflow session");
assertEqual(readyControlPageMountWorkflow.mountState.ready, true, "external shell control-page mount workflow state");
assertEqual(readyMountRenderResult.rendered, true, "external shell ready mount render result");
assertEqual(readyMountWorkflow.phase, "ready", "external shell ready mount workflow phase");
assertEqual(readyMountRenderResult.dataset.handoffReady, "true", "external shell ready mount render dataset");