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等功能