Firefox 192期技术日志:DevTools优化、WebDriver升级与性能提升详解

本文详细介绍了Firefox第192期更新的技术进展,涵盖了DevTools中CSS变量调试优化、WebDriver规范对齐、ESLint/StyleLint规则启用、Profile管理功能增强以及地址栏搜索改进等多项实质性技术内容。

亮点

  • 折叠标签组悬停预览功能已在 Firefox 145 中上线!
  • Nicolas Chevobbe 在规则视图中添加了一项功能,可折叠未引用的 CSS 变量声明 (#1719461)。
  • Alexandre Poirot [:ochameau] 在调试器中添加了一项设置,以启用自动代码美化打印功能 (#1994128)。
  • 改进了大量使用 CSS 变量的页面的性能。
  • Jared H 在应用菜单中添加了“复制此配置文件”按钮 (Bug 1992199)。

Firefox 团队之友

已解决的 Bug(不包括员工) 修复了多个 Bug 的志愿者

  • Khalid AlHaddad
  • Kyler Riggs [:kylr]

新贡献者(🌟 = 第一个补丁)

  • Alex Stout
  • Khalid AlHaddad
  • Jim Gong
  • Mason Abbruzzese
  • PhuongNam
  • Thomas J Faughnan Jr
  • Mingyuan Zhao [:MagentaManifold]

项目更新

扩展 / Web 扩展 WebExtensions 框架

  • 修复了一个问题,该问题曾阻止从附加到沙盒子框架的内容脚本调用动态导入时,解析 moz-extension ES 模块 – Bug 1988419。
  • 感谢 Spidermonkey 团队的 Yoshi Cheng-Hao Huang 调查并修复了这个影响内容脚本使用动态导入的问题。

附加组件管理器 & about:addons

  • 作为改进扩展按钮面板空状态工作的后续,从 Nightly 146 开始,Firefox 桌面版将在扩展按钮面板和 about:addons 中显示消息栏通知,以在 Firefox 以“故障排除模式”(也称为“安全模式”)运行且所有附加组件预计将被禁用时向用户高亮显示此情况,并附带一个指向详细描述故障排除模式的 SUMO 页面的“了解更多链接” – Bug 1992983 / Bug 1994074 / Bug 1727828。

DevTools

  • gopi 使规则视图能够格式化 grid-template-areas,即使其值无效 (#1940198)。
  • Emilio Cobos Álvarez 修复了在影子 DOM 中编辑已构建规则会导致它们消失的问题 (#1986702)。
  • Nicolas Chevobbe 修复了一个 Bug,该 Bug 会导致在共享样式表的 :host 规则中定义的变量,其 var() 工具提示中呈现错误数据 (#1995943)。
  • Julian Descottes 改进了当选择影子 DOM 元素时检查器的重新加载时间 (#1986704)。
  • Hubert Boma Manilla 修复了一个问题,即当在调试器中暂停时可能出现重复的内联预览 (#1994114)。
  • Nicolas Chevobbe [:nchevobbe] 在设置面板中公开了 devtools.inspector.showAllAnonymousContent (#1995333)。

WebDriver

  • Khalid 为 WebDriver Classic Python 客户端添加了专用的 switch_to_parent_frame 方法,并将现有的 switch_frame 方法重命名为 switch_to_frame,以与 WebDriver 规范保持一致。
  • Julian 更新了 network.getData 命令,使其能返回使用 data: 方案的请求的响应体。
  • Julian 修复了一个 Bug,该 Bug 会导致不同的请求重用相同的 ID,当使用针对特定请求的命令时可能导致意外行为(例如 network.provideResponse, network.getData 等)。
  • Sasha 更新了 emulation.setLocaleOverrideemulation.setTimezoneOverride 命令的重置行为,以与规范变更保持一致。通过此次更新,当调用这些命令来重置例如一个浏览上下文的覆盖时,仅会重置此覆盖,并且如果存在与此浏览上下文相关的用户上下文设置的覆盖,则将应用该覆盖。

代码检查、文档和工作流

ESLint

  • 我们正在努力在整个代码树中推出可自动修复的 JSDoc 规则。目的是减少在推出时被禁用的规则数量,并简化在新区域启用 JSDDoc 规则的过程。
  • jsdoc/no-bad-blocks 现已启用。
    • JSDoc 注释要求在开头有两个星号,如果看起来应该是一个 JSDoc 注释(例如有 @ 符号)但只有一个星号,则会引发问题。
  • jsdoc/multiline-blocks 也已启用。
    • 这主要用于保持多行注释的布局一致性,使注释文本不从第一行开始,也不在最后一行结束。这也有助于自动修复其他规则。

StyleLint

  • 启用了更多规则 – 背景颜色令牌、空间令牌、文本颜色令牌、盒阴影令牌。
  • 添加了一条新规则,以防止在 toolkit/ 中使用 browser/ 的 css 文件。

迁移改进

  • 由于微软已于 2022 年停止支持 IE(独立的浏览器,非兼容模式),我们现在已默认禁用 IE 迁移工具。我们将让它继续发布,然后开始完全移除支持的工作。
  • 为了帮助用户从 Windows 10 迁移数据,我们重启了备份工作,并已修复了许多问题:
    • 如果用户在备份前是默认配置文件,现在还原时会保留用户的默认配置文件,并且之前的配置文件会被重命名为 old-[profile name] 以作区分。这可以防止在还原后出现意外的启动配置文件,并使在配置文件管理器中进行回滚变得一目了然。
    • 还原文件选择器(还原模态框和 about:welcome 还原)现在会在检测到的备份位置打开,减少了导航摩擦和错误。
    • about:preferences 中的主要 CTA 标签在启用后会立即正确更新(“管理备份” → “关闭备份”),使 UI 状态与功能保持一致。
    • 在启用备份之前,“立即备份”按钮是隐藏的,避免了一个无法执行的操作,并引导用户按照正确的设置顺序操作。
    • fxbackup 添加了企业策略首选项,使管理员能够在 Windows/macOS/Linux 上为托管用户强制执行/锁定备份的可用性和行为。
    • 更新了 about:preferences 中的错误和警告横幅,以符合规范,提供更清晰的状态和故障消息。
    • 备份 HTML 存档支持链接现在指向正确的文档。
    • 文案更新明确了备份中包含的 cookie 数据类型,改善了用户期望和隐私透明度。

新标签页

  • 我们于 10 月 20 日成功将新标签页版本 145.1.20251009.134757 训练跳跃至发布渠道的 100%!
  • 新标签页默认设置和新鲜度:当 browser.newtabpage.activity-stream.discoverystream.sections.enabled 更改时,DiscoveryStream 缓存现在会过期,因此切换布局能立即更新内容。首次运行显示的占位符少得多,改善了感知加载速度。通过根据新标签页附加组件版本对 about:home 启动缓存进行键控,提高了启动正确性。
  • 无障碍功能、键盘和 RTL:修复了设置跳到天气前面的混乱焦点顺序。对于 Windows 高对比度模式,故事卡在悬停时不再消失,并获得更清晰的视觉效果。RTL 语言环境现在在故事卡之间获得直观的反向箭头键导航。
  • 天气功能启用和覆盖范围:启用流程现在会显示“启用当前位置”,并在上下文菜单中添加了“检测我的位置”操作;可用性扩展到更多地区,减少了设置摩擦并增加了覆盖率。
  • 视觉优化和正确性:标准化的不透明度加上悬停/模糊效果使故事卡感觉更灵敏;确保搜索栏在滚动时保持垂直居中。中等精致卡片现在可以显示更长的发布者名称,而不影响小卡片。
  • 壁纸和语言修复:现在能可靠加载缺失的自定义壁纸缩略图,并且如果远程设置壁纸失败,会显示友好的错误状态。语言切换器不再列出附加组件区域设置,恢复了预期的语言选择。

性能工具(即 Firefox Profiler)

  • 标记器工具提示现在有一个“筛选”按钮,可以快速将标记器图表筛选为类似的标记:

配置文件管理

  • 配置文件功能正在向 144 版本的所有非 Windows 10 用户推出,目前看起来情况良好。
  • Niklas 重构了 BackupService 以支持使用它来复制配置文件 (bug 1992203)。
  • Jared H 在 Windows 上添加了针对每个配置文件的桌面快捷方式 (bug 1958955),可通过 about:editprofile 页面上的切换开关使用。
  • Dave 修复了调试版本中的一个间歇性测试崩溃 (bug 1994849),该崩溃是由删除目录和尝试打开锁文件之间的竞态条件引起的。nsProfileLock::LockWithFcntl 现在在这种情况下返回警告而不是错误。

搜索和导航

新功能

  • 我们正在努力在地址栏中启用更好的搜索建议(链接到博客文章)。
  • Mandy 已向所有用户推出了 Perplexity 作为新引擎。
  • Google Lens 正在向 144 版本的用户推出,并附带额外的产品内演示。

地址栏

  • Daisuke 为航班状态建议实现了原型 @ 1990951 + 1994317。
  • Dale 一直在致力于启用统一信任面板 @ 1992940 + 1979713。
  • Dale 引入了 Option + 上/下作为打开统一搜索面板的键盘快捷键 @ 1962200。
  • Moritz 移除了“为此搜索添加关键字”的代码,因为它是已弃用的功能 @ 1995002。

搜索

  • Mandy 和 Drew 一直在致力于发布视觉搜索 + 消息功能 @ 1995645。

Storybook/可复用组件/Acorn 设计系统

  • <moz-message-bar> 现在支持使用 slot="message" 元素来容纳任意内容。
    • 理想情况下,这仍然应该是简短的内容,比如一条消息,而不是输入框等。
    • <moz-message-bar><span slot="message" data-l10n-id="my-message"><a data-l10n-name="link"></a></span></moz-message-bar>
    • 注意:如果你在使用 Lit,设置在 Fluent 元素 (data-l10n-name) 上的 @click 监听器等将不起作用,你需要将其附加到 data-l10n-id 元素或另一个父元素上。
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计