Chromium项目相关
Chromium项目相关
Chromium 是一个开源浏览器项目,旨在为所有用户构建一种更安全、更快速、更稳定的方式来体验 Web。
自 Google 在 2008 年宣布 Chromium 项目以来,他们一直很高兴能够在开源 Web 浏览器的良好基础上进行构建,并为富 Web 平台的持续开发做出贡献。如今,Chromium 被全球数百个不同的项目使用,包括 Chrome 等大型浏览器、LG 的家用电子产品、Electron 等应用程序框架,甚至是 Bloomberg 终端和 SpaceX 太空舱控制软件等自定义应用程序。
Chromium项目官网
- Chromium 官方网站:https://www.chromium.org/ 这里是 Chromium 项目的核心信息源,提供了项目的介绍、开发文档、源码下载、开发流程等详细内容,对于想要深入了解 Chromium 架构、开发机制的人来说是必不可少的资源。
- https://www.chromium.org/chromium-projects/
- Getting Around the Chromium Source Code Directory Structure
- Multi-process Architecture
- How Chromium Displays Web Pages
- Out-of-Process iframes (OOPIFs)
- Chromium Blog
- https://www.chromium.org/Home/
下面是一个略显过时的Chromium依赖关系图。特别是WebKit 被 blink/renderer 所取代。较低的模块不能直接包含来自较高模块的代码(即内容不能包含来自 chrome 的头文件),但使用嵌入器 API 与之通信。

Chromium源代码
- chromium: https://source.chromium.org/chromium
- chromiumos: https://source.chromium.org/chromiumos


Chromium 源代码仓库:https://chromium.googlesource.com/chromium/src 可以直接访问 Chromium 的源代码,通过阅读代码能深入了解其内部实现细节。可以需要科学上网才能稳定的访问和下载。
Chromium源代码的目录结构如下:
- android_webview:为了与Android framework层对接,对content层的代码进行了封装;
- apps:Chrome packaged apps的代码,我们可以不用关注这部分;
- base:提供给所有子工程使用的通用代码,相当于是一个基础库的实现,例如字符串处理、智能指针等等,只有当代码需要共享给其他顶级目录工程时,才能添加到这里面;
- breakpad:google的一个用于处理程序奔溃的开源项目,它是直接从GoogleCode的svn拉过来的;
- build:所有工程共用的编译配置;
- cc:Chromium合成器的实现;
- chrome:Chromium浏览器;
- components:给content层调用的一些组件模块;
- content:content模块的实现,多进程沙盒浏览器的核心代码;
- devices:通用底层硬件api的跨平台抽象;
- ipc:IPC通信模块
- media:多媒体相关的模块
- net:为Chromium开发的一个网络库,在运行webkit下的test_shell时可以单独使用,可以参考chrome/common/net;
- out:编译生成的目录
- sandbox:沙箱项目,用来防止被黑客攻击的渲染器修改系统;
- skia:google为Android开发的图形库,直接从Android代码树中复制过来的,在ui/grx之后增加了一些对skia进行封装的类;
- sql:SQLite数据库方面的模块;
- testing:google开源测试工具GTest,用来进行单元测试
- third_party:一些第三方库,比如图片解码、压缩算法库,在chrome/third_party中也有一些chrome专用的第三方库,包括blink渲染引擎;
- ui/gfx:共享图形库,这是渲染chromium ui图形的基础;
ui/views : 进行ui开发的简单框架,提供了渲染、布局、事件处理机制。大部分的浏览器 ui 都基于这个框架来实现。这个目录下包含了基本对象,还有一些浏览器特定的对象位于chrome/browser/ui/views - url:google开源的URL解析和标准化库;
- V8:google开发的V8 JavaScript引擎,这是从google code的svn中直接拉取的。
华为维护的openharmony-tpc/chromium_chrome项目
GitCode上华为维护的openharmony-tpc/chromium_chrome开源仓,下载代码开始学习,如下图所示:



下载完后的chromium_chrome项目的master分支目录结构大致如下图所示:

Chrome和Chromium 官方资源
- Chrome 开发者文档:https://developer.chrome.com/docs/ 提供了关于 Chrome 浏览器各种特性和功能的开发文档,包括 Chrome 扩展开发、Web API 使用、性能优化等方面的内容。
- Chrome 官方博客:https://blog.chromium.org/ 会发布 Chrome 浏览器的最新功能、更新动态、安全公告等信息,有助于及时了解 Chrome 的发展方向和新特性。
- Chromium 开发者论坛:https://groups.google.com/a/chromium.org/g/chromium-dev
- Chromium docs
- Blink (Rendering Engine)
书籍和教程
-《Chromium 浏览器开发实战》:这本书详细介绍了 Chromium 的架构、编译、开发流程等内容,结合实际案例帮助读者掌握 Chromium 开发技术。
参考资料
- 怎样阅读 Chromium 源码?
- 在中国使用chromium镜像
- How Blink Works 中文译文
- How cc Works
- How cc works
- How Blink works
- Chromium网页加载过程简要介绍和学习计划
- 【Chromium系列】多进程架构
- Chromium Viz 浅析 - 介绍篇
- 【Chromium 系列】Renderer
- 【Chromium系列】Navigation
- Chrome浏览器引擎 Blink & V8
- Chromium源代码目录结构
- Chroium 源码目录结构分析(3):目录和模块总结(src根目录部分)
- Chromium的IPC消息发送、接收和分发机制分析
- Android WebView加载Chromium动态库的过程分析
- Chromium网页输入事件捕捉和手势检测过程分析
- Chromium网页滑动和捏合手势处理过程分析
- Chromium插件(Plugin)执行3D渲染的过程分析
- Chromium插件(Plugin)模块(Module)加载过程分析
- Chromium扩展(Extension)机制简要介绍和学习计划
- Chromium扩展(Extension)通信机制分析
- Chromium扩展(Extension)的Content Script加载过程分析
- Chromium网页DOM Tree创建过程分析
- Chromium为视频标签渲染视频画面的过程分析
- Chromium为视频标签创建播放器的过程分析
- Chromium分发输入事件给WebKit处理的过程分析
相关文章:
Chromium项目相关
Chromium项目相关 Chromium 是一个开源浏览器项目,旨在为所有用户构建一种更安全、更快速、更稳定的方式来体验 Web。 自 Google 在 2008 年宣布 Chromium 项目以来,他们一直很高兴能够在开源 Web 浏览器的良好基础上进行构建,并为富 Web 平…...
自动驾驶测试场景相关概念
自动驾驶测试场景 一、概念二、分类2.1、按照场景的抽象程度可分为:功能场景、逻辑场景、具体场景。2.2.、按功能划分2.3、 按环境复杂度2.3、按场景类型 三、要素四、挑战与趋势4.1、长尾场景覆盖4.2、伦理决策测试4.3、车路协同测试4.4、联邦学习驱动…...
给小白的oracle优化工具,了解一下
有时懒得分析或语句太长,可以尝试用oracle的dbms_sqldiag包进行sql优化, --How To Use DBMS_SQLDIAG To Diagnose Query Performance Issues (Doc ID 1386802.1) --诊断SQL 性能 SET ECHO ON SET LINESIZE 132 SET PAGESIZE 999 SET LONG 999999 SET SER…...
DMA发送全部历史记录数据到串口
背景 博主参与的项目中,有个读取全部历史记录的功能,如果下位机在主程序中将全部历史记录单纯地通过串口传输会比较占用cpu资源,影响主程序中别的功能。最后商量得出以下实现方案: 定义两个发送缓冲区DMATxbuf1和DMATxbuf2&…...
基因型—环境两向表数据分析——品种生态区划分
参考资料:农作物品种试验数据管理与分析 用于品种生态区划分的GGE双标图有两种功能图:试点向量功能图和“谁赢在哪里”功能图。双标图的具体模型基于SD定标和h加权和试点中心化的数据。本例中籽粒产量的GGE双标图仅解释了G和GE总变异的53.6%,…...
电路中如何计算电容容值大小
一个例题: 【电路中电容容值是怎么算出来的?】https://www.bilibili.com/video/BV1RQ4y1c7i1?vd_source3cc3c07b09206097d0d8b0aefdf07958...
c++中迭代器和指针有什么区别?
在 C 中,迭代器和指针虽然在某些场景下有相似的行为,但它们在设计目的、功能和使用场景上有本质区别。以下是详细对比和最佳实践: 一、核心区别对比表 特征指针迭代器本质原生数据类型,直接存储内存地址类对象,抽象容…...
GPT大语言模型与搜索引擎:技术本质与应用场景的深度解析
引言 在人工智能和自然语言处理(NLP)领域,GPT(Generative Pre-trained Transformer)大语言模型和搜索引擎是两个备受关注的技术。尽管它们都涉及到信息检索和生成,但它们在技术原理、应用场景和用户体验上…...
FreeRTOS-中断管理
实验目的 创建一个队列及一个任务,按下按键 KEY1 触发中断,在中断服务函数里向队列里发送数据,任务则阻塞接 收队列数据。 实验代码 实验结果 这样就实现了,使用中断往队列的发送信息,用任务阻塞接收信息...
计算机毕业设计SpringBoot+Vue.js音乐网站(源码+文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
更换k8s容器运行时环境为docker
更换k8s容器运行时环境为docker k8s-V1.24之后容器运行时默认是containerd,若想改为熟悉的docker作为运行时,需要做以下操作 在每个节点安装containerd、docker; 每个节点安装cri-docker; 调整kubelet配置并重启验证。 1.安装docker、con…...
知识图谱-资源网
知识图谱-资源网 http://openkg.cn/datasets-type/https://www.ownthink.com/knowledge.html...
CTF-web: Rust 的过程宏
Rust 的过程宏(Procedural Macros)是一种强大的元编程工具,允许你在编译时对代码进行操作和生成。与属性宏和派生宏不同,过程宏可以接收并处理任意 Rust 代码,生成新的代码片段。这里有一个简单的例子来说明 Rust 的过…...
小程序Three Dof识别 实现景区AR体验
代码工程 GitCode - 全球开发者的开源社区,开源代码托管平台 dof...
Windows 11 下正确安装 Docker Desktop 到 D 盘的完整教程
文章目录 Windows 11 在 D 盘正确安装 Docker Desktop 的完整教程**前言****准备工作****1. 手动创建 Docker 相关目录**(⚠️ **这一步非常重要**,否则会报错)**2. 下载 Docker Desktop 安装程序****3. 使用管理员权限打开终端** **安装 Doc…...
锐评当前主流的各大编程语言
喵~ 让本喵来爪爪锐评一波编程语言吧!(ฅ•ω•ฅ)✧ 🐍 Python “简单到能拿爪子写代码喵~” 但缩进强迫症克星!写起来像在撸猫,跑起来…有时候像猫主子突然打翻水杯(GIL锁警告)~ 库多到能埋人࿰…...
2.数据结构:1.Tire 字符串统计
1.Tire 字符串统计 #include<algorithm> #include<cstring> #include<iostream>using namespace std;const int N100010; int son[N][26];//至多 N 层,每一层至多 26 个节点(字母) int cnt[N];//字符串至多 N 个ÿ…...
2020 年英语(一)考研真题 笔记(更新中)
Section I Use of English(完型填空) 原题 Directions:Read the following text. Choose the best word (s) for each numbered blank and mark A, B, C or D on the ANSWER SHEET. (10 points) Even if families are less likely to si…...
YOLO11改进加入ResNet网络
文章目录 1.改进目的2.demo引入2.1代码2.2 结果展示2.3 BottleNeck详解 1.改进目的 原始YOLO11模型训练好以后,检测结果mAP结果很低,视频检测结果很差,于是想到改进网络,这里介绍改进主干网络。 2.demo引入 2.1代码 # File: 2…...
硬编码(三)经典变长指令一
我们在前两节的硬编码中学习了定长指令,接下来学习变长指令 对于定长指令,我们通过opcode便可知该指令的长度,但是对于变长指令却是不可知的。变长指令长度由opcode,ModR/M,SIB共同决定。变长指令通常在需要操作内存的…...
在线VS离线TTS(语音合成芯片)有哪些优势-AIOT智能语音产品方案
离线 TTS 存在语音质量欠佳、音色选择有限、语言支持单一更新困难、占用资源多、适应性差、难以个性化定制等痛点 01更新维护困难 由于是离线模式,难以及时获取最新的语音数据和算法更新,无法得到持续改进。 02占用本地资源 需要在设备本地存储较大的…...
【Spring Boot】掌握 Spring 事务:隔离级别与传播机制解读与应用
前言 ???本期讲解关于spring 事务传播机制介绍~~~ ??感兴趣的小伙伴看一看小编主页:-CSDN博客 ?? 你的点赞就是小编不断更新的最大动力 ??那么废话不多说直接开整吧~~ 目录 ???1.事务的隔离级别 ??1.1MySQL事务隔离级别 ??1.2Spring事务隔离…...
PySide(PyQT)重新定义contextMenuEvent()实现鼠标右键弹出菜单
在 PySide中,contextMenuEvent() 是 QWidget 类(以及继承自它的所有子类)的一个事件处理方法,主要用于处理上下文菜单事件,也就是当用户在控件上右键点击时触发的事件。 • 通过重新定义contextMenuEvent()来实现自定…...
Redis 持久化方式:RDB(Redis Database)和 AOF(Append Only File)
本部分内容是关于博主在学习 Redis 时关于持久化部分的记录,介绍了 RDB 和 AOF 两种持久化方式,详细介绍了持久化的原理、配置、使用方式、优缺点和使用场景。并对两种持久化方式做了对比。文章最后介绍了 Redis 持久化的意义并与其他常见的缓存技术做了…...
数据库测试
TPCH 22条SQL语句分析 - xibuhaohao - 博客园 TPCH模型规范、测试说明及22条语句 - zhjh256 - 博客园 TPC-DS 性能比较:TiDB 与 Impala-PingCAP | 平凯星辰 揭秘Oracle TPC-H性能优化:如何提升数据库查询速度,揭秘实战技巧与挑战 引言 T…...
< 自用文儿 > Gobuster 暴力扫描工具与 SecLists 安全测试词表集合
Ethice 道德问题 GFW 的保护下,很多的设备操作系统是停留在更老的版本,应用软件也是,因此很多的漏洞没有被修复。通讯没有使用加密,例如网页没有使用 HTTPS 网站很多。几乎是半裸的在网络上等着被食。 不做恶是下限。 环境&…...
上海市计算机学会竞赛平台2024年4月月赛丙组排序分数
排序分数 内存限制: 256 Mb时间限制: 1000 ms 题目描述 给定正整数 nn,请按从小到大的顺序输出所有大于00 且小于 11 的,分母不超过 nn 的最简分数,例如 n5n5 时,输出: 15, 14, 13, 25, 12, 35, 23, 34, 45…...
【大语言模型笔记进阶一步】提示语设计学习笔记,跳出框架思维,自己构建提示词
一、大语言模型应用场景 1. 文本生成 文本创作: 诗歌故事,剧本,推文帖子 摘要与改写: 长文本摘要与简化,多语言翻译与本地化 结构化生成: 表格,根据需求生成代码片段,API文档生成…...
软件工程应试复习(考试折磨版)
针对学校软件工程考试,参考教材《软件工程导论(第6版)》1-8章 学习的艺术:不断地尝试,我一定会找到高效用的方法,让学习变成一门艺术,从应试备考中解救出我的时间同胞们。 好嘞!既然…...
关于网页地图的坐标系
EPSG:4326地理坐标系 和 EPSG:3857Web 墨卡托投影 EPSG:4326 定义:EPSG:4326 是基于 WGS84 椭球的地理坐标系,使用经度(Longitude)和纬度(Latitude)表示地球上的位置。特点: 经度范围为 -180 …...
