webkit framework for android 4.0.3 代码总结

android中的webkit分为java层, 和native C++层, 它们直接的相互调用通过jni完成.

frameworks层的源码总结

代码位于frameworks/base/core/java/android/webkit目录下, 一共84个文件, 接触过的主要文件的简单说明如下:

WebView.java               为App的Activity提供browser的整体封装, 作为一个View可以set到app层的Activity, 实现在Activity中display html 文档的能力.

WebViewCore.java         load libwebcore.so和libchromium_net.so, 对WebCore库进行java层封装,将UI线程的操作发送给native WebCore处理, 并通过CallbackProxy发送message给UI thread.

WebViewDatabase.java       为cookie, cache,username, password提供sqlite的数据库支持

BrowserFrame.java     是native webcore/page/Frame.cpp的java层封装, 目的是Create a new native frame for a given WebView, 提供loadUrl()接口, 并为native Frame对象提供Java层的回调方法, 例如native callback loadStarted().

FrameLoader.java       提供executeLoad()接口用于载入网页数据, http headers的创建是在这里完成的.

LoadListener.java          实现http包的EventHandler接口, 接受http线程发送过来的网络数据, 传递给native webkit做处理.

CacheManager.java     @Deprecated, 在之前的版本中是负责处理Http header中的cache header, 决定是否保存content, 以及有效期.

CallbackProxy.java      this class extends Handler, 提供callback functions that are called from the native WebCore thread, and then send messages to the UI thread. 所有callback 方法的实现都是send message to UI thread, 例如onPageStarted().

CertTool.java                                  对证书进行管理

ClientCertRequestHandler.java      用于处理客户端的证书请求

ConsoleMessage.java                   对应javascript的console.log(‘’)功能

CookieManager.java                     对应webkit/android/jni/CookieManager.cpp, 对cookie进行管理

CookieSyncManager.java              For best performance, cookie保存在RAM中, there is a timer to sync it between RAM and Flash every 5 minutes.

DebugFlags.java                          为java层各components定义是否开否打开调试信息

DeviceMotionAndOrientationManager.java 实现DeviceMotion和DeviceOrientation

DeviceMotionService.java             实现SensorEventListener接口,处理动作

DeviceOrientationService.java       实现SensorEventListener接口,处理方向变化

DownloadListener.java                 It is an interface, 提供onDownloadStart()接口.

GeolocationPermissions.java         管理位置信息的权限

GeolocationService.java               Implements LocationListener, 实现onLocationChanged, 当位置信息发现变化时, 设置新的位置到native webcore.

HTML5Audio.java                       HTML5 <audio>标签支持类

HTML5VideoView.java                 通过平台提供的MediaPlayer, 提供HTML5 <video>标签支持

HTML5VideoFullScreen.java        HTML5 <video> 全屏支持类

HTML5VideoInline.java              HTML5 <video> inline支持类

HTML5VideoViewProxy.java       HTML5 video 代理类, provide methods, called by native webkit, send message to UI thread, eg. play().

HttpAuthHandler.java               处理http认证请求

JniUtil.java                              给native webkit提供的utility类, 实现读取cache目录等功能.

ViewManager.java                   插件视图的管理

WebBackForwardList.java        contains the back/forward list for a WebView

WebBackForwardListClient.java it is abstract class, 实现它的类会接受到notification当有新的item添加到WebBackForwardList

WebChromeClient.java           当网页加载进度变化, 接受到图标, title时得到通知.

WebViewClient.java               page开始加载, 结束, 和加载资源文件时被通知

WebHistoryItem.java             该对象代表一条历史记录

WebIconDatabase.java          icon database的管理

WebResourceResponse.java  contains the response information for a particular resource

WebSettings.java                  WebView的setting设置

WebStorage.java                  操作webstorage databases.

WebSyncManager.java          管理RAM数据和FLASH数据的同步操作

WebTextView.java                html文档的输入控件被激活时,显示系统原生编辑组件, 是一个特殊版本的EditText

WebViewWorker.java            实现html5 webworkers, executes in a separate thread other than UI thread and WebViewCore thread

ZoomControlBase.java             interface, 提供缩放控件的显示和隐藏接口

ZoomControlEmbedded.java     实现ZoomControlBase interface, 实现缩放控件的显示和隐藏.

ZoomManager.java                  实现缩放控件的zoomIn, zoomOut等功能

 

posted @ 2013-03-03 18:52  webkit_android  阅读(1106)  评论(0编辑  收藏  举报