Moja rekomendacja dla rodzaju nurkowania jest, aby spojrzeć na źródło http://code.google.com/p/chromiumembedded/.
To rodzaj skondensowanej wersji Chrome i jeśli spojrzysz na pliki, z których konkretnie korzysta, zarówno te zawarte w drzewie źródłowym, jak i pliki w nim zawarte z repozytorium Chromium w ogóle. Baza kodu Chromium to ogromna ilość rzeczy, z których większość nie jest faktycznie w przeglądarce. Jest mnóstwo wciągniętego kodu z repozytoriów firm trzecich, które są następnie sprowadzane w procesie kompilacji lub implementacja Chromium znajduje się gdzieś indziej w drzewie, jest wiele projektów pobocznych, które (choć ciekawe i niesamowite zasoby dla szerokiej gamy rzeczy) uniemożliwi osiągnięcie celu, jakim jest dopracowanie implementacji przeglądarki i jej zgodności.
CEF jest świetny, ponieważ można zobaczyć kogoś, kto już wykonał proces łączenia wszystkich tych elementów, aby zbudować projekt o bardzo konkretnym zasięgu w widoku przeglądarki i nic więcej. Możesz zobaczyć, które części pochodzą przede wszystkim z webkita, możesz zobaczyć, skąd bierze się crossover z implementacjami Google, i dość łatwo widać, jak V8 jest wrzucony do miksu.
Mówię "łatwo" w kategoriach względnych, ponieważ wciąż mówimy o ogromnej ilości ogólnego kodu. CEF postawi Cię w centrum wymagań, ale te rzeczy wciąż przyciągają ogromną ilość różnych rzeczy z reszty drzewa. Kompilacja zajmuje mi około godziny na naprawdę dobrym komputerze z 12 gigami ram i 8 rdzeniami, a wygenerowane pliki zajmują około 6-10 gigabajtów w zależności.
Co najmniej, nie będzie żadnego szybkiego skoku w płytkim końcu, aby wybrać coś tu lub tam kawałek po kawałku. Przeglądarki są niewiarygodnie skomplikowanymi elementami inżynierii, ponieważ muszą podważyć tak dużą liczbę pojedynczych elementów funkcjonalności, a następnie połączyć je w wspólny kontekst.Możesz znaleźć jedną rzecz, której szukasz, ale okaże się, że jest to część biblioteki klas, która prawdopodobnie składa się z dziesiątek lub setek plików, które z kolei opierają się na setkach takich bibliotek, aby obsłużyć każde zadanie , żeby naprawdę coś zabrać, będziesz musiał poświęcić czas na więcej niż jakąkolwiek informację.
Edycja: oh również jako konkretny przykład.
src root http://src.chromium.org/viewvc/chrome/trunk/src
/chrom http://src.chromium.org/viewvc/chrome/trunk/src/chrome
„Chrome” drzewo w dużej mierze zawiera bezpośrednie implementacje (dużo rzeczy nie jest tam jednak większość z nich nawet, ale to początkowa punkt). To musi pokrywać się z ChromeOS (ChromeOS jest rodzajem przeglądarce chromu potrzebny do szalonej skrajności)
/chrom/przeglądarki http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/
dostaje do blisko miejsca, gdzie chcesz być. Zaczynasz widzieć konkretne odniesienia do rzeczy, które możesz dopasować do przeglądarki, takich jak karty i inne (ignorowanie gigantycznego słonia samej implementacji przeglądarki, która zajmuje większość przestrzeni umysłu we wszystkich tych rzeczach)
/chrome/browser/ui http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/
Przenosi do miejsca, w którym znajduje się większość kodu ui dla przeglądarki. Może to być mylące, gdy dochodzi do skrzyżowania lub kiedy migracja się powiedzie, tak jak w katalogu głównym src znajduje się "ui", który ma trochę zwrotnicy.
I wreszcie http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/omnibox/
który ma zaskakująco niewielką ilość kodu w nim. Ale to właśnie dużo znajdziesz. Kod tutaj jest implementacją wielu klas, które są zbudowane gdzie indziej. W przypadku składnika GUI, który nie jest wyświetlany przez przeglądarkę internetową, najczęściej są one wyświetlane z powrotem do głównego elementu "ui" i rodzimych elementów widgetów, czyli tam, gdzie znaczna część aktualnego kodu obsługi zdarzeń jest, o ile dobrze pamiętam.
Jako punkt wyjścia, przeczytaj http://www.chromium.org/developers/how-tos/getting-around-the-chrome-source-code - który powinien dać ci lepszy ogląd tego, co widzisz w tym monstrualnym katalogu src /. (Naprawdę nie sądziłem, że to będzie dobry _answer_, ponieważ jest to tylko wskazówka ...) – maligree
Przygotuj także [Jak znaleźć drogę do nowego kodu] (http://stackoverflow.com/ pytania/70124/how-do-you-find-your-way-around-a-new-codebase) – Justin
grep jest twoim przyjacielem. lub znajdź główną i śledź. Poruszanie się po dużych bazach kodu nie jest banalne. – Chris