Более подробную информацию об архитектуре можно найти здесь: http://www.chromium.org/developers/design-documents/find-bar
Я постараюсь объяснить более подробный ответ, который поможет вам перейти к источнику Chromium в следующий раз, когда вам понадобится что-то еще.
Когда пользователь инициирует поиск в Chromium, мы в основном регистрируем уведомление для наблюдателя о результатах.Каждый вызов поиска является асинхронным, и результаты поиска отправляются в виде уведомляющего сообщения средством визуализации.Это обрабатывается в FindBarController :: Observe
Первое, что происходит, когда вы нажимаете следующий / предыдущий / ввод, FindBarView :: ButtonPressed сообщает текущую вкладкуСодержимое для начала поиска TabContents :: StartFinding .Вы заметите, что в этом фрагменте кода он отправляет асинхронный запрос в IPC.Вы можете посмотреть, как мы отправляем его здесь: RendererViewHost :: StartFinding
Поскольку Chromium является многопроцессной архитектурой , мы отправляем сообщения через обработчик сообщений IPC.Вы можете просмотреть ссылку выше, чтобы увидеть, как отправляются сообщения.Узлы рендеринга отправляют сообщение в представление рендера, RenderView :: OnFind .С этого момента вы знаете, что логика поиска явно в исходном коде WebKit, а не в Chromium. WebFrameImpl :: find
Теперь в ленте WebKit логика, в которой он находит строку, находится в Editor :: findString и, если вы заметили, что такое алгоритм, в основномобход DOM через заданный диапазон с использованием WebKit / WebCore / edit / TextIterator.h Комментарии в WebKit не так хороши по сравнению с Chromium, но качество кода довольно высокое, поэтому у вас не возникнет проблемчтение 3000+ loc.
Причина, по которой я говорю вам все это, в ваших интересах, поэтому, если вы хотите узнать больше о Chromium / WebKit, вы знаете, как просматривать исходный код :)рекомендуем http://dev.chromium.org/developers