WebKit(Blink分支)各组件的创建与逻辑关系

本文详细剖析了Chromium浏览器的渲染流程,从RenderViewImpl的初始化开始,介绍了WebLocalFrame和WebViewImpl的创建过程,以及它们之间的关联。进一步探讨了Page对象的创建,并深入到LocalFrame、Document对象的构建及其相关逻辑。

从render_view_impl.cc開始说起。

1.     方法RenderViewImpl::Initialize中有:

WebLocalFrame* web_frame = WebLocalFrame::create(main_render_frame_.get()); 

这里会创建WebLocalFrame对象。

之后有webwidget_ = WebView::create(this); 这里会创建WebViewImpl对象。且后面将两者关联起来。

2. 我们来先来看看WebLocalFrame::create

    1. WebLocalFrameImpl的构造函数中,创建FrameLoaderClientImpl对象。


3. WebViewImpl的创建

WebViewImpl在创建中,会创建Page对象。

一个WebViewImpl相应一个Page。


4.WebViewImpl的setMainFrame

     这里的调用逻辑例如以下:

WebViewImpl::setMainFrame
WebLocalFrameImpl::initializeCoreFrame
LocalFrame::LocalFrame

在LocalFrame的构造函数中。会创建FrameLoader对象和ScriptController对象

4. Document对象及相关逻辑

FrameLoader::init()和   FrameLoader::startLoad函数中,创建了多个DocumentLoader对象。

  

RawResource::didAddClient
DocumentLoader::dataReceived
DocumentLoader::commitData
DocumentLoader::ensureWriter
DocumentLoader::createWriterFor
(LocalDOMWindow::create)
LocalDOMWindow::installNewDocument
LocalDOMWindow::createDocument
Document::Document

5.归纳

    1. LocalFrame主要处理逻辑,含有FrameView对象,用于处理内容显示。FrameView继承ScrollViewArea类,故,FrameView内容可超过屏幕。

      (未完待续)     



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值