随笔分类 - Chromium
摘要:整理了一下之前写的cef推荐的关闭流程的文档 参考文档和实际demo来看,关闭流程离屏渲染和非离屏渲染时不同的,主要区别在于非离屏渲染有一个cef自建的窗口,非离屏渲染的退出和这个窗口密切相关。 CefBrowserHost::TryCloseBrowser 适用于窗口模式工作的CEF browse
阅读全文
摘要:Chromium的Timer机制实现是依据其Base库的Thread实现的 sequence_manager 持有 task queue task queue创建task runner TimerBase 纯虚类,抽象类型。 存放了task runner,应该是真正的用于跑定时任务的循环就存在这个类
阅读全文
摘要:OnceCallback OnceClosure RepeatingCallback RepeatingClosure Closure是给消息循环使用的内部任务,特点是返回值和参数都是void,不需要额外的运行环境,是一个完整的可以直接运行的闭包任务。 Callback是绑定闭包,用于绑定函数,自由
阅读全文
摘要:Thread 线程通用接口,跨平台封装,会创建并持有RunLoop对象 // base/threading/thread.h raw_ptr<RunLoop> run_loop_ = nullptr; // 这种写法可以抽离真正的消息循环逻辑到RunLoop中,并且保证这部分逻辑会随着线程主函数结束
阅读全文
摘要:2024/11/20 update mojo本质是Uinx Domain Socket(posix),在本机的进程间进行通信时不会经过网卡,可以少一次拷贝。在Windows上则是管道来实现的IPC。 mojom的用途 主要用于进程间通信,减少模块间依赖。 用接口描述语言书写mojom接口文件,经过编
阅读全文
摘要:本文翻译自 "https://bitbucket.org/chromiumembedded/cef/wiki/GeneralUsage" 介绍 cef是个基于chromium的开源项目。跟chromium项目不同,cef主要聚焦于 google chrome应用开发,cef集中于促进嵌入式浏览器在第
阅读全文
摘要:在cefsimple中,提到了一个cefapp的类型,这个类型是一个接口类,主要目的是提供获取三种handler的接口 GetBrowserProcessHandler 分别可以得到对应回调handler,如果继承了这三种handler就能在这些时机处理自己的回调业务,举个例子,例如 ,可以实现br
阅读全文
摘要:下面是cefsimple的入口代码,主要分成两个部分 进程判断 首先是初始化进程的代码,cef的进程结构和chromium类似,都是多进程共用代码。所以cef提供了一些函数来检测主进程(即browser进程)的流程和子进程的流程,以分别执行适合当前执行进程的逻辑。这段代码如下所示。 其中main_a
阅读全文
摘要:搜了搜cef相关的文章,内容大多是 如何下载源码,如何编译,还有一些源码剖析,但是很少有人说明对cef进行开发时如何保存修改,使用git进行修改后的版本控制。 cef是怎么做的? cef源码分为两个部分,一个部分是cef的代码,另一个部分是chromium源码,如果按照cef官网给的指引下载代码,一
阅读全文
摘要:代码模块与职责 所有的代码都在src目录下,这会导致一上手的时候无法快速划分模块,不便于理解,如果分类然后放文件夹就会好一些。 最关键的部分在于uCEFApplication,是和dll链接的部分 ,可以在这个文件内找到所有关于接口类型的声明,抽象了基本类型使用的接口,结构清晰。几乎是个功能都能找到
阅读全文
摘要:至少需要17GB的磁盘空间,不光有CEF源码,还会下载chromium源码。编译master分支的话,如果编译到chromium可能会需要windows sdk,windows sdk的版本可以参考下面提到的链接 ,windows sdk的下载可以用Visual Studio Installer或者
阅读全文
摘要:DRM(Direct Rendering Manager) DRM 由两个部分组成:一是 Kernel 的子系统,这个子系统对硬件 GPU 操作进行了一层框架封装。二是提供了一个 libdrm 库,里面封装了一系列 API,用来进行图像显示。 说到这里,其实这么理解最简单,你把你要画的东西交给DRM
阅读全文
摘要:前一段时间,运行在Chromium OS上的一个相机应用经常会自己崩溃,进程戛然而止,测试过程中发现使用的内存以肉眼可见的内存增长,当增长到1G左右,应用窗口突然消失,虽然原因不明,但是能猜到个大概,和内存的增长是有关系的。虽然应用所在的renderer进程是browser的子进程,但是并没有相关日
阅读全文
摘要:问题发现 在业务逻辑中发现有时使用 这个API创建出来的窗口无法使用其他的API,不仅其他 的API说 而且还有奇怪的警告和报错 第一个报警是 的报警,提示当前创建的窗口加载的页面可能是一个 查询了官方文档,发现如果需要创建一个 需要在 的`manifest`文件中添加如下声明 但是我并没有添加类似
阅读全文
摘要:本篇文档以gpu进程的创建和启动为例,讲述chormium如何启动一个browser进程的子进程 PS:本文使用的chromium代码版本为71 前言 GPU进程的启动时机是由browser进程负责的,browser进程会在进入message loop之前启动两个进程,先是启动zygote进程,然后
阅读全文
摘要:在编译chromium代码的过程中发现,官方推荐使用的版本是ubuntu16.04,但是这个版本的ubuntu比较老旧,一些库都比较老了,但是google自己用的部分却是挺新的,protobuf就是一个例子,在ubuntu16.04上默认安装的protobuf的版本是2.6.1,但是chromium
阅读全文
摘要:前一段时间在工作过程中遇到一个场景需要将http response中的request header中的cookie字段取出并进行解析,但是手头没有解析cookie的工具类,同时cookie的表现就是个字符串,于是想到手动分割 但是在C++的标准库中,并没有提供类似split的函数,在有些时候可能会很
阅读全文

浙公网安备 33010602011771号