转载,请注明出处!
Accessibility的全称是Microsoft Active Accessibility,是windows平台实现的一套技术。这套技术实现的效果是:允许某进程查询、操作另一进程的UI元素。WebKit引擎也实现了这套理念:允许应用查询、操作Render树。
Accessibility Framework有重要的2个子组件。1)Accessibility对象,即实现了IAccessible接口的对象。WebKit定义了3个类AccessibleBase、AccessibleDocument、AccessibleImage,这三个类实现了接口IAccessible。2)获得Accessibility对象的方法。WebKit也提供了获得IAccessible对象的方法。如下代码:
HRESULT hr = WebKitCreateInstance(CLSID_WebFrame, 0, IID_IWebFrame, pOut);
if (FAILED(hr))
goto exit;
COMPtr<IAccessible> renderTRoot = pOut->accessible()
renderTRoot是Render树根对应的Accessibility对象。
WebCore:: AXObjectCache类负责创建、维护Accessible对象树。在Render树创建完成后,Document对象会执行AXObjectCache:: getOrCreate(RenderTRoot)创建Render树根的Accessible对象。注意,此时之创建了Render树根的Accessible对象&#x