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的重用问题。