Blink内核相关术语、映射关系

在读Adblock Plus for Chrome插件的源代码时,拦截入口处有几个判断非常重要,这涉及到当前打开Tab的URL、来源、打开方式等概念,对应到Blink中术语有page、main frame、iframe、document等,翻阅一下Blink的README文档,找到官方的介绍在此做一下记录。

Page

一个Page对应于一个Tab,当然前提时OOPIF(Out-of-Process iframes)没有开启。每一个渲染进程可能包含多个Tab。

Frame

Frame对应于HTML中的frame,可能是主frame或者iframe,每个Page在树形结构中可能包含一个或者多个frame。

DOMWindow

一个DOMWindow对应Javascript中的一个window对象,每个Frame有一个DOMWindow。

Document

一个Document对应Javascript中的一个window.document,每个Frame有一个Document。

ExecutionContext

一个ExecutionContext是一个抽象概念,在渲染进程的主线程中对应于一个Document,在工作者线程中对应于一个WorkerGlobalScope。

解释完这些,那就知道相互之间的对应关系了。

渲染进程:Page=1:N

Page:Frame=1:M

Frame:DOMWindow:Document(ExecutionContext)=1:1:1

这在某个时刻是成立的,因为某个时间段内涉及到iframe的locatio跳转新建frame以及frame的重用问题。