Chromium(Chrome) frame structure detail
1. Chromium VS Chrome
Chromium is an open-source Web browser project started by Google, to provide the source code for the proprietary Google Chrome browser. The two browsers share the majority of code and features, though there are some minor differences in features and logos, and they have different licensing.
So we can peek how Chrome working via learning Chromium.
2. Architectural overview

- All network communication is handled by the main browser process
- Separate browser tabs have separate processes
- each new window or tab opens in a new process
- Restrict access from each rendering engine process to others and to the rest of the system
- Browser: main process that runs the UI and manages tab and plugin processes
- Renderers: tab-specific processes, use Blink open-source layout engine
3. How Chromium Loading Resource

3.1 Three layers
- Lowest: Blink engine -> renders pages
- Middle: Renderer process -> each contains one Blink instance
- Highest: Browser process -> managing all the renderers & controls all network accesses
3.2 Blink
Responsible for fetching data, performing the actual data get, then send dispatch request to render
3.3 Renderer
Forward the request to the browser via IPC
3.4 Browser
Receive the IPC requests from each renderer, forwards these requests to the global ResourceDispatcherHost,send the notification back to the renderer
3.5 Cookie
Not share cookies with other browsers, cookie manager lives in the browser process which handles all network requests because cookies need to be the same across all tabs.
4. How Chromium Displays Web Pages
4.1 Conceptual application layers

- WebKit
Rendering engine, actually, for Chrome, it should be replaced with Blink + V8
- Glue : "WebKit embedding layer", converts WebKit types to Chromium types
- Renderer / Render host: This is Chromium's "multi-process embedding layer."
- WebContents: A reusable component that is the main class of the Content module.
- Browser: Represents the browser window, it contains multiple WebContentses.
- Tab Helpers: Individual objects that can be attached to a WebContents.
4.2 Render process
The render thread is where the main objects such as the RenderView and all WebKit code run.

- RenderView(inherits from RenderWidget)
Represents a web page, contents of a tab or popup Window , handles all navigation-related commands to and from the browser process, painting and input event handling
- RenderWidget
A Window on the screen that receives input events and paint into
4.3 Browser process

- All IPC communication with the render processes is done on the I/O thread of the browser.
- Handles all network communication which keeps it from interfering with the user interface
- RenderViewHost & RenderWidgetHost
Responsibility of displaying a web page in a rectangular view
refers:
https://en.wikipedia.org/wiki/Chromium
http://www.chromium.org/developers/design-documents
Chromium(Chrome) frame structure detail的更多相关文章
- IE 加速插件之 Google Chrome Frame
前言 IE 8 及以下版本的速度较慢. 特别是前端的js 和 css 内容较多时尤为突出. 就笔者的开发经验来说GWT, Ext JS, raphael , draw2d 等开发的系统在IE下使用是相 ...
- 【转】使用Chrome Frame,彻底解决浏览器兼容问题
本文转自http://www.ryanbay.com/?p=269,感谢该作者的总结 X-UA-Compatible是自从IE8新加的一个设置,对于IE8以下的浏览器是不识别的. 通过在meta中设置 ...
- IE内嵌google chrome frame解决浏览器兼容问题
IE内嵌google chrome frame解决浏览器兼容问题 http://www.cnblogs.com/xwdreamer/archive/2013/12/17/3477776.html 参 ...
- Google Chrome Frame 自定义渲染方式,调用ActiveX
通过meta段的设置可以控制浏览器的渲染行为,但在一些特殊情况下,meta段的设置无效,我们需要额外的操作以达到目的. 模式1:页面A(IE)iFrame引用页面B(Chrome Frame) 问题描 ...
- 告别IE给我们的web开发带来的困扰(使用chrome frame v8引擎)
茶爸爸个人微信:benyzhous,公众号:cha-baba欢迎骚扰 由于客户所有机器必须使用IE6浏览器,导致我们在开发项目过程中遇到非常多的样式与性能问题,在偶然的一次使用360软件管家搜索chr ...
- 【转】IE内嵌google chrome frame解决浏览器兼容问题
参考文献: http://www.pseudowired.com/2012/12/04/tomcat-http-header-manipulation/(html中自动添加使用chrome的heade ...
- Chromium网页Frame Tree创建过程分析
Chromium在加载一个网页之前,需要在Browser进程创建一个Frame Tree.Browser进程为网页创建了Frame Tree之后,再请求Render进程加载其内容.Frame ...
- Chromium(Chrome) Sandbox Details
What Sandbox Do? Sandbox leverages the OS-provided security to allow code execution that cannot make ...
- Ubuntu 16.04下安装64位谷歌Chromium(Chrome)浏览器
在命令行下输入: sudo add-apt-repository ppa:a-v-shkop/chromium sudo apt-get update sudo apt-get install chr ...
随机推荐
- Thymeleaf前后端传值 页面取值与js取值
参考: Thymeleaf前后端传值 页面取值与js取值 Thymeleaf 与 Javascript Thymeleaf教程 (十二) 标签内,js中使用表达式 目的: 后端通过Model传值到前端 ...
- MySQL 使用join操作时出现重复数据
使用 group by 'id'' 如:SELECT e.* FROM excel e INNER JOIN task t ON t.eid=e.id where e.id>0 and t. ...
- 【python】带图片验证码的登录自动化实战
近期在跟进新项目的时候,整体的业务线非常之长,会一直重复登录退出不同账号的这个流程,所以想从登录开始实现部分的自动化.因为是B/S的架构,所以采用的是selenium的框架来实现.大致实现步骤如下: ...
- 看到Console.WriteLine($"string")写法,一时间不理解$的用途
参了网上资料,原来它是C# 6.0的语法糖. C# 6.0 新加上的功能: Null-Conditional Operator 大概就是,简洁代码量,缩短一些关于为null的判断~ 旧写法: pu ...
- thinkphp5.0验证的封装
刚学完这个验证器封装,刚开始还是有点晕的,后面仔细看了两遍,才慢慢感觉到了继承这个方法的好处,看来还得慢慢锻炼锻炼; 问题:结合上篇的自定义验证器,发现每次使用验证器都重复这样写代码;//验证器$va ...
- linux 常用命令积累
工作中常用的linux记录一下,方便查询使用 1.ln 创建连接 ,就是window上的快捷方式 创建软连接 ln -s 源文件 目标文件名 经常访问的文件夹(项目文件夹),在~创建一个软连很方 ...
- PHP常用函数(一):数组常用函数
1.list() list() 和 array() 一样,不是一个函数,而是一个语言结构,作用是为一组变量赋值. PHP手册中的介绍 使用详情 <?php //假设现在想为$a $b $c三个 ...
- s21day17 python笔记
s21day17 python笔记 一.内容回顾及补充 回顾 补充 第三方模块补充 需要下载安装后才能导入使用 安装方式: pip包管理工具 # 把pip.exe 所在的目录添加到环境变量中. pip ...
- 统计数字(关联容器map)
题目描述 某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*109).已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统 ...
- poj 1113 凸包
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> ...