浏览器与 Web

从一次 OOPIF Touch Bug 到 Chromium 合入:我的首次上游协作复盘

赵裕(vimerzhao)

write by ai

这是一次完整的 Chromium 上游贡献记录:从一个跨 OOPIF 的触摸模拟问题开始,经过可复现 demo、Chromium Bug、Gerrit 评审、坐标契约重构、CQ 验证,最后由提交队列自动合入 main。最终 CL 是 Fix injected touch coordinates for OOPIF touch emulation,上游提交是 ec8beb01845b094c40f503eea848a0a7c7d4843c

它不是“写完代码、发一个 PR”就结束的过程。对我而言,更重要的收获是:上游协作的核心并不是说服 reviewer 接受一个补丁,而是共同把问题的边界、可复现证据和设计契约解释清楚。

Webkit在嵌入式设备渲染卡死现象的分析

赵裕(vimerzhao)
零、引言 所有乍见诡异、无法理解的现象背后,都有一系列我们尚未了解的细节,以及一个合理自洽的解释。 一、问题背景 我们的项目之前使用的上屏方式是基于LVGL改进的一套DRM封装,支持3缓冲,性能尚可,但通过

编译wpe-webkit-android的问题记录

赵裕(vimerzhao)
最近打算研下 GitHub - Igalia/wpe-android: WPE WebKit for Android。 git clone之后,对应的是main分支,commit id为: commit 53b3e13ef2c330e9335d9fdd542e5c42a559ca15 (HEAD -> main, tag: latest-preview, origin/main, origin/HEAD) Author: Adrian Perez de Castro <aperez@igalia.com> Date: Fri Sep 26 16:22:54 2025 +0300 [wpe] Update to WPE WebKit 2.50.0 Even when this is an update to a new release series, there are no differences from the packaging point of view, so

rk1126尝试运行chromium和webkit

赵裕(vimerzhao)
rk1126上跑着一个apt都没有的linux,由于一些研究需要,想让其运行下chromium和webkit,但最终失败了,简单记录下其过程: 大致有3个思路: 安装apt,再配置安装源,用apt安装 使用

WPEWebKit2.46调试环境

赵裕(vimerzhao)
以下讨论均基于`https://github.com/WebPlatformForEmbedded/WPEWebKit的 commit 38067c965fd39dbc4294c1be8f9394fb4c39d90c (HEAD -> wpe-2.46, origin/wpe-2.46, origin/HEAD) Author: Philippe Normand <philn@igalia.com> Date: Tue Nov 1 15:51:24 2022 +0000 pointer-lock WIP 编译 之前已经编过几次,最近一次:WebK

WebKit调试环境配置

赵裕(vimerzhao)
Overview 之前构建过一次WebKit,详见小记WebKit的构建,当时刚刚接触WebKit,很多做法不对,这次重新进行了构建,并搭建了一个调试环境,因此再次简单记录一下。 依赖 之前是在自己的远程开发机(Cent

小记WebKit的构建

赵裕(vimerzhao)
由于工作需要,计划研究下WebKit的Skia渲染后端,分析cmake容易发现,只有GTK/WPE这两个PORT会开启Skia的渲染后端。 之前从https://github.com/WebKit/We

Skia下SK_DEBUG内联的坑

赵裕(vimerzhao)
以下代码可能出现看起来诡异的错误 { auto data = image->encodeToData(); std::stringstream ss; ss << count++ << "_output.png"; if (data) { SkFILEWStream out(ss.str().c_str()); out.write(data->writable_data(), data->size()); } } 错误如下: * thread #3, name = 'RasterThread', stop reason = signal SIGILL: illegal operand * frame #0: 0x000000000c02edd4 Sxxxx`sk_abort_no_print() at SkMemory_malloc.cpp:51:5 frame #1: 0x000000000bbbee39 Sxxxx`SkNVRefCnt<SkData>::~SkNVRefCnt(this=0x00007fffafdff530)::'lambda'()::operator()() const at SkRefCnt.h:165:9 frame #2: 0x000000000bbbec35 Sxxxx`SkNVRefCnt<SkData>::~SkNVRefCnt(this=0x00007fffa8006090) at SkRefCnt.h:165:9 frame #3: 0x000000000bbbd8ba Sxxxx`SkData::~SkData(this=0x00007fffa8006090) at SkData.cpp:37:1 具体是因为这个ASSERT: ~SkNVRefCnt() { #ifdef SK_DEBUG int

webkit生成clang索引

赵裕(vimerzhao)
今天开始接触一个新的项目(基于webkit),第一步自然是搭建源码开发环境。 整个项目通过CMake组织,默认是生成VS工程,再用VS打开sln工程进行构建。这一步OK。 为了生成compile_comm

Skia升级小记m104->m122

赵裕(vimerzhao)
最近需要把Skia进行一次升级,首先查看下接口变动,See: RELEASE_NOTES.md 大部分都是接口的小调整,基本没什么难度,但注意m122的一个改动: SkFontMgr::RefDefault() has been deleted. Clients should instantiate and manage their own SkFontMgrs and use them to explicitly create SkTypefaces 找到这个改动的原因: Remove default SkFontMgr [305780908] - Skia 是