如何在 Chromium 源代码中添加自定义命令行开关

How to add a custom command line switch in Chromium source code

提问人:Jaspreet Singh 提问时间:6/12/2023 更新时间:6/14/2023 访问量:273

问:

我正在尝试向 Windows 上的 Chromium 源代码添加自定义命令行选项,允许我使用类似 .目标是在 Chromium 代码库中的任何位置访问此值。然而,到目前为止,我的尝试都没有成功。chrome.exe --my-custom-flag=value

我尝试使用以下代码片段来读取 Chromium 源代码中的命令行值:

std::string value = base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII("my-custom-flag");

但是,这种方法没有产生预期的结果。我还尝试了另一种方法,使用该方法来检查是否存在自定义标志,但它也不起作用。CommandLine::ForCurrentProcess()->HasSwitch()

我将不胜感激有关如何在 Chromium 源代码中正确实现和读取自定义命令行选项的任何建议或指导。提前感谢您的帮助。

C++ 谷歌浏览器 Chromium

评论

0赞 273K 6/13/2023
您在哪种 chrome.exe 进程类型中调用?base::CommandLine::ForCurrentProcess()
0赞 Jaspreet Singh 6/14/2023
我试图在 chromium 源代码的 navigator.cc 文件中使用它。source.chromium.org/chromium/chromium/src/+/main:third_party/......我现在确实有使用 C++ 或 chromium 的经验,所以我从 chatgpt 找到了这种方法,但它没有按预期工作。

答:

0赞 273K 6/14/2023 #1

third_party/blink/renderer/core/frame/navigator.cc是 Chromium 渲染器进程的一部分,则尝试在渲染器中运行代码。命令行开关不会转发到渲染器进程,而是在--my-custom-flag

void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer(
    const base::CommandLine& browser_cmd,
    base::CommandLine* renderer_cmd);

将开关添加到该成员函数中的数组 kSwitchNames,它将传播到渲染器进程。请注意,所有开关都必须在没有开始双破折号的情况下定义。--