WebKit 近两周动态
更佳事件和新 API
两周内发生了很多事情。以至于我不得不跳过性能改进和 bug 修复,以保持这篇帖子的合理长度……让我们开始吧
- Chris Fleizach 开始构建支持 IndieUI 事件的基础设施。IndieUI 是一项新规范,它为用户输入产生的动作提供了抽象。
例如,使用 IndieUI,要响应用户滚动,你可以直接监听“scrollrequest”事件,而不是监听滚轮事件和按键事件(用于上翻页、下翻页、箭头等)。 - Benjamin Poulain (我!) 改变了事件时间戳的生成方式,使其更精确。
历史上,WebKit 在触摸/鼠标/键盘事件的时间戳上一直不准确。暴露给 JavaScript 的时间是事件在 WebKit 内部调度的时间,而不是事件由平台发出的时间。现在这个问题已经修复,WebKit 暴露了传入事件真实、精确的时间。 - Santosh Mahto 改变了媒体加载与页面加载事件之间的关系。在补丁之前,任何 <video> 和 <audio> 元素都会延迟加载事件,直到媒体开始加载或3秒无进展。对于带有 preload=”none” 的媒体元素,代码会在触发页面加载事件之前达到3秒延迟。更改后,<video> 和 <audio> 不再延迟页面的加载事件。
- Simon Fraser 更改了 screen.availWidth 和 screen.availHeight API,使其报告当前窗口的显示尺寸,而不是主显示器的尺寸。
- Chris Rogers 将 API WaveTable 重命名为 PeriodicWave,这遵循了 WebAudio 规范的最新更改。如果你正在使用 WaveTable,是时候更新你的代码了。
- Christophe Dumez 进行了一些重构,并将 WorkerGlobalScope 暴露给运行时,遵循了最新的 Web Workers 规范。新对象暴露了有用的全局事件处理程序,并允许你关闭 worker 的事件循环。
- Matthew Holden 为 Web Inspector 添加了一个不错的小功能;颜色可以用专用的取色器就地修改。
引擎工程
引擎方面有很多变化。我将简要介绍一些影响所有人的变化
- Renáta Hodován (正式) 宣布了 Fuzzinator,一个新的网页引擎模糊测试器。Renáta 已经报告了 Fuzzinator 发现的 bug 一段时间了,并承诺会写一篇博客文章来解释这个新的模糊测试器。
- Alex Christensen 正在为 WebKit 开发一个代码覆盖率工具。
- Anders Carlsson 废除了空终止 WTF::String 的概念。使用这些类型字符串的代码已经更新为使用 CString 或空终止的 UChar 向量 (方便地通过 String::charactersWithNullTermination() 创建)。
- Alex Christensen(在 Brent Fulgham 的审查支持下)也在 Windows 移植版上 致力于 支持 WebGL 的 工作 中。
- Mikhail Pozdnyakov 对 HashSet 和 HashMap 进行了一些迟来的重构。现在 find、contains 和 add 的模板参数顺序是“<translator, type>”,这意味着类型现在可以是隐式的,这非常棒。