chromium源代码情景分析
文章平均质量分 76
本专栏主要分析chromium的架构设计,通过调试分析和静态代码分析的手段了解chromium的执行流程及设计思想。
青城梦远
这个作者很懒,什么都没留下…
展开
-
chromium中HTTP网络资源的加载过程
chromium中HTTP网络资源的加载主要分两部分,一部分是缓存的网络资源,一部分是线上的网络资源。我们访问http网页的时候,首先访问httpcache,看缓存中的数据是否有效,如果有效,那么我们加载这个数据,如果无效,那么我们访问网络去重新加载资源,当然chromium中HTTP网络资源的加载并没有说起来这么简单,实际上架构设计还是比较复杂的。首先我们先看看HttpCache::Transac原创 2016-08-23 19:52:43 · 5876 阅读 · 1 评论 -
chromium中FTP网络资源的加载
FTP网络资源的加载render进程的处理我们在浏览器地址中输入ftp://ftp.sjtu.edu.cn/,来请求ftp数据。 此时windbg会中断,因为浏览器启动了一个render进程来渲染绘制。我们在render进程中如下下断 bu chrome_child!content::ResourceDispatcher::StartAsync这个函数由render进程调用,用来和browser进原创 2016-08-17 13:04:47 · 2288 阅读 · 0 评论 -
chromium中DNS主机地址解析过程——基于系统函数查询的方式
使用情景前面我们说过FTP协议的网络资源加载,其中在加载FTP资源的开始就要进行地址解析,对于ftp来说,它处理的状态是STATE_CTRL_RESOLVE_HOST。现在我们来分析一下chromium中是如何解析主机地址的,其代码主要位于net\dns中。 对于dns模块来说,对外的主要接口是HostResolverImpl::Resolve,我们从这个接口切入,来了解dns解析过程。上下文调用原创 2016-08-19 16:58:11 · 3445 阅读 · 2 评论 -
BrowserProcessSubThread
BrowserProcessSubThreadchromium WinMain中说到,浏览器主进程Browser的工作线程一部分,其类是BrowserProcessSubThread数据结构,那么我们来分析一下这个类。这个类继承自BrowserThreadImpl,而后者继承BrowserThread和base::Thread。base::Thread继承PlatformThread::Delega原创 2016-05-26 19:19:07 · 1984 阅读 · 0 评论 -
allocator
替换CRT堆处理函数base/allocator 中有个python文件用于处理VS中libcmt.lib静态库中堆的处理函数,将其obj文件去除,这对于我来说是一个比较新颖的思路,一直以为只有hook才是一个方案,没想到这种静态链接的方法也是不错的。原创 2016-05-26 19:23:08 · 737 阅读 · 0 评论 -
LazyInstance
chromium 延迟加载实例原创 2016-05-26 19:25:10 · 1121 阅读 · 0 评论 -
URLRequestFileJob
文件资源的加载过程URLRequestFileJob我们在浏览器的地址栏中输入一个文件的绝对路径,激发浏览器获取加载这个文件的内容。在net层,实际的请求是通过URLRequestFileJob来控制和加载文件的工作启动原创 2016-08-12 09:37:04 · 891 阅读 · 0 评论 -
IPC
创建子进程的主线程创建的时候会创建一个通信管道,用于和主进程进行通信。原创 2016-08-12 09:40:01 · 1073 阅读 · 0 评论 -
chromium中的同步机制
chromium中的同步机制我们可以在base\synchronization中看到chromium实现的同步机制,具体的有condition_variable, Lock,Spin_wait, Waitable_event,这几个比较常见的方式。LockLock的使用Lock的实现位于 base\synchronization\Lock*.* 中,在synchronization文件夹中,主要是实原创 2016-08-12 09:46:15 · 2099 阅读 · 0 评论 -
sql
链接数据库打开数据库chromium数据库使用的是sqlite进行存储数据的,必然在使用的时候需要一个包装,这个项目是sql,其位于chromium的一级目录中,内部项目并不十分复杂,慢慢的进行分析。首先我们要分析的是链接数据库。在一开始,我们要了解,数据库的访问是在数据库线程中的,而不是在UI线程的,这取决于chromium的多线程机制。Connection类是数据库sql的链接类,用来创建数据库原创 2016-08-12 09:52:14 · 727 阅读 · 0 评论 -
chromium WinMain
这里研究和分析一下chromium启动的初步,浅析一下原创 2016-05-26 19:14:15 · 2239 阅读 · 0 评论