API概览
主要类图
WebKit提供了灵活的回调机制用来支持客户端与内核的交互,在API中有一些Set Client类的函数,Client一般就是用于注册针对某一功能的回调函数。
如向WKContext注册history item处理的回调函数,就会使用下面这个结构(WKContext.h):
struct WKContextHistoryClient {
int version;
const void * clientInfo;
WKContextDidNavigateWithNavigationDataCallback didNavigateWithNavigationData;
WKContextDidPerformClientRedirectCallback didPerformClientRedirect;
WKContextDidPerformServerRedirectCallback didPerformServerRedirect;
WKContextDidUpdateHistoryTitleCallback didUpdateHistoryTitle;
WKContextPopulateVisitedLinksCallback populateVisitedLinks;
};
typedef struct WKContextHistoryClient WKContextHistoryClient;
调用WKContextSetHistoryClient就可以完成注册特定的回调函数。
角色与功能
WKView
(浏览视图,浏览功能的主要入口,也是网页显示与系统平台上的视图控件的适配,平台差异比较大。)
主要用于创建一个浏览界面,整合WKContext, WKPageGroup,WKPage的功能, 平台视图基本功能的适配(绘制、事件响应等)。
如在Mac OS下就是要实现对于NSView的适配。
WKPage
(当前浏览的页面, 负责解析执行页面内容)
-> Frame Loader Client
-> Page Loader Client
-> Policy Client
-> Form Client (表单提交操作的响应)
-> UI Client (JS提示框、焦点变化、菜单显示状态变化、页面绘制功能等)
-> Find Client (页面上的搜索)
-> Context Menu Client(快捷菜单)
-> 页面基本操作 (加载、刷新、关闭、前进、后退等)
-> User Agent管理
-> 页面缩放
-> 与Injected Bundle交互
WKContext
(浏览内容管理功能)
-> History Client
-> Injected Bundle Client
-> Download Client
-> Connection Client
-> Download Request
-> Cached Mode
-> Process Model (Web进程的共享模式)
-> Memory Sampler
通过它的m_supplements成员(一个HashMap)可以提供:
-> Get Application Cache manager
-> Get Battery Manager
-> Get Cookie Manager
-> Get Database Manager
-> Get Geolocation Manager
-> Get Icon Database
-> Get KeyValue Storage Manager
-> Get Media Cache Manager
-> Get Network Info Manager
-> Get Notification Manager
-> Get Plugin Site Data Manager
-> Get Resource Cache Manager
-> Garbage Collection of JavaScript Objects