如何修改Chromium源码实现隐身模式默认启用扩展
Chromium 97.0.4692.71(macOS)源码修改实现扩展默认启用隐身模式
不用动浏览器设置页的前端代码,直接改扩展权限的底层存储默认逻辑即可,改完所有新安装/加载的扩展默认开启隐身访问权限,用户后续仍可手动开关,不影响原有交互逻辑。
修改点1:调整扩展隐身权限的默认读取逻辑
定位源码文件:extensions/browser/extension_prefs.cc
找到IsIncognitoEnabled方法,将无配置时的默认返回值从false改为true,修改后代码片段参考:
bool ExtensionPrefs::IsIncognitoEnabled(const std::string& extension_id) const { const base::Value* value = GetExtensionPref(extension_id, kIncognitoAccess); if (!value) { // 原默认返回false(禁用),改为true默认启用 return true; } return value->GetInt() != kIncognitoForbidden; }
这里是权限判断的底层入口,所有场景下检查扩展是否允许隐身运行都会走这个方法,修改这里能覆盖绝大多数默认判断逻辑。
修改点2:覆盖扩展安装时的默认禁用写入逻辑
97版本在扩展安装完成的回调里,会强制给普通扩展写入隐身禁用的配置,会覆盖上面的默认读取逻辑,需要同步修改。
定位源码文件:chrome/browser/extensions/extension_service.cc
找到OnExtensionInstalled方法内给非组件扩展设置隐身权限的代码段,将默认写入的false改为true,参考片段:
if (!Manifest::IsComponentLocation(location) && !Manifest::IsExternalPolicyLocation(location)) { // 原参数为false默认禁用,改为true默认启用 extension_prefs->SetIsIncognitoEnabled(extension->id(), true); }
注意不要修改政策管控类扩展的逻辑,避免企业配置规则被破坏。
编译&验证注意事项(macOS环境)
- 修改完成后先清理out目录下对应编译目标的缓存,避免旧目标文件被链接导致修改不生效
- 按日常使用的Chromium编译参数出包即可,生成的Chromium.app安装任意扩展后,打开隐身窗口可直接看到扩展已生效,无需手动去设置页开启权限
- 该修改仅调整默认值,用户后续手动关闭某扩展的隐身权限后,配置会持久化到用户数据目录,优先级高于默认值,不影响用户自主选择
- 不要尝试只修改
chrome://extensions页面的开关默认选中状态,那只是UI层展示,不修改底层权限逻辑会出现开关显示开启、实际隐身窗口无法运行扩展的问题 - 如果设备有企业政策强制配置隐身模式扩展权限,政策规则优先级高于源码默认值,属于正常逻辑
内容的提问来源于stack exchange,提问作者x xx
相关产品推荐
相关产品推荐

