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

4.1 KiB
Raw Blame History

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 失败;改用半开区间的最后一个覆盖像素计算上界后通过。修复方向:按视口半开区间计算图块范围,对横纵两轴采用一致的边界规则,并覆盖视口边缘与图块边缘完全重合的滚动位置。