Я пытаюсь понять внутренности Chrome Extension.Было бы здорово, если бы вы могли предоставить более подробную информацию по этому вопросу.
Я понимаю следующее:
- Расширения выполняются в своем собственном процессе.
- Расширения взаимодействуют сПроцесс браузера через IPC.
Мой вопрос: 1. Всякий раз, когда мы вызываем API расширения, например chrome.module.function () из пользовательского сценария расширения, я ожидаю, что функция перейдет в процесс рендерера.сначала, а затем отправьте IPC, такой как ExtensionHostMsg_ABC, процессу браузера, чтобы выполнить требуемую операцию.
Extension Process Browser Process
ExtensionHostMsg_Req
chrome.module.function() ----------------> Handle the msg
ExtensionMsg_Response
Send the result back to js <-----------------
Но, к моему удивлению, я вижу, что все функции API расширений объявлены и определены в файлах chrome / browser / extensions / xyz_api.h & .cc.Таким образом, похоже, что когда API вызывается из js, мы переходим непосредственно к процессу браузера.Где и как происходит это волшебство?
- Я также вижу некоторые привязки расширений кода c ++ в chrome / renderer / extensions / abc_bindings.cc и соответствующий код js в chrome / renderer / extensions / resources / abc.js.Я думаю, что у нас есть этот код для обмена некоторой информацией между рендерером расширений и кодом js.Это правильно?Можете ли вы дать мне пример сценария для этого?
Извините, что задаю эти основные вопросы.Я действительно ценю твою помощь.