我正在尝试向 Windows 上的 Chromium 源代码添加自定义命令行选项,允许我使用像
chrome.exe --my-custom-flag=value
这样的标志运行浏览器。目标是在 Chromium 代码库中的任何位置访问该值。然而,到目前为止我的尝试都没有成功。
我尝试使用以下代码片段来读取 Chromium 源中的命令行值:
std::string value = base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII("my-custom-flag");
但是,这种方法并没有达到预期的效果。我还尝试了另一种方法,使用
CommandLine::ForCurrentProcess()->HasSwitch()
方法来检查自定义标志是否存在,但它也不起作用。
我非常感谢任何关于如何正确实现和阅读 Chromium 源代码中的自定义命令行选项的建议或指导。预先感谢您的协助。
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
中,它将传播到渲染器进程。请注意,所有开关的定义都必须不以双破折号开头 --
。
https://stackoverflow.com/a/76470102/6766705
// function name -> void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer
switches::kMySwitch,
content/public/common/content_switches.cc
namespace switches {
const char kMySwitch[] = "my-switch";
content/public/common/content_switches.h
namespace switches {
CONTENT_EXPORT extern const char kMySwitch[];
ninja -C out/Default chrome
./Chromium --my-switch="123"