Android4.4 webview chromium显示网页的chromium内核结构

ndroid4.4 webview chromium显示网页的chromium内核结构


id="iframeu2386381_0" src="http://pos.baidu.com/pckm?sz=720x250&rdid=2386381&dc=2&di=u2386381&dri=0&dis=0&dai=1&ps=250x1425&coa=at%3D3%26rsi0%3D720%26rsi1%3D250%26pat%3D6%26tn%3DbaiduCustNativeAD%26rss1%3D%2523FFFFFF%26conBW%3D1%26adp%3D1%26ptt%3D0%26titFF%3D%2525E5%2525BE%2525AE%2525E8%2525BD%2525AF%2525E9%25259B%252585%2525E9%2525BB%252591%26titFS%3D%26rss2%3D%2523000000%26titSU%3D0%26ptbg%3D90%26piw%3D0%26pih%3D0%26ptp%3D0&dcb=BAIDU_SSP_define&dtm=HTML_POST&dvi=0.0&dci=-1&dpt=none&tsr=0&tpr=1472796314650&ti=android4.4%20webview%20chromium%E6%98%BE%E7%A4%BA%E7%BD%91%E9%A1%B5%E7%9A%84chromium%E5%86%85%E6%A0%B8%E7%BB%93%E6%9E%84%20%7C%20%E9%98%B3%E5%92%8C%E7%A7%BB%E5%8A%A8%E5%BC%80%E5%8F%91&ari=2&dbv=2&drs=4&pcs=1903x973&pss=1903x3427&cfv=0&cpl=14&chi=1&cce=true&cec=UTF-8&tlm=1472796314&rw=973&ltu=http%3A%2F%2Fwww.mobile-open.com%2F2015%2F74620.html&ltr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DM-zPHRnyPOwtSYWNDQFpbu6kooIqQGzOZ8jgBN_zr6KsId1IoBLDLhOGU-LU7o8QkVX5eLkrjSDi6ix93zLOva%26wd%3D%26eqid%3D8d3de68e0000e82c0000000357c9169b&ecd=1&psr=1920x1080&par=1920x1040&pis=-1x-1&ccd=24&cja=false&cmi=17&col=zh-CN&cdo=-1&tcn=1472796315&qn=bc9fff63ed317d63&tt=1472796314601.53.53.56" width="720" height="250" align="center,center" vspace="0" hspace="0" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" allowtransparency="true" style="margin: 0px; padding: 0px; border-width: 0px; border-style: initial; vertical-align: bottom; background: transparent;">
id="BAIDU_SSP__wrapper_u2543106_0_iframe" src="http://pos.baidu.com/pckm?rdid=2543106&dc=2&di=u2543106&dri=0&dis=0&dai=2&ps=500x705&dcb=BAIDU_SSP_define&dtm=HTML_POST&dvi=0.0&dci=-1&dpt=none&tsr=0&tpr=1472796314650&ti=android4.4%20webview%20chromium%E6%98%BE%E7%A4%BA%E7%BD%91%E9%A1%B5%E7%9A%84chromium%E5%86%85%E6%A0%B8%E7%BB%93%E6%9E%84%20%7C%20%E9%98%B3%E5%92%8C%E7%A7%BB%E5%8A%A8%E5%BC%80%E5%8F%91&ari=2&dbv=2&drs=4&pcs=1903x973&pss=1903x3427&cfv=0&cpl=14&chi=1&cce=true&cec=UTF-8&tlm=1472796314&rw=973&ltu=http%3A%2F%2Fwww.mobile-open.com%2F2015%2F74620.html&ltr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DM-zPHRnyPOwtSYWNDQFpbu6kooIqQGzOZ8jgBN_zr6KsId1IoBLDLhOGU-LU7o8QkVX5eLkrjSDi6ix93zLOva%26wd%3D%26eqid%3D8d3de68e0000e82c0000000357c9169b&ecd=1&psr=1920x1080&par=1920x1040&pis=-1x-1&ccd=24&cja=false&cmi=17&col=zh-CN&cdo=-1&tcn=1472796315&qn=e21065472c142787&tt=1472796314601.374.6885.6889" width="250" height="200" align="center,center" vspace="0" hspace="0" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" allowtransparency="true" style="margin: 0px; padding: 0px; border-width: 0px; border-style: initial; vertical-align: bottom; background: transparent;">
关闭
id="BAIDU_SSP__wrapper_u2544541_0_iframe" src="http://pos.baidu.com/pckm?rdid=2544541&dc=2&di=u2544541&dri=0&dis=0&dai=3&ps=500x705&dcb=BAIDU_SSP_define&dtm=HTML_POST&dvi=0.0&dci=-1&dpt=none&tsr=0&tpr=1472796314650&ti=android4.4%20webview%20chromium%E6%98%BE%E7%A4%BA%E7%BD%91%E9%A1%B5%E7%9A%84chromium%E5%86%85%E6%A0%B8%E7%BB%93%E6%9E%84%20%7C%20%E9%98%B3%E5%92%8C%E7%A7%BB%E5%8A%A8%E5%BC%80%E5%8F%91&ari=2&dbv=2&drs=4&pcs=1903x973&pss=1903x3427&cfv=0&cpl=14&chi=1&cce=true&cec=UTF-8&tlm=1472796315&rw=973&ltu=http%3A%2F%2Fwww.mobile-open.com%2F2015%2F74620.html&ltr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DM-zPHRnyPOwtSYWNDQFpbu6kooIqQGzOZ8jgBN_zr6KsId1IoBLDLhOGU-LU7o8QkVX5eLkrjSDi6ix93zLOva%26wd%3D%26eqid%3D8d3de68e0000e82c0000000357c9169b&ecd=1&psr=1920x1080&par=1920x1040&pis=-1x-1&ccd=24&cja=false&cmi=17&col=zh-CN&cdo=-1&tcn=1472796315&qn=cbaf4a494fff621e&tt=1472796314601.813.7927.7928" width="120" height="270" align="center,center" vspace="0" hspace="0" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" allowtransparency="true" style="margin: 0px; padding: 0px; border-width: 0px; border-style: initial; vertical-align: bottom; background: transparent;">
关闭

android4.4 webview chromium显示网页的chromium内核结构

android4.4 webview chromium是单进程的,图中所有组件都运行在Browser进程中。
按从上而下的顺序介绍这张图中与显示网页相关的chromium内核结构。
1.AwContents->WebContentsImpl

AwContnents的创建过程如下图:

android4.4 webview chromium显示网页的chromium内核结构

AwContents是WebView接口的主要实现类。
native层的AwContents包含chromium内核browser组件中的类WebContents。
WebContents是chromium内核browser组件的入口。
我们看AwContents的java层和native层的结构。

android4.4 webview chromium显示网页的chromium内核结构

ContentViewCZ"http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcmU6PGJyPgpqYXZhsuNBd0NvbnRlbnRzvatXZWJWaWV3tcS907/atffTw9eqvdO4+GphdmGy40NvbnRlbnRWaWV3Q29yZaGjbmF0aXZlsuM8YnI+CkNvbnRlbnRWaWV3Q29yZbD8uqxCcm93c2Vy1+m8/rXEyOu/2ldlYkNvbnRlbnRzSW1wbKGj1ebV/cq1z9ZXZWJWaWV3uabE3Dxicj4KtcTKx1dlYkNvbnRlbnRzSW1wbKGjPGJyPgpBd0NvbnRlbnRzQ2xpZW50Ojxicj4KQXdDb250ZW50c0NsaWVudLXEyrXP1sDgV2ViVmlld0NvbnRlbnRzQ2xpZW50QWRhcHRlcrD8uqzU2ldlYlZpZXdDaHJvbWl1bdbQo6w8YnI+CldlYlZpZXdDaHJvbWl1bcD708PV4rj2wOC908rVQXdDb250ZW50c7XEu9i196GjV2ViVmlld0NvbnRlbnRzQ2xpZW50QWRhcHRlcjxicj4Kt+LXsMHL06bTw7LjyrXP1rXEV2ViVmlld0NsaWVudLrNV2ViQ2hyb21lQ2xpZW50Ljxicj4KQXdDb250ZW50c0NsaWVudEJyaWRnZTo8YnI+Cs6qQXdDb250ZW50c0NsaWVudLSmwO1qc8/gudi1xGpuac2o0MWhozxicj4KQXdXZWJDb250ZW50c0RlbGVnYXRlOjxicj4KysdBd0NvbnRlbnRzQ2xpZW50vdO/2rXE0ruyv7fWo6zTw9PavdPK1VdlYkNvbnRlbnRzSW1wbMSjv+m1xLvYtfehozxicj4KQXdXZWJDb250ZW50c0RlbGVnYXRlvau+38zlyrXP1ra816q907j4QXdDb250ZW50c0NsaWVudKGjPGJyPgpXZWJDb250ZW50c0ltcGy0tL2ouf2zzMjnz8KjujwvcD4KPHA+PGltZyBzcmM9"http://www.2cto.com/uploadfile/Collfiles/20140609/20140609091213136.jpg" alt="/">

2.WebContentsImpl->Renderer host

android4.4 webview chromium显示网页的chromium内核结构

RenderWidgetHostDelegate:
对RenderWidgetHost的状态感兴趣的类都会实现这个接口。用于接收RenderWidgetHost的状态变化通知。
RenderViewHostDelegate:
对RenderViewHost的状态感兴趣的类都会实现这个接口。用于接收RenderViewHost的状态变化通知。
RenderViewHostManager负责创建和管理WebContentsImpl中用到的RenderViewHosts。
WebContentsImpl的构造函数中创建了RenderViewHostManager实例,并将自身作为RenderWidgetHostDelegate
和RenderViewHostDelegate的实例传给RenderViewHostManager。
RenderViewHostManager通过回调这两个接口通知WebContentsImpl当前RenderWidgetHost和RenderViewHost
的状态变化。
RenderViewHostImpl的创建过程如下。

android4.4 webview chromium显示网页的chromium内核结构

RenderViewHostImpl与RenderViewImpl是一一对应的。

3.renderer host->renderer

renderer组件中RenderViewImpl是核心模块。
下图是应用层触发的RenderViewImpl创建过程。

android4.4 webview chromium显示网页的chromium内核结构

4.renderer->webkit glue

RenderViewImpl结构图

android4.4 webview chromium显示网页的chromium内核结构

WebKit::WebView的创建过程
RenderViewImpl::Create()调用RenderViewImpl的构造函数创建
RenderViewImpl的实例,之后调用RenderViewImpl::Initialize:
RenderViewImpl::Initialize(){
webwidget_ = WebView::create(this);
}
RenderWidget的实例创建是由下来函数触发的:
RenderViewImpl::createPopupMenu(){
RenderWidget* widget =
RenderWidget::Create(routing_id_, popup_type, screen_info_);
return widget->webwidget();
}
RenderWidget::Create()只有这一个入口。
用来创建不同类型的弹出窗口。

5. webkit glue->WebKit

WebViewImpl的结构图:

android4.4 webview chromium显示网页的chromium内核结构

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值