Playwright
源码分析¶
- pageConfiguration:这个是在Tools/Playwright里创建,然后通过IPC共享的
- MainWindow
- 设置pageConfiguration,且创建新的prefs
- 因此注意pageConfiguration可以只设置一次,但是prefs必须每次都设置
- 或者在Source\WebKit\UIProcess\WebPreferences.cpp WebPreferences::createWithLegacyDefaults中设置默认的prefs(更推荐,但如果有很多外在因素被覆盖)
- 但其实最方便的方法是在设置处禁止设置自己配置的prefs,那些更新通知可以不用管
- 在哪里会new:
- ui new window
- inspector的页面创建,调用WebKitBrowserWindow::createPageCallback
- 设置pageConfiguration,且创建新的prefs
修改注意事项¶
- 注意上下文,配置应该保存到
WebsiteDataStore(一个BrowserContext的数据)
添加补丁¶
git apply browser_patches\webkit\patches\bootstrap.diff- 复制browser_patches\webkit\embedder\Playwright到Tools\Playwright
- 6340ce0d733541ce69d28 2026-4-28的构建有问题
Source\WebKit\UIProcess/WebPageProxy.cpp(2872,55): error: no member named 'SetDeviceOrientation' in namespace 'Messages::WebPage'- 修复方法:在Source\cmake\OptionsWin.cmake的
# Plawright begin处添加WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_ORIENTATION_EVENTS PRIVATE ON)
- 修复方法:在Source\cmake\OptionsWin.cmake的