我想了解Chrome擴展件的內部結構。如果你能提供更多關於這方面的細節,那將是非常好的。Chrome擴展內部件
我的理解如下:
- 擴展在自己的進程中運行。
- 擴展插件通過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函數的聲明和鉻/瀏覽器/擴展/ xyz_api.h & .cc的文件中定義。所以它看起來像是從js調用api時,我們直接進入瀏覽器進程。這種魔術在哪裏以及如何發生?
- 我還看到一些擴展綁定C++在鉻/渲染器/擴展/ abc_bindings.cc代碼和在鉻/渲染器/擴展/資源/ abc.js相應js代碼。我認爲我們有這個代碼在擴展渲染器和js代碼之間共享一些信息。這樣對嗎?你能爲我提供一個例子嗎?
對不起,提出這些基本問題。我非常感謝你的幫助。