WebKit 上周回顾
程序员编程程序

来自 WebKit 领域的问候!

我已几周未在此撰写博客,但现在我回来了!本周我们尝试一种新的博客格式。简洁而时尚。或许是这样的……

Simon Fraser 避免了一大堆工作。

152212 - 当 repaintContainer 是自身时,避免在 RenderBox::outlineBoundsForRepaint() 中执行工作
152213 - 避免额外调用一次 isSimpleContainerCompositingLayer()
152214 - 避免每次获取滚动条宽度时都调用 Objective-C
152235 - 不要在许多带有 -webkit-overflow-scrolling: touch 的元素上设置 z-index: 0

本周 Simon 带来了一系列不错的优化,再次证明懒惰(和性能分析)是值得的。

Christophe Dumez 对 SVG 对象模型进行了多项改进。

152120 - 更新 SVG 接口以停止继承 SVGURIReference 和 SVGTests
152156 - 将 SVGLangSpace 合并到 SVGElement 中
152299 - 移除 SVGStyledLocatableElement 类
152343 - 将 SVGTests 属性解析移动到 SVGGraphicsElement
152350 - 停止在 SVG 中继承 SVGFilterPrimitiveStandardAttributes
152404 - 让 SVGTextContentElement 继承 SVGGraphicsElement

这些更新使我们离最新的 WebIDL 和 SVG 规范更近了六步,特别是摆脱了 SVG 对象模型中的多重继承。代码共享的增加是一个受欢迎的副作用!

Bem Jones-Bey 添加了对矩形 shape-outside 的基本支持。

152122 - [CSS Shapes] 新定位模型:对矩形 shape-outside 的基本支持

Bem 写道:“根据最新的 CSS Shapes 规范编辑草案, shape-outside 不再影响浮动元素的定位。这是改变实现以反映此规范变化的第一步。”

Kangil Han 正在添加更多 isFooElement()/toFooElement() 辅助函数,并在 WebKit 中使用它们。

152149 - 采用 is/toHTMLInputElement 进行代码清理
152203 - 采用 is/toHTMLImageElement 进行代码清理
152208 - 采用 is/toHTMLOptionElement 进行代码清理
152211 - 采用 is/toHTMLOptGroupElement 进行代码清理
152218 - 采用 toHTMLTextAreaElement 进行代码清理
152290 - is/toHTMLStyleElement 的参数应使用 Element*
152353 - 添加 isFooElement 的重载函数
152387 - 采用 is/toHTMLMapElement 进行代码清理
152440 - 采用 is/toHTMLTableElement 进行代码清理

我非常喜欢这些。isFooElement() 看起来比 hasTagName(fooTag) 好看得多,并且 toFooElement() 在调试构建中嵌入了元素类型检查断言,而不是盲目地 static_cast

Geoff Garen 移除了一些影响 .innerText 的不必要的 O(n2) 行为。

152306 - plainText() 是 O(N^2)

任何移除 O(n2) 行为的人都会自动变得很棒,并在博客中得到提及。为 Geoff 喝彩!

Frédéric Wang 对我们的 MathML 支持进行了一些改进。

152235 - 添加对 mspace 元素的支持
152140 - 实现 MathML 长度的解析。

很高兴看到 MathML 得到一些关注。Frédéric 加油!

Andreas Kling(我!)让 CSS 解析器将拥有超过 8K 选择器的规则拆分为多个规则。

152453 - 回归(r125294):具有超过 8192 个选择器的样式规则可能导致样式损坏。

还在看吗?是时候进行一些无耻的自我推销了!我进行此更改是为了修复一个流行的浏览器扩展,它在引入 12 位选择器索引(以节省内存)时,其思维方式比我预期的要跳脱一些。

好的,本周就到这里,感谢您的收看!如果您对这篇博客有任何反馈/问题,可以在 Twitter 上联系我:@awesomekling