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的更多相关文章

  1. IE 加速插件之 Google Chrome Frame

    前言 IE 8 及以下版本的速度较慢. 特别是前端的js 和 css 内容较多时尤为突出. 就笔者的开发经验来说GWT, Ext JS, raphael , draw2d 等开发的系统在IE下使用是相 ...

  2. 【转】使用Chrome Frame,彻底解决浏览器兼容问题

    本文转自http://www.ryanbay.com/?p=269,感谢该作者的总结 X-UA-Compatible是自从IE8新加的一个设置,对于IE8以下的浏览器是不识别的. 通过在meta中设置 ...

  3. IE内嵌google chrome frame解决浏览器兼容问题

    IE内嵌google chrome frame解决浏览器兼容问题  http://www.cnblogs.com/xwdreamer/archive/2013/12/17/3477776.html 参 ...

  4. Google Chrome Frame 自定义渲染方式,调用ActiveX

    通过meta段的设置可以控制浏览器的渲染行为,但在一些特殊情况下,meta段的设置无效,我们需要额外的操作以达到目的. 模式1:页面A(IE)iFrame引用页面B(Chrome Frame) 问题描 ...

  5. 告别IE给我们的web开发带来的困扰(使用chrome frame v8引擎)

    茶爸爸个人微信:benyzhous,公众号:cha-baba欢迎骚扰 由于客户所有机器必须使用IE6浏览器,导致我们在开发项目过程中遇到非常多的样式与性能问题,在偶然的一次使用360软件管家搜索chr ...

  6. 【转】IE内嵌google chrome frame解决浏览器兼容问题

    参考文献: http://www.pseudowired.com/2012/12/04/tomcat-http-header-manipulation/(html中自动添加使用chrome的heade ...

  7. Chromium网页Frame Tree创建过程分析

         Chromium在加载一个网页之前,需要在Browser进程创建一个Frame Tree.Browser进程为网页创建了Frame Tree之后,再请求Render进程加载其内容.Frame ...

  8. Chromium(Chrome) Sandbox Details

    What Sandbox Do? Sandbox leverages the OS-provided security to allow code execution that cannot make ...

  9. Ubuntu 16.04下安装64位谷歌Chromium(Chrome)浏览器

    在命令行下输入: sudo add-apt-repository ppa:a-v-shkop/chromium sudo apt-get update sudo apt-get install chr ...

随机推荐

  1. Hadoop 搭建集群的步骤

    1.安装jdk,配置环境变量 root@localhost java]# vi /etc/profile 在profile中添加如下内容: #set java environmentexport  J ...

  2. L2-002 链表去重 (25 分)

    L2-002 链表去重 (25 分)   给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉.即对每个键值 K,只有第一个绝对值等于 K 的结点被保留.同时,所有被删除的结点须被保存在 ...

  3. redis安装linux(二)

    官网地址:http://redis.io/ redis的安装 第一步:安装VMware,并且在VMware中安装centos系统(参考linux教程). 第二步:将redis的压缩包,上传到linux ...

  4. eclipse使用技巧心得分享

    eclipse使用技巧心得分享   习惯了eclipse开发java程序,公司最近的项目都是idea开发的,同时android studio也是idea原型开发的,在学android开发,所以脱离ec ...

  5. Python学习第七课

    Python学习第七课 'Alex' "Alex"print('hello'*5) #重复输出字符串 print('hellowold'[2:]) #类似于切片操作:会取出 llo ...

  6. 通过JQuery的$.ajax()把 json 数据 post 给 PHP

    通过JQuery的$.ajax()把 json 数据 post 给 PHP时的几种情况: 无法在PHP中通过$_POST 以及 $_REQUEST 获取json数据,即 $json = $_POST[ ...

  7. Python 列表(List)

    Python 列表(List) 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内置类型 ...

  8. C语言权威指南和书单 - 初学者

    注:点击标题免费下载电子书 1. C Primer Plus (5th Edition) 2. A Book on C C Programming: A Modern Approach (2nd Ed ...

  9. python 测试登录接口只返回response200的问题

    但是使用postman测试是有json串的 后来发现postman传参是用的raw格式,raw的格式相当于json 而这里的data其实是form-data格式,需要用json的格式

  10. 蓝桥每周一题之1. 3n+1 问题

    [问题描述] 考虑如下的序列生成算法:从整数 n 开始,如果 n 是偶数,把它除以 2:如果 n 是奇数,把它乘 3 加1.用新得到的值重复上述步骤,直到 n = 1 时停止.例如,n = 22 时该 ...