Files
ElyOffice/tasks/reviews/C11.1-r3.md
T

12 lines
4.1 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
apps/ely-pdf/src/dialog.rs:15 — 密码提交也会触发 PromptDialog 的关闭回调,give_up 提前关闭 Doc,随后 on_submit 的 unlock 与关闭请求竞争,授权打开失败。复现:真窗口打开三页 AES-256 PDF,输入正确密码 secret 并回车,日志依次出现 `prompt dialog ...: sent`、`dialog ...: closed`、`known-locked.pdf: no document 1`,没有文档标签;真实 worker 对同一文件与密码返回解锁成功、页数 3。隔离键盘探针确认字段内容为 secret 后提交,实际标签数 0,预期 1;移除提交时的 Doc 关闭后该探针通过。现有密码队列测试直接调用取消函数,遗漏提交事件。修复方向:区分授权提交与取消的清理路径,提交时保留 Doc 至解锁和读取完成,取消时关闭 Doc,并覆盖正确密码、错误密码与排队文件的实际提交事件。
apps/ely-pdf/src/dialog.rs:16 — 连续密码框共用固定 `pdf-locked` 标识;第二轮延后建框后,新框可直接接替旧框的一帧,复用已经归还焦点的组件状态,第二个框失去键盘焦点,Esc 无法取消,违反 UX-03 与密码取消约定。复现:真窗口同时打开两个加密 PDF,第一次 Esc 后 AX 树出现第二个文件的密码框,第二次 Esc 后该框仍存在;点击其“取消”按钮才关闭。隔离探针 `review_esc_dismisses_each_queued_password_dialog` 同样得到 `Some(Doc(2))`,预期 None;密码框标识绑定字段实体后该探针通过。现有 `giving_up_from_the_dialog_itself_asks_the_next` 绕过 Esc 分发,只检查 dialog 状态。修复方向:每次授权请求建立独立的弹窗与焦点身份,覆盖连续两次 Esc 和第二个密码框直接键入、提交。
apps/ely-pdf/src/pages.rs:105 — 第二轮双页当前页判定仍只看纵向可见性,第 109 行按页对保留 current 时也忽略横向视口;左页已经完全滚出屏幕后,正在阅读右页的 current 仍指向左页,切换单页便显示错误页面。复现:两张 Letter 页设为双页、Zoom::Scale(4.0),横向滚动到右页左缘,仅右页可见;实际执行 page_view 后 current=0,预期 1。隔离探针 `review_two_page_scroll_tracks_the_visible_right_page` 失败;按两轴可见范围选择当前页后通过。现有右页回归通过 show 预设 current,遗漏横向滚动改变阅读页的路径。修复方向:当前页判定使用实际二维可见范围,仅在原 current 所属页仍可见时保留它,覆盖横向滚动后切换模式。
apps/ely-pdf/src/pages.rs:100 — 跳转总把横向偏移重置为零,放大的双页布局中右页完全在视口外;第二轮保留右页 current 的修复使页码正确,目标页仍没有显示,违反 PDF-01 的阅读跳转。复现:两张 Letter 页设为双页、Zoom::Scale(4.0),执行 show(1,0)(PageDown 与搜索跳转共用此路径)并绘制;实际 current=1,目标页范围 x=2480–4928,视口范围 x=0–1920,屏上仍是左页。隔离探针 `review_two_page_zoom_jump_puts_the_target_on_screen` 失败;跳转时将目标页横向移入视口后通过。修复方向:跳转同时计算横纵偏移,使目标页或命中位置进入实际视口,覆盖放大双页下的右页翻页、搜索与书签跳转。
apps/ely-pdf/src/pages.rs:125 — 横向图块上界把视口右边缘作为包含端点再整除,边缘恰落在 512 设备像素边界时,会请求并缓存从边缘开始的整列屏外图块,第二轮“只留屏上的块”修复仍有边界遗漏。复现:Letter 页设 Zoom::Scale(4.0),2 倍设备比例,横向滚动使视口右缘等于页内第 9 列图块起点;真实 worker 与 page_view 探针记录图块左缘和视口右缘均为 2320 逻辑像素,缓存仍包含 tx=9,该列可见面积为零。`review_no_tile_starts_at_the_viewport_right_edge` 失败;改用半开区间的最后一个覆盖像素计算上界后通过。修复方向:按视口半开区间计算图块范围,对横纵两轴采用一致的边界规则,并覆盖视口边缘与图块边缘完全重合的滚动位置。