从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内容可超过屏幕。

      (未完待续)     

WebKit(Blink分支)各组件的创建与逻辑关系的更多相关文章

  1. [原创]gerrit上分支操作记录(创建分支、删除分支)

    Git分支对于一个项目的代码管理而言,是十分重要的! 许多久用git的朋友可能已经掌握的很牢固了,但对于一些初涉git的童鞋来说,可能还不是很熟悉. 在此,我将自己的一些操作经历做一梳理,希望能帮助到 ...

  2. Gerrit上分支操作记录(创建分支、删除分支)

    Git分支对于一个项目的代码管理而言,是十分重要的!许多久用git的朋友可能已经掌握的很牢固了,但对于一些初涉git的童鞋来说,可能还不是很熟悉.在此,我将自己的一些操作经历做一梳理,希望能帮助到有用 ...

  3. [廖雪峰] Git 分支管理(1):创建与合并分支(HEAD、master、dev、指针)

    每次提交,Git 都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在 Git 里,这个分支叫主分支,即 master 分支.HEAD 严格来说不是指向提交,而是指向 mas ...

  4. vue - 组件的创建

    组件的创建 vue的核心基础就是组件的使用,玩好了组件才能将前面学的基础更好的运用起来.组件的使用更使我们的项目解耦合.更加符合vue的设计思想MVVM. 那接下来就跟我看一下如何在一个Vue实例中使 ...

  5. react组件的创建

    最近项目接触react和rn,之前会一些vue和小程序,起初写react是很难受的,尤其是jsx的写法,不过2周过后感觉写起来有点舒服了... 目前react的组件一共有3种方式:React.crea ...

  6. react native组件的创建

    react native组件的创建 react文件加载顺序: react项目启动后,先加载index.js.在index.js中可以指向首页. import { AppRegistry } from ...

  7. Vue组件component创建及使用

    组件化与模块化的区别 什么是组件:组件的出现,就是为了拆分Vue实例的代码量,能够让我们以不同的组件,来划分不同的功能模块 ,将来我们需要什么功能,就可以去调用对应的组件即可 组件化与模块化的不同: ...

  8. vue学习(4)-组件的创建,父子组件传值,$refs

    模块化:代码逻辑 组件化:UI 组件的创建:1.

  9. php私有组件以及创建自己的composer私有组件(packagist+git+composer)

    1.私有组件 大多数时候我们使用的都是公开可用的开源组件,但有时候如果公司使用内部开发的PHP组件,而基于许可证和安全方面的问题不能将其开源,就需要使用私有组件.对Composer而言,这是小菜一碟. ...

随机推荐

  1. Table 'hd_online' is marked as crashed and should be repaired索引损坏

    myisam 引擎表的索引损坏,解决方法 找到mysql的安装目录的/usr/local/mysql/bin/myisamchk工具,在命令行中输入: myisamchk -c -r /data/db ...

  2. 星际争霸 虚空之遗 人族5BB 操作流程

    人族5BB rush timing 3min-3min30 一波战术,对面双开不侦察应该就GG了. 14农民BS,建议在第一个BS后的100矿,马上接上一个BS堵口,基本上对面是侦察不到的,特别是内双 ...

  3. Android Broadcast Security(转)

    原文地址:http://drops.wooyun.org/tips/4393 0x00 科普 Broadcast Recevier 广播接收器是一个专注于接收广播通知信息,并做出对应处理的组件.很多广 ...

  4. datetimepicker只显示日期,不显示时分秒

    HTML代码<div class="input-group date form_datetime form-date" data-link-field="dtp_i ...

  5. subline text 工具快捷键说明

    编辑 ctrl + enter           光标当前行下一行新增一行,并且光标跳到下一行进行编辑 ctrl + shift +enter  光标当前行上一行新增一行,并且光标跳到上一行进行编辑 ...

  6. linux下activityMQ安装

    >下载 到ActiveMQ官网,找到下载点. 目前, 官网为http://activemq.apache.org/ >启动 下载到本机,并解压   wget http://apache.f ...

  7. 移动APP安全在渗透测试中的应用

    安全爱好者研究的往往是app的本地安全,比如远控.应用破解.信息窃取等等,大多人还没有关注到app服务端的安全问题,于是在这块的安全漏洞非常多. 移动app大多通过web api服务的方式跟服务端交互 ...

  8. IP地址转换、主机大小端、htonl、ntohl实现

    copy   #include <IOSTREAM> //#include <WINSOCK.H> using std; typedef  uint16; unsigned   ...

  9. 【日志处理】logstash性能优化配置

    2W条数据用时4秒完成,每秒5000条左右,昨天是同时写入到文件和标准输出,看起来是output的问题,这块性能应当可以满足性能要求了 后继我会继续把结果输出到tcp,kafka来测试经过grok后的 ...

  10. 【Linux】apt-get install 怎么阻止弹出框,使用脚本默认自动安装?

    You can do a couple of things for avoiding this. Setting the DEBIAN_FRONTEND variable to noninteract ...