我试图在Firefox源代码中找到一个区域,在用户点击回车键后,在url栏中输入的单词会被识别为输入到默认搜索引擎。例如,如果我键入firefox
,它会弹出搜索结果。我找不到这种逻辑发生在哪里。
我这样跟踪,从searchbar对enter的调用开始,然后更深入地跟踪url和沿途传递的任何其他uri。
- gURLBar.handleCommand
- openUILinkIn
- openLinkIn
- gBrowser.loadURIWithFlags
因此,在loadURIWithFlags
之前修改函数openLinkIn来做一个console.log,我们看到url到目前为止仍然是搜索词。
- gBrowser.CurrentBrowser.loadURIWithFlags
- _加载带有标志的URI
- gBrowser.webNavigation.loadURIWithOptions->
[[native code]
因此,我通过注入这些函数进行跟踪,我发现在它调用本地代码之前,它正在传递一个仍然是搜索词的uri,这令人难以置信,我当时认为(在传递到本地代码之前)它已经找到了默认的搜索引擎提交url,然后传递给它。我错过什么了吗?
不,我认为你的分析是正确的——浏览器实际上导航到了带有搜索关键字的URL。然后内容进程再次发送Browser:URIFixup消息,并触发gKeywordURIFixup
函数。这就是关键字被解析的地方。是的,在Mozilla开始研究进程分离之前,事情曾经简单得多。