概述
之前研究了一段时间chromium源码,根据自己的兴趣了解了一下其中部分功能的实现。通过在在网上查看博文、chromium官方文档以及加上自己的一些理解,整理出了一点资料。本文中主要是介绍chromium UI中的一些内容。接下来我会一一介绍 chromium 中窗口的创建过程、布局方式。
基础铺垫
1、Widget
Widget 中管理着一个真窗口,用于接收事件消息,以及管理整个 UI 界面,在windows 下就是管理一个 HWND ,它通过NativeWidgetWin 中的 HWNDMessageHandler来实现。在 Widget中包含一个 RootView ,因此也可以算是整个view系统中的一层,同时,它也可以包含其他的Widgets。Widget中如果涉及到跟平台相关的处理,它会把他们隐藏起来实现,通过一个指定的NativeWidget去实现,具体实现如下:
在widget中同样使用了delegate,在NativeWidgetPrivate中会实现具体的跟窗口自己相关的操作,而当涉及到具体的业务逻辑相关的操作时则会调用到 NativeWidgetDelegate中去做具体的处理。而要如何创建一个窗口的实现也会通过 NativeWidgetDelegate 回调到NativeWidgetPrivate 中在去进行进一步的处理。 Chromium 中多出都使用了 delegate这种模式。用来实现 MVC 模式的处理。