gpt4 book ai didi

google-chrome - 寻找解决 Chromium 源代码的方法

转载 作者:行者123 更新时间:2023-12-02 08:48:28 25 4
gpt4 key购买 nike

我刚刚检查了 chromium 的源代码,但我迫切需要学习如何绕过这个怪物。

我如何搜索实现我感兴趣的行为/功能的代码部分?

假设我想看看在地址栏中输入 URL 后会发生什么。我如何找到那段代码?

或者,我想看看在解析 HTML 时到达某个标记时会发生什么。

我面前有大量的源代码,但没有导航它们的技巧。我如何学习这项技能?

最佳答案

我建议深入了解一下 http://code.google.com/p/chromiumembedded/ 的源代码。 .

它是 Chrome 的压缩版本,如果你查看它具体使用的文件,要么包含在其源代码树中,要么包含来自 Chromium 存储库的文件。 Chromium 代码库包含大量内容,其中大部分实际上并不在浏览器中。有大量从第三方存储库中提取的代码,然后在构建过程中进行归结,或者 Chromium 的实现位于树中的其他位置,有很多副项目(虽然很有趣,并且是广泛的很棒的资源)东西)将阻止您实现专门研究浏览器实现及其组合方式的目标。

CEF 很棒,因为您可以看到有人已经完成了将所有这些内容整合在一起以构建一个非常专门针对浏览器 View 的项目的过程,而没有其他任何事情。您可以轻松地看到哪些部分主要源自 webkit,您可以看到与 Google 的实现交叉的地方,并且您可以很容易地看到 V8 是如何融入其中的。

我确实用相对术语来说“容易”,因为我们仍然在谈论大量的代码。 CEF 会将您置于需求的中心,但是这些东西仍然从树的其余部分中引入大量各种东西。在一台拥有 12 GB 内存和 8 个内核的非常好的计算机上编译它大约需要一个小时,生成的文件大约需要 6-10 GB,具体取决于情况。

至少,不会有任何形式的快速跳入浅水区,在这里或那里零碎地挑选一些东西。浏览器必然是极其复杂的工程,因为它们必须包含如此大量的单独功能,然后将它们组合到共享上下文中。您可能会找到您正在寻找的东西,但您会发现它是类库的一部分,该类库可能由数十或数百个文件组成,而这些文件又依赖于一百多个此类库来处理每项任务,所以要真正拿走一些东西,你必须花时间去吸收比任何给定信息更多的东西。

编辑:哦,也是你的具体例子。

src 是 root http://src.chromium.org/viewvc/chrome/trunk/src

/chrome http://src.chromium.org/viewvc/chrome/trunk/src/chrome

“chrome”树主要包含直接实现(虽然很多东西不在那里,甚至大部分,但这是起点)。这与 chromeos 重叠(chromeos 是一种达到疯狂极限的 chromium 浏览器)

/chrome/浏览器http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/

让你接近你想去的地方。您开始看到对可以与浏览器匹配的事物的具体引用,例如选项卡等(忽略实际浏览器实现本身的巨大大象,这占据了所有这些东西的大部分思维空间)

/chrome/browser/ui http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/

带您到浏览器的大部分 ui 代码所在的位置。当存在交叉或内容迁移时,可能会令人困惑,例如根 src 目录中有一个“ui”,它有一些交叉。

最后http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/omnibox/

其中的代码量惊人地少。但这就是你发现的很多东西。这里的代码是在其他地方构建的许多类的实现。对于非 webview gui 组件,您会发现它们主要指向根“ui”和 native 小部件,如果我没记错的话,这就是大部分实际事件处理代码所在的位置。

关于google-chrome - 寻找解决 Chromium 源代码的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7362024/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com