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

问题描述 投票:0回答:2

我正在尝试向 Windows 上的 Chromium 源代码添加自定义命令行选项,允许我使用像

chrome.exe --my-custom-flag=value
这样的标志运行浏览器。目标是在 Chromium 代码库中的任何位置访问该值。然而,到目前为止我的尝试都没有成功。

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

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

但是,这种方法并没有达到预期的效果。我还尝试了另一种方法,使用

CommandLine::ForCurrentProcess()->HasSwitch()
方法来检查自定义标志是否存在,但它也不起作用。

我非常感谢任何关于如何正确实现和阅读 Chromium 源代码中的自定义命令行选项的建议或指导。预先感谢您的协助。

c++ google-chrome chromium
2个回答
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
中,它将传播到渲染器进程。请注意,所有开关的定义都必须不以双破折号开头
--


0
投票

https://stackoverflow.com/a/76470102/6766705

  1. 将您的开关添加到该成员函数中的数组kSwitchNames
// function name -> void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer
switches::kMySwitch,
  1. content/public/common/content_switches.cc
namespace switches {
  
const char kMySwitch[] = "my-switch";

  1. content/public/common/content_switches.h
namespace switches {

CONTENT_EXPORT extern const char kMySwitch[];
  1. 编译
ninja  -C  out/Default chrome
  1. 打开铬
./Chromium --my-switch="123"
© www.soinside.com 2019 - 2024. All rights reserved.