Files
ElyOffice/tasks/reviews/C07.4-r1.md
T

14 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
FAIL
crates/ely-lok/src/ffi/document.rs:85 — 命令执行失败被当成成功,违反 LOK-02 和“出错就暴露”。postUnoCommand 关闭完成通知,events.rs 也过滤 UNO_COMMAND_RESULT,worker/input.rs:99 随即返回 OK。实测 Worker::run(&doc, "format.style", &["ElyMissingStyle_034859", "ParagraphStyles"]) 返回 Ok(()),样式仍是 Default Paragraph Style;LokView 的 LokError 订阅者也收到零个错误。在临时副本中仅开启完成通知,同一内核明确报告 .uno:StyleApply 的 success=false。修复方向:接入并关联命令完成结果,将执行失败传至 client 和 LokError,加入失败命令的真实内核回归。
crates/ely-lok/src/commands.rs:77 — typed arguments 只检查数量,数值内容直接作为字符串转发,允许内核静默转换为兜底值。实测 run("format.size", &["junk"]) 返回 Ok(()),内核随后报告 FontHeight=0、ModifiedStatus=true、Undo=enabled;错误输入已改变编辑状态。修复方向:按映射中的参数类型校验数值及有效范围,client/view 排队前和 worker 执行前拒绝非法参数;回归断言错误可见且文档状态保持原值。
crates/ely-lok/src/worker.rs:226 — 启用 a11y 后遗漏初始段落快照,首次打开文档时文本桥为空,违反 §7 尾段。载入现有 FODT、聚焦 LokView 并等待布局后,Events.a11y.text 仍为 "";在真窗口中连续四次读取系统 AX 树均得到 textarea value=。同一内核的 getA11yFocusedParagraph 已返回 content="Hello 世界"、position="0"。现有 AX 测试先编辑到 Z,掩盖了此路径。修复方向:启用后读取并发布初始内核文本状态,加入打开已有文档、直接聚焦和读取 AX 的回归。
crates/ely-lok/src/events.rs:82 — 事件过滤器丢弃 a11y 的单元格和对象文本回调(67–69),使正常导航中的文本桥缺失。载入现有 FODS,方向键从 A1 移至 B1 再返回 A1,内核发送 callback 69:cell="1"、action="create"、name="A1"、text="Hello 世界",poll_events 返回的 a11y.text 仍为空;render.rs:27 将此空值交给辅助技术。修复方向:显式处理这些回调中的 text、paragraph 和移除语义,把当前单元格或对象的内核文本传到视图;增加无需编辑的单元格导航回归。
crates/ely-lok/src/events/parse.rs:87 — a11y 位置使用无符号解析,内核的 -1 哨兵被忽略,取消选区后公开状态保留旧范围。实测输入 a 后全选得到 A11y.selection=(0,9),右方向键取消选区时内核发送 start="-1"、end="-1";同批次的 selection 矩形已为空,A11y.selection 仍为 (0,9)。该错误位于已导出的内核状态字段。修复方向:按 LOK 的有符号位置及 -1 语义建模,明确清理取消后的范围;加入全选→取消和段落切换回归。
crates/ely-lok/src/client/tests/commands.rs:27 — 命令状态用 contains(want) 验证,错误字号仍能通过核心映射测试,削弱 LOK-05/12 的交付证据。在临时副本中仅把 worker 收到的 FontHeight 参数 "18" 改成 "118",真实内核报告 FontHeight="118",every_mapped_command_reaches_the_kernel_and_reports_state 仍通过(1 passed);保存结果的现有断言也接受此错误。修复方向:按回调的实际格式精确比较状态值,使 18→118 变异触发测试失败。