2012-02-22 87 views
0

我想了解Chrome擴展件的內部結構。如果你能提供更多關於這方面的細節,那將是非常好的。Chrome擴展內部件

我的理解如下:

  1. 擴展在自己的進程中運行。
  2. 擴展插件通過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時,我們直接進入瀏覽器進程。這種魔術在哪裏以及如何發生?

  1. 我還看到一些擴展綁定C++在鉻/渲染器/擴展/ abc_bindings.cc代碼和在鉻/渲染器/擴展/資源/ abc.js相應js代碼。我認爲我們有這個代碼在擴展渲染器和js代碼之間共享一些信息。這樣對嗎?你能爲我提供一個例子嗎?

對不起,提出這些基本問題。我非常感謝你的幫助。

回答

0

關於您如何製作綁定的問題。您可以在chrome/common/extensions/api/extension_api.json中定義您的擴展API,這是V8如何設置C++ JavaScript綁定。這就是如果你想打電話從內容腳本特權的API,你需要的命名空間添加到chrome/renderer/resources/extensions/renderer_extension_bindings.js

有關的推廣體系鉻設計的更多信息,所有的魔法發生:)

,有很好的文檔解釋整個過程模型和交互: http://www.chromium.org/developers/design-documents/extensions