推进 INI 面板 control-page API manifest predicate

This commit is contained in:
2026-06-15 07:36:48 +08:00
parent 01d168e247
commit b3f131fa5f
8 changed files with 274 additions and 0 deletions

View File

@@ -62,6 +62,9 @@ TOOL_TABLE = browser-tool.tbl
const controlDoc = await loadControlPageFrame();
const controlPageApi = controlDoc.defaultView.linuxCncIniPanelControlPageApi;
const expectedControlPageApiMethods = [
"isSupportedControlPageApiManifest",
"getControlPageApiSchema",
"getControlPageApiManifest",
"getControlPageApiMethods",
"getControlPageContract",
"getControlView",
@@ -72,6 +75,9 @@ TOOL_TABLE = browser-tool.tbl
"renderControlPage",
];
if (
!controlPageApi?.isSupportedControlPageApiManifest ||
!controlPageApi?.getControlPageApiSchema ||
!controlPageApi?.getControlPageApiManifest ||
!controlPageApi?.getControlPageApiMethods ||
!controlPageApi?.getControlView ||
!controlPageApi?.getControlPageContract ||
@@ -94,6 +100,39 @@ TOOL_TABLE = browser-tool.tbl
"control page browser API namespace methods",
);
const controlPageApiSchema = controlPageApi.getControlPageApiSchema();
assertEqual(
controlPageApiSchema.manifestVersion,
1,
"control page API schema manifest version",
);
assertEqual(
controlPageApiSchema.fields.includes("readonlyStatusApiManifest"),
true,
"control page API schema readonly status field",
);
const controlPageApiManifest = controlPageApi.getControlPageApiManifest();
assertEqual(
controlPageApi.isSupportedControlPageApiManifest(controlPageApiManifest),
true,
"control page API supports manifest",
);
assertEqual(
controlPageApi.isSupportedControlPageApiManifest({ ...controlPageApiManifest, apiName: "other" }),
false,
"control page API rejects unsupported manifest name",
);
assertEqual(
controlPageApiManifest.methods.join(","),
expectedControlPageApiMethods.join(","),
"control page API manifest methods",
);
assertEqual(
controlPageApiManifest.readonlyStatusApiManifest.apiName,
"machine-session-readonly-status",
"control page API manifest readonly status API name",
);
const controlPageContract = controlPageApi.getControlPageContract();
assertEqual(
controlPageContract.methodNames.join(","),