RenderWidget
对应于一个WebCore::Widget
实例,它实现了Webkit的glue层WebWidgetDelegate
的抽象接口。基本上,RenderWidget
相当于一个屏幕上的窗口(Window),用来绘制内容和接受输入事件(input events)。
而RenderView
继承自RenderWidget
[笔者注:此处有误,现在的代码实现并非如此],相当于一个tab或者弹窗(popup Window)里面的内容。它用来处理作用于绘图和输入事件的导航命令(navigational commands)。
所以一般情况下,RenderWidget
和RenderView
成对出现。但也有例外,比如一个Web页面上的选择框,通过下拉箭头来选择文件,就只有RenderWidget
没有RenderView
。需要注意的是,选择框必须使用native window来渲染(rendering),以保证出现在屏幕的最上层。这些窗口需要绘制和接受输入事件,但并没有独立的”web page” (RenderView) 。