原文display a web page in chrome
层
- Browser
- 代码位置:src/chrome/browser
- Tab contents
- 代码位置:src/chrome/browser/tab_content
- Render host
- 代码位置:src/chrome/browser/renderer_host
- Render
- src/chrome/rendererer
- RenderView
- 代码位置:/content/render/renderviewimpl.cc
- 继承于RenderWidget,RenderWidget负责input处理和绘制
- Webkit glue(WebView, WebWidget, WebFrame, etc)
- 代码位置:src/webkit/glue
- 封装webkit接口
- 转化webkit内建类型为chromium类型,如,std::string 代替 WebCore::String;GURL代替KURL。
- 简化webkit对象命名,如:WebCore::Frame 变成 WebFrame
- test shell基于glue的测试程序
- Webkit/Webkit Port
- 代码位置:third_party/Webkit
- webkit开源代码,Port是webcore平台相关接口的实现
- browser process的UI thread创建RenderProcessHost
- RenderProcessHost创建render process并在browser process的I/O thread中创建ChannelProxy
- ChannelProxy监听命名管道,将消息转发给RenderProcessHost
- ChannelProxy中包含ResourceMessageFilter过滤某些消息(如网络通信)直接交给I/O thread 处理
- ResourceMessageFilter::OnMessageReceived()
- RenderProcessHost将view相关消息派发给RenderViewHost处理,本身处理view无关消息
- RenderProcessHost::OnMessageReceived()
- view相关消息在RenderViewHost和RenderWidgetHostView基类中处理
- RenderView(Widget)Host都有与之对应的RenderView(Widget)位于render process,
- 每个平台都有一个 (RenderWidgetHostView[Aura|Gtk|Mac|Win])用于集成至平台。
render process browser process | | +--+--------------+ +---------------------+ | \ / \ render thread main thread I/O(IPC) thread Main browser(UI) thread | | | | webkit | | | | | | | renderWidget::SetCursor | | | | | | | renderView::Send() | | | | | | | RenderThead::Send() | | | | IPC::SyncChannel | | | |-----IPC----| | | | IPC::ChannelProxy | | | | | | | ResourceMessageFilter | | | | | | | | RenderProcessHost::OnMessageReceived | | | | | | | RenderViewHost::OnMessageReceived | | | | | | | RenderViewHost::OnMessageReceived | | | | | | | RenderWidgetHost::OnMsgSetCursor | | | |
render process browser process | | +--+------------------------+ +---------------------+ | \ / \ render thread main thread I/O(IPC) thread Main browser(UI) thread | | | | | | | RenderWidgetHost:ForwardMouseEventToRenderer | | | | | | | WebMouseEvent | | | | | | | RenderWidgetHost::ForwardInputEvent | | | | | | | RenderWidgetHost::Send | | IPC::ChannelProxy | | |----IPC-----| | | IPC::Channel | | RenderView::OnMessageReceived | | | | | | | RenderViewHost::OnMessageReceived | | | | | | | RenderWidgetHost::OnMsgSetCursor | | | | | | |
标签:
chromium
日期: 2014-07-18 17:30:06, 10 years and 182 days ago