chrome FindBar

简介

    对常用的Ctrl+F弹出查找框进行查看,了解大致细节。

目录

    1.在chrome浏览页面按下Ctrl+F后产生的动作

    2.输入框输入内容后产生的动作

    3.关闭按钮消息处理

    4.查找框中内容的保留

findbar是每一个tab页面共享的,并且创建了findbar之后,就不会再销毁,直到退出浏览器

1.在chrome浏览页面按下Ctrl+F后产生的动作

Image

BrowserCommandController::ExecuteCommandWithDisposition这个函数在前面的bookmark处已经碰到了,属于Browser的命令响应模块,后面连续的几个命令都在周转,到CreateFindBar处,才真正的调用new CreateHostView(browser_view)创建出实际的find_bar,FindBarHost会创建FindbarView,

创建完成FindBarHost后,BrowserView::CreateFindBar会接着创建一个FindBarController管理FindBarHost,同时使FindBarHost能够访问到FindTabHelper。

都创建完成完成之后就调用Show,就是我们看到的如下界面了。

Image1

值得注意的是FindBarHost是看不到的,我们看到FindBar慢慢的从顶部降下来的过程就是FindBarHost的作用,显示完成后,现在看到的内容就是FindBarView的信息了。

FindBarView的成员:

SearchTextfieldView* find_text_;
  views:: Label* match_count_text_;
  FocusForwarderView* focus_forwarder_view_;
  views:: ImageButton* find_previous_button_;
  views:: ImageButton* find_next_button_;
  views:: ImageButton* close_button_;

这几项信息,与显示框完全一致。

接下来看看初略的类图

Image2

这个图画的有点杂乱,将就着看吧,主要类容就FindBarView、FindBarHost、FindBarController和FindTabHelper,

其余内容都是辅助获取通知或者显示的,暂不关心

2.输入框输入内容后产生的动作

Image3

过程还是很简单,就是将输入的内容通过IPC的形式发送到Webkit(或者后来的Blink)进行渲染了。

3.关闭窗口

Image4

关闭的过程就隐藏当前的FindBar,然后发送消息给Webkit(或者Blink)Stop查找。

4.查找框的内容保留

Image6

这里值得注意的一点是,若当前页面已经弹出过findbar则显示的内容可能是上一次的,若没有则可能是别的tab的。

结论:

    findbar能够看出很明显的MVC,同时官网也是这么说的,内容清晰、简洁。

参考

http://www.chromium.org/developers/design-documents/find-bar

posted @ 2013-11-05 22:17  Sir Lee  阅读(436)  评论(0编辑  收藏  举报