欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

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

系統(tǒng) 2884 0
?

現(xiàn)在繼續(xù)分析瀏覽器去下載網(wǎng)頁的過程,上一次說到需要分析函數(shù) NavigateToPendingEntry ,在這個(gè)函數(shù)又是怎么去處理下載網(wǎng)頁的呢?那就需要分析它的源碼了,如下:

#001 ? void NavigationController::NavigateToPendingEntry(bool reload) {

#002 ??? TabContents* from_contents = active_contents_;

#003 ?

#004 ??? // For session history navigations only the pending_entry_index_ is set.

?

下面從歷史里找到入口選項(xiàng)。

#005 ??? if (!pending_entry_) {

#006 ????? DCHECK(pending_entry_index_ != -1);

#007 ????? pending_entry_ = entries_[pending_entry_index_].get();

#008 ??? }

#009 ?

?

復(fù)位當(dāng)前的 SSL 狀態(tài)。

#010 ??? // Reset the security states as any SSL error may have been resolved since we

#011 ??? // last visited that page.

#012 ??? pending_entry_->ssl() = NavigationEntry::SSLStatus();

#013 ?

?

設(shè)置內(nèi)容是否可以顯示。

#014 ??? if (from_contents && from_contents->type() != pending_entry_->tab_type())

#015 ????? from_contents->SetActive(false);

#016 ?

?

獲取當(dāng)前的父窗口的句柄。

#017 ??? HWND parent =

#018 ???? ??? from_contents ? GetParent(from_contents->GetContainerHWND()) : 0;

?

獲取當(dāng)前顯示的 TAB 內(nèi)容對象。

#019 ??? TabContents* contents =

#020 ??????? GetTabContentsCreateIfNecessary(parent, *pending_entry_);

#021 ?

#022 ??? contents->SetActive(true);

#023 ??? active_contents_ = contents;

#024 ?

?

修改委托對象。

#025 ??? if (from_contents && from_contents != contents) {

#026 ????? if (from_contents->delegate())

#027 ??????? from_contents->delegate()->ReplaceContents(from_contents, contents);

#028 ??? }

#029 ?

?

現(xiàn)在開始打開入口對象里指定的網(wǎng)站。

#030 ??? if (!contents->Navigate(*pending_entry_, reload))

#031 ????? DiscardPendingEntry();

#032 ? }

?

TabContents 類主要描述主顯示區(qū)的內(nèi)容,在第 30 行里就調(diào)用它的函數(shù) Navigate 去瀏覽網(wǎng)頁的內(nèi)容。 pending_entry_ 成員變量是 NavigationEntry 類的對象,它主要保存所有創(chuàng)建瀏覽時(shí)需要的信息,比如網(wǎng)絡(luò)連接地址。

?

當(dāng)我再跟蹤 contents->Navigate 這行代碼時(shí),它不是運(yùn)行 TabContents 類的 Navigate ,這比較奇怪,但回過頭來再看一下它的聲明如下:

virtual bool Navigate(const NavigationEntry& entry, bool reload);

可見,它前面加了 virtual 關(guān)鍵字,說明它是虛函數(shù),也就是說設(shè)計(jì)時(shí),就讓它是多態(tài)的出現(xiàn),因此在什么情況下運(yùn)行什么樣的函數(shù)內(nèi)容是不定的,對于這些樣的函數(shù),就需要小心一點(diǎn)了,只有實(shí)際運(yùn)行的類才知道它是什么內(nèi)容。由于我是輸入 URL 關(guān)鍵字,所以它調(diào)用的函數(shù)是類 WebContents 里的 Navigate 函數(shù)。下一次再來分析類 WebContents 里的 Navigate 函數(shù)。

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


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 四虎国产成人免费观看 | 日日干日日插 | 欧美精品久久久 | 草草草在线观看 | 啪啪小视频网站 | 精品久久久久久久久久 | 久久99精品久久久97夜夜嗨 | 四虎影视最新网站在线播放 | 草草草影院 | 波多野结衣在线观看一区 | 美日韩免费视频 | 成人免费网站在线观看 | 亚洲国产欧美在线 | 午夜不卡一区二区 | 爱爱综合网 | 亚洲精品一区二区三区精华液 | 亚洲AV在线无码播放毛片浪潮 | 日本黄a | 欧美一区二区黄色片 | 在线视频国产一区 | 欧美午夜艳片欧美精品 | 91在线 在线播放 | 国产乱妇无码大黄AA片 | 一级片在线观看 | 69视频成人 | 超碰一区二区三区 | 国产gav成人免费播放视频 | 成人av观看 | 婷婷久久五月天 | 国产精品一区二区三区免费 | 人人看人人看 | 欧美zozozo人禽交免费观看 | 久草视频在线资源 | 欧美一级毛片欧美大尺度一级毛片 | 涩久久 | 免费国产一区二区在免费观看 | 天天爽天天碰狠狠添 | 久久免费看 | 国产一区| 成人免费播放视频777777 | 国产亚洲欧美日本一二三本道 |