当前位置: 首页 > news >正文

Chromium CDP 开发(十二):为自己的Domain建立custom_config.json

引言

本章详细介绍了如何为自定义的 CDP Domain 创建 custom_config.json 文件,并通过修改 BUILD.gn 文件来确保自定义的配置文件参与编译。我们通过 inspector_protocol_generate 配置段自动生成自定义 Domain 的头文件和实现文件,并成功将其集成到构建系统中。通过这些步骤,开发者能够实现自定义 CDP 功能的配置与构建,确保自定义 Domain 的指令和事件能够在 Chromium 中正常运行。

创建 custom_config.json 文件

  1. 打开目录

使用文件浏览器或终端,导航到 chrome\browser\devtools 目录。确保在该目录中创建新文件,以便于组织和管理 DevTools 相关的配置文件。

  1. 创建 JSON 文件

在该目录下,创建一个新的文件,命名为 custom_config.json。确保文件扩展名为 .json,以便于后续解析和使用。

  1. 编写配置内容

打开 custom_config.json 文件,按照以下结构编写内容,以配置新定义的 Domain 和指令:

我们增加custom_config.json 代码

{"use_snake_file_names": true,"use_title_case_methods": true,"protocol": {"package": "chrome/browser/devtools/protocol","output": "protocol","namespace": [ "protocol" ],"options": [{"domain": "CustomCDP","include": ["cdpVersion"],"include_events": []}]},"lib": {"package": "chrome/browser/devtools/protocol","output": "protocol","protocol_traits": "third_party/inspector_protocol/crdtp/chromium/protocol_traits.h"},"crdtp": {"namespace": "crdtp"}
}

接下来我们需要增加 chrome\browser\devtools\BUILD.gn 来让我们的custom_config.json 参与编译

chrome\browser\devtools\BUILD.gn 的编辑

在处理custom_config.json相关的编译时不像pdl那般简单因为我们需要通过ninja 编译时产生许多CDP所需要的头文件和协议文件所以我们要在 chrome\browser\devtools\BUILD.gn 加入更复杂的内容

建立 inspector_protocol_generate 代码段

我们需要inspector_protocol_generate在 gen\chrome\browser\devtools\protocol 下生成我们的cdp handler 所需的头文件这里要注意的是gen\chrome\browser\devtools\protocol下生成的文件名是根据 Domain名字自动生成的比如我们的Domain名是 CustomCDP那么对应的名字就是custom_cdp.h 这里在写gn和实现时都要注意

inspector_protocol_generate("protocol_generated_sources_custom") {inspector_protocol_dir = _inspector_protocolvisibility = [ ":*" ]  # Only targets in this file can depend on this.deps = [ ":concatenate_protocols" ]out_dir = target_gen_dir#配置文件config_file =  "custom_config.json"use_embedder_types = trueprotocol_path = rebase_path(_concatenated_protocol_path, root_build_dir)config_values = [ "protocol.path=$protocol_path" ]inputs = [_concatenated_protocol_path,"custom_config.json"]outputs = [#这里注意文件名要根据自己定义的domain来"protocol/custom_cdp.cc","protocol/custom_cdp.h",]}

然后我们需要把这个 protocol_generated_sources_custom_cdp 加入到编译所需的依赖里

我们需要找到 static_library("devtools") 配置段然后再找到对应的deps位置加入 protocol_generated_sources_custom_cdp

这样可以确保我们在编译浏览器时这部分的配置会产生对应的协议头文件生成

然后这里我们还要加入这个部分

因为 protocol_generated_sources_custom_cdp 只是会帮助你生成gen\chrome\browser\devtools\protocol 下的头文件但是对于gn系统来说这些文件并没有被加入到编译的tree里所以在此处吧这些文件路径重新加入到sources 这样确保生成出来的.h文件和.cc文件能正确加入编译

总结

本章详细介绍了如何为自定义的 CDP Domain 创建 custom_config.json 文件,并通过修改 BUILD.gn 文件来确保自定义的配置文件参与编译。我们通过 inspector_protocol_generate 配置段自动生成自定义 Domain 的头文件和实现文件,并成功将其集成到构建系统中。通过这些步骤,开发者能够实现自定义 CDP 功能的配置与构建,确保自定义 Domain 的指令和事件能够在 Chromium 中正常运行。

http://www.lryc.cn/news/520632.html

相关文章:

  • 【Vue】全局/局部组件使用流程(Vue2为例)
  • Vue.js组件开发详解
  • 解决:ubuntu22.04中IsaacGymEnv保存视频报错的问题
  • 深度学习camp-第J7周:对于ResNeXt-50算法的思考
  • java: 错误: 无效的源发行版:17解决办法
  • Docker 安装开源的IT资产管理系统Snipe-IT
  • Go语言封装加解密包(AES/DES/RSA)
  • sql server 对 nvarchar 类型的列进行 SUM() 运算
  • java中json字符串键值获取
  • MPLS原理及配置
  • 口碑很好的国产LDO芯片,有哪些?
  • 【流程设计】类似钉钉的流程设计功能样式demo
  • ChatGPT入门之文本情绪识别:先了解LSTM如何处理文字序列
  • 测试开发之面试宝典
  • 399. 除法求值【 力扣(LeetCode) 】
  • 算法日记1:洛谷p2678跳石头(二分答案)
  • Unity shader中真的可以动态关闭Stencil Test吗?
  • YOLOv9改进,YOLOv9自研检测头融合HyCTAS的Self_Attention自注意力机制,2024,适合目标检测、分割任务
  • 计算机网络 (36)TCP可靠传输的实现
  • Git版本控制 - 创建使用Repository
  • MySQL —— 在CentOS9下安装MySQL
  • LeetCode 热题 100_腐烂的橘子(52_994_中等_C++)(图;广度优先遍历(队列))
  • Nginx 可观测性最佳实践
  • LabVIEW光流跟踪算法
  • Jira用例自动去除summary重复用例
  • 基于openEuler22.03SP4部署Prometheus+Grafana
  • 泛目录和泛站有什么差别
  • css 布局及动画应用(flex+transform+transition+animation)
  • springboot vue uniapp 仿小红书 1:1 还原 (含源码演示)
  • lombok在高版本idea中注解不生效的解决