1类
1.1模型
InfoBarDelegate
"chrome/browser/infobars/infobar_delegate.h"
infobar的抽象,保存infobar创建时的各种信息,如:图标等。一般用来继承。
ConfirmInfoBarDelegate
"chrome/browser/infobars/confirm_infobar_delegate.h"
confirm infobar的抽象,继承自InfoBarDelegate,用来保存confirm infobar创建时的各种信息,如:信息提示内容等。
InfoBarService
"chrome/browser/infobars/infobar_service.h"
通过管理InfoBarDelegate(以vector)来控制info bar的添加、删除、替换。
1.2控制器
InfoBarController : NSViewController<NSTextViewDelegate>
"chrome/browser/ui/cocoa/infobars/infobar_controller.h"
Infobar view的控制器,cocoa专有,用来画图标、提示信息、关闭按钮等。
ConfirmInfoBarController
"chrome/browser/ui/cocoa/infobars/confirm_infobar_controller.h"
继承自InfoBarController,主要用来控制给infobar view 增加额外的控制。比如:点击link标签回调等。
InfoBar
"chrome/browser/ui/cocoa/infobars/infobar.h"
包装InfoBarController的C++封皮类。仅仅用来做InfoBarDelegate::CreateInfoBar()的返回值类。 注意,区分通用的Infobar类。
InfoBarContainerController
"chrome/browser/ui/cocoa/infobars/infobar_container_controller.h"
infobar container view的控制器,cocoa专有,同时用来管理InfoBarController( NSMutableArray)。
1.3视图
InfoBarGradientView
"chrome/browser/ui/cocoa/infobars/infobar_gradient_view.h"
控制info bar背景的绘制。
2 图
2.1类图
2.2添加Infobar流程
3修改
添加新的infobar类型
创建新的infobar delegate。如:NewInfobarDelegate;
重写NewInfobarDelegate类的CreateInfoBar函数。(由于NewInfobarDelegate类是跨平台的,所以此函数一般在对应控制器的cc文件中写)
创建新的infobar controller。如:NewInfobarController;
若要修改界面元素,重写NewInfobarController的函数addAditionalControls函数。