#001
?
void Browser::ExecuteCommand(int id) {
#002
???
if (!IsCommandEnabled(id)) {
#003
?????
NOTREACHED() << id;
#004
?????
return;
#005
???
}
#006
???
// This might happen during QMU testing.
#007
???
if (!GetSelectedTabContents())
#008
?????
return;
#009
?
#010
???
switch (id) {
#011
?????
case IDC_BACK:
#012
???????
UserMetrics::RecordAction(L"Back", profile_);
#013
???????
GoBack();
#014
???????
break;
#015
???????
#016
?
??????
...
#017
???????
#018
???????
#019
????????
case IDC_OPENURL:
#020
???????
UserMetrics::RecordAction(L"LoadURL", profile_);
#021
???????
{
#022
?????????
LocationBarView* lbv = GetLocationBarView();
#023
?????????
if (lbv) {
#024
???????????
OpenURL(GURL(lbv->location_input()), lbv->disposition(),
#025
???????????????????
lbv->transition());
#026
?????????
} else {
#027
???????????
OpenURL(GURL(), CURRENT_TAB, PageTransition::TYPED);
#028
?????????
}
#029
???????
}
#030
???????
break;
#031
?
可以看到這段代碼,第
19
行就是處理打開網(wǎng)頁的命令處理,當(dāng)然在這個(gè)函數(shù)里不僅僅處理打開網(wǎng)頁的連接命令,還有很多其它的命令,目前先分析這個(gè)命令的代碼。
第
20
行里先記錄當(dāng)前執(zhí)行的動(dòng)作。
第
22
行里查找到當(dāng)前顯示
BAR
窗口。
如果找到
LocationBarView
窗口,就把當(dāng)前的輸入連接生成
GURL
對(duì)象,從窗口獲取顯示位置,傳送的類型。否則,就是使用空的連接,并打開當(dāng)前頁面。
下面再來分析函數(shù)
OpenURL
的實(shí)現(xiàn),它是調(diào)用
TabContentsDelegate
類里的
OpenURL
函數(shù):
#001
???
virtual void OpenURL(const GURL& url,
#002
????????????????????????
WindowOpenDisposition disposition,
#003
????????????????????????
PageTransition::Type transition) {
#004
?????
OpenURLFromTab(NULL, url, disposition, transition, std::string());
#005
???
}
在這個(gè)函數(shù)繼續(xù)調(diào)用
OpenURLFromTab
函數(shù)來實(shí)現(xiàn)打開網(wǎng)頁的功能,這個(gè)函數(shù)比較復(fù)雜,下一次再來分析它。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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