Моя рекомендация для погружения - посмотреть на источник для http://code.google.com/p/chromiumembedded/.
Это своего рода сжатая версия Chrome, и если вы посмотрите на файлы, которые он специально использует, либо включенные в его исходное дерево, либо файлы, включенные в него из репозитория Chromium в целом. Кодовая база Chromium - это огромное количество вещей, большинство из которых на самом деле отсутствует в браузере Есть тонна извлеченного кода из сторонних репозиториев, которые затем сводятся в процессе сборки, или реализация Chromium находится где-то еще в дереве, есть много побочных проектов, которые (хотя и интересны и являются потрясающим ресурсом для широкого круга вещи) помешает вам достичь своей цели - отточить реализацию браузера и то, как это сочетается.
CEF великолепен, потому что вы можете видеть кого-то, кто уже выполнил процесс объединения всего этого вместе, чтобы создать проект, специально предназначенный для просмотра в браузере и ничего больше. Вы можете легко увидеть, какие части в основном получены из webkit, вы можете увидеть, где кроссовер входит в реализации Google, и вы можете довольно легко увидеть, как V8 добавляется в смесь.
Я говорю «легко» в относительном выражении, потому что мы все еще говорим огромное количество кода в целом. CEF поместит вас в центр требований, но этот материал все еще тянет огромное количество различных вещей из остальной части дерева. Компиляция занимает около часа на действительно хорошем компьютере с 12 гигабайтами оперативной памяти и 8 ядрами, а сгенерированные файлы занимают примерно 6-10 гигабайт в зависимости.
По крайней мере, не будет никакого быстрого прыжка в мелкий конец, чтобы выбрать что-то здесь или там по частям. Браузеры являются невероятно сложными частями разработки обязательно, потому что они должны объединить такое огромное количество отдельных частей функциональности, а затем объединить их в общий контекст. Вы можете найти одну вещь, которую вы ищете, но вы обнаружите, что она является частью библиотеки классов, которая, вероятно, состоит из десятков или сотен файлов, которая, в свою очередь, использует еще сотню этих библиотек для выполнения каждой задачи. таким образом, чтобы действительно что-то убрать, вам придется потратить время на то, чтобы получить гораздо больше информации, чем любая другая информация.
Редактировать: о, также как ваш конкретный пример.
src является корнем http://src.chromium.org/viewvc/chrome/trunk/src
/ хром http://src.chromium.org/viewvc/chrome/trunk/src/chrome
Дерево "chrome" в основном содержит прямые реализации (хотя много чего там нет, большая часть даже, но это отправная точка). Это частично совпадает с Chromeos (Chromeos - это своего рода браузер Chromium, доведенный до безумного экстрима)
/ chrome / browser http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/
Заставляет вас приблизиться к тому месту, где вы хотите быть. Вы начинаете видеть конкретные ссылки на вещи, которые вы можете сопоставить с браузером, такие как вкладки и еще много чего (игнорируя гигантского слона самой реализации самого браузера, который занимает все пространство ума во всем этом)
/ chrome / browser / ui http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/
Приводит вас туда, где большая часть кода пользовательского интерфейса для браузера. Это может сбивать с толку, когда происходит пересечение или когда что-то переносится, например, в корневом каталоге src есть «пользовательский интерфейс», в котором есть какое-то пересечение.
И наконец http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/omnibox/
Который содержит на удивление небольшое количество кода. Но это то, что вы найдете много. Код здесь представляет собой реализацию ряда классов, созданных в других местах. Для графического компонента, не относящегося к веб-интерфейсу, вы обнаружите, что он в основном указывает на корневой «пользовательский интерфейс» и на нативные элементы виджетов, где находится основная часть кода обработки событий, если я правильно помню.