亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

谷歌瀏覽器的源碼分析(13)

系統 1811 0
?

上一次說到調用函數 OpenURL 來打開網絡連接,這僅是網絡瀏覽的開始,現在再來分析它怎么樣去下載網頁數據,然后再顯示出來。

#001 ? void AutocompleteEdit::OpenURL(const std::wstring& url,

#002 ???????????????????????????????? WindowOpenDisposition disposition,

#003 ???????????????????????????????? PageTransition::Type transition,

#004 ???????????????????????????????? const std::wstring& alternate_nav_url,

#005 ???????????????????????????????? size_t selected_line,

#006 ???????????????????????????????? const std::wstring& keyword) {

#007 ??? if (url.empty())

#008 ????? return;

#009 ?

#010 ??? ScopedFreeze freeze(this, GetTextObjectModel());

#011 ??? SendOpenNotification(selected_line, keyword);

#012 ?

#013 ??? if (disposition != NEW_BACKGROUND_TAB)

#014 ????? RevertAll(); ? // Revert the box to its unedited state

#015 ??? controller_->OnAutocompleteAccept(url, disposition, transition,

#016 ????????????????????????????????????? alternate_nav_url);

#017 ? }

?

在這個函數里第一個參數 url 是要打開的網絡連接;第二個參數 disposition 是顯示位置,比如新添加一個 TAB 顯示,還是在原來的 TAB 顯示;第三個參數 transition 是下載的類型,比如是重新加載,還是新的連接下載;第四個參數 alternate_nav_url 是候選的連接;第五個參數是選擇那一行提示菜單;第六個參數 keyword 是關鍵字。

?

7 行判斷打開的連接是否為空,如果為空就不用打開連接了。

10 行鎖定輸入框。

11 行通知選中的關鍵字。

13 行, 14 行關閉當前輸入提示,直接在當前窗口顯示,清除一些狀態和內容。

15 行調控制實例來打開輸入的連接。

?

上面的代碼在 AutocompleteEdit 類里處理完成了,然后就把打開網絡連接放到別的類里來執行,這樣可以提高代碼的復用性,降低了代碼復雜程度。那么這個 controller_ 是何方神圣呢?一看 AutocompleteEdit 類有 Controller 類的定義,肯定就是它了,但再仔細一看它,它只是一個接口類,所有函數都是純虛函數,真是百思不得其解時,突然想起,既然它是接口類,肯定就有其它類繼承它的,那么再通過搜索,一查看,果然找到一個繼承它的類 LocationBarView ,接著查看它的聲明,如下:

#001 ? /////////////////////////////////////////////////////////////////////////////

#002 ? //

#003 ? // LocationBarView class

#004 ? //

#005 ? // ?? The LocationBarView class is a View subclass that paints the background

#006 ? // ?? of the URL bar strip and contains its content.

#007 ? //

#008 ? /////////////////////////////////////////////////////////////////////////////

#009 ? class LocationBarView : public ChromeViews::View,

#010 ????????????????????????? public AutocompleteEdit::Controller {

#011 ?? public:

?

可見類 LocationBarView 是繼承 ChromeViews::View 類,并且繼承 AutocompleteEdit::Controller 類。說明它是一個窗口類,并且是控制類,那么就是說所有接口的功能都是在這個類里實現的,只需要分析這個類里的內容,就知道它是怎么樣打開連接的了,下一次再來分析它。

?

谷歌瀏覽器的源碼分析(13)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。。?/p>

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 99久久99久久精品免费看子 | 亚洲欧美日韩综合二区三区 | 天天色操| 福利视频自拍 | 大胆国模一区二区三区伊人 | 日本婷婷 | 免费的涩涩视频在线播放 | 国产成人啪一区二区 | 殴美一级视频 | 99久久国产综合色 | 日日摸日日碰日日狠狠 | 91探花在线 | 黄片毛片在线观看 | 狠狠色很很在鲁视频 | 色婷婷综合久久久久中文一区二区 | 国内精品久久久久久久999下 | 日韩久草 | 久视频免费精品6 | 日韩天天操 | 99热久久只有精品6国产32 | 日韩欧美中文 | 97影院午夜在线观看视频 | 亚洲免费在线播放 | 久久国产免费福利永久 | 一级做人免费观看c欧美网站 | 久久精品国1国二国三 | 欧美日韩国产精品综合 | 国产成人啪精品视频免费网 | 亚洲一区视频在线 | 性欧美高清久久久久久久 | 亚洲国产精品自产拍在线播放 | 日韩免费一级片 | 99热国产 | 91久久天天躁狠狠躁夜夜 | 免费 高清 日本1在线观看 | 亚洲最大视频网 | 97视频免费在线 | 欧美成人免费一区在线播放 | 欧美高清性粉嫩交 | 97精品一区二区三区在线不卡 | 在线视频亚洲一区 |