2012-02-22 28 views
0

Chrome拡張機能の内部構造を理解しようとしています。これについてもっと詳細を述べることができれば嬉しいです。独自のプロセスで実行Chrome拡張機能

  1. 拡張機能を次のように

    私の理解です。

  2. 拡張機能は、IPCを介してブラウザプロセスとやりとりします。

私の質問: 1.我々は(例えばchrome.module.functionとして拡張APIを呼び出すたび)の拡張、ユーザスクリプトから、私は関数が最初のレンダリングプロセスに移動して、このような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

バインディングの作成方法に関するご質問については、拡張APIはchrome/common/extensions/api/extension_api.jsonに定義されています。これはV8のC++ JavaScriptバインディングの設定方法です。すべての魔法が起きるところである:)

あなたはクロムで拡張システムの設計の詳細についてはchrome/renderer/resources/extensions/renderer_extension_bindings.js

に名前空間を追加する必要があり、コンテンツのスクリプトから特権APIを呼び出したい場合は、プロセスモデルとインタラクション全体を説明する優れたドキュメントがあります: http://www.chromium.org/developers/design-documents/extensions

関連する問題