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

android4.4 webview chromium是单进程的,图中所有组件都运行在Browser进程中。

按从上而下的顺序介绍这张图中与显示网页相关的chromium内核结构。

1.AwContents->WebContentsImpl

AwContnents的创建过程如下图:

AwContents是WebView接口的主要实现类。

native层的AwContents包含chromium内核browser组件中的类WebContents。

WebContents是chromium内核browser组件的入口。

我们看AwContents的java层和native层的结构。

ContentViewCore:

java层AwContents将WebView的接口调用转接给java层ContentViewCore。native层

ContentViewCore包含Browser组件的入口WebContentsImpl。真正实现WebView功能

的是WebContentsImpl。

AwContentsClient:

AwContentsClient的实现类WebViewContentsClientAdapter包含在WebViewChromium中,

WebViewChromium利用这个类接收AwContents的回调。WebViewContentsClientAdapter

封装了应用层实现的WebViewClient和WebChromeClient.

AwContentsClientBridge:

为AwContentsClient处理js相关的jni通信。

AwWebContentsDelegate:

是AwContentsClient接口的一部分,用于接收WebContentsImpl模块的回调。

AwWebContentsDelegate将具体实现都转接给AwContentsClient。

WebContentsImpl创建过程如下:

2.WebContentsImpl->Renderer host

RenderWidgetHostDelegate:

对RenderWidgetHost的状态感兴趣的类都会实现这个接口。用于接收RenderWidgetHost的状态变化通知。

RenderViewHostDelegate:

对RenderViewHost的状态感兴趣的类都会实现这个接口。用于接收RenderViewHost的状态变化通知。

RenderViewHostManager负责创建和管理WebContentsImpl中用到的RenderViewHosts。

WebContentsImpl的构造函数中创建了RenderViewHostManager实例,并将自身作为RenderWidgetHostDelegate

和RenderViewHostDelegate的实例传给RenderViewHostManager。

RenderViewHostManager通过回调这两个接口通知WebContentsImpl当前RenderWidgetHost和RenderViewHost

的状态变化。

RenderViewHostImpl的创建过程如下。

RenderViewHostImpl与RenderViewImpl是一一对应的。

3.renderer host->renderer

renderer组件中RenderViewImpl是核心模块。

下图是应用层触发的RenderViewImpl创建过程。

4.renderer->webkit glue

RenderViewImpl结构图

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内核结构

时间: 2024-12-06 23:24:40

android4.4 webview chromium显示网页的chromium内核结构的相关文章

Android攻城狮 WebView(显示网页)

使用WebView在界面中显示网页 通过Intent调用系统浏览器 Uri uri=Uri.parse(url);//url为链接的地址 Intent intent=new Intent(Intent.ACTION_VIEW,uri); startActivity(intent); ----------------------------- 课程目标:通过WebView自制一个简易网页浏览器 课程内容: (1)将WebView加入到你的应用 (2)使用WebView加载页面 (3)获取网络访问权

使用WebView视图显示网页-----迷你浏览器

Android提供了WebView组件,表面上来看,这个组件与普通ImageView差不多,但实际上,这个组件的功能要强大得多,WebView组件本身就是一个浏览器实现,它的内核基于开源WebKit引擎.如果我们对WebView进行一些美化.包装,可以非常轻松地开发出自己的浏览器. WebView的用法与普通ImageView组件的用法基本相似,它提供了大量方法来执行浏览器操作: 1.void  goBack():后退. 2.void  goForward():前进. 3.void  loadU

在当前的webview中跳转到新的url 使用WebView组件显示网页

如果希望点击链接由自己处理,而不是新开Android的系统browser中响应该链接.给WebView加一个事件监听对象(WebViewClient)并重写其中的一些方法:shouldOverrideUrlLoading:对网页中超链接按钮的响应.当按下某个连接时WebViewClient会调用这个方法,并传递参数:按下的url. webView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverri

android4.4 webview chromium与chromium for android硬件渲染的异同

相同点: android4.4 webview chromium的渲染流程与chromium for android硬件渲染流程全解析(render进程)中总结的五个子流程完全一致. android4.4 webview chromium的渲染流程也是这五个子流程组成的. 不同点: 1.android4.4中网页渲染的驱动还是android的UI系统控制的.即WebView.onDraw()是渲染的入口.chromium for android没有用到WebView控件,绘制的驱动完全由底层ch

android4.4 webview chromium实现硬件渲染的chromium内核结构

这里只关注与原生chromium不同的几个类. 一.DrawGLFunctor android4.4 webview chromium的硬件渲染是android ui系统和chromium内核协作 完成的.android ui系统负责触发网页渲染(调用WebView.onDraw()),以及提供 网页内容的最终目的地(HardwareCanvas);chromium内核提供具体的渲染行为. 这里就引出了DrawGLFunctor结构. DrawGLFunctor.java/draw_gl_fun

Chromium on Android: 认识Chromium WebView

Android KitKat一项重要的更新就是WebView采用Chromium/Blink渲染引擎,本文简要的叙述了新版WebView的主要特性.需要进一步改进的地方以及WebView的代码结构等. WebView前世今生 WebView是Android平台上一个非常重要的系统组件,用于将一个显示Web页面的窗口部件view嵌入到应用程序,并提供了一组API接口允许开发者定制页面加载和绘制的行为,比如响应页面加载状态的变化和弹出JavaScript对话框的请求等等.自Android 1.0发布

Chromium Graphics: 再谈Chromium WebView硬件渲染模式的演进

摘要:从Android KitKat系统第一个采用Chromium内核的WebView开始,Android WebView一直在持续演进中,自Chromium M38开始,WebView在硬件渲染模式方面发生了较大的变化,最明显的变化莫过于WebGL的支持以及ubercompositor的使用,同时为了吻合Android L的渲染模型变化,DrawGL函数是在Android系统的渲染线程中执行的. Android 4.4系统WebView的硬件渲染 对于Chromium WebView来说,首先

Android使用WebView显示网页

在Android开发过程中,会遇到需要显示网页的需求,或者需要用webview控件来达到某个效果.我这段时间在做CSDN博客的客户端,使用webview来显示博文内容,一是因为解析博文内容再适配比较麻烦,并且效果很不理想,后来想到直接用webview来显示,将博文原汁原味的呈现出来. webview使用起来比较容易,但是想要达到比较理想的效果还需要很多摸索.我做的CSDNBlog客户端,现在基本可以使用,已经在进行版本迭代了,但是博文的webview显示效果依然不太满意,主要是因为图片的缩放问题

chromium对网页获取favicon

每一个网页都有一个favicon,在历史记录的保存中须要用到.在content文件夹下,这个没有实现. 以下说一下我的实现过程: web_contents_impl.cc文件里有方法:WebContentsImpl::OnUpdateFaviconURL 这种方法是内核解析到favicon之后,给chromium 的browser process反馈之后,browser process的响应方法. 该方法的实现例如以下: FOR_EACH_OBSERVER(WebContentsObserver