Firefox ExtensionでC++プログラムを動かしてみるテスト 〜その4 Extentionの作成〜
Firefox ExtensionでC++プログラムを動かしてみるテスト 〜その3 ビルド編〜 - かーねる・う゛いえむにっきからの続き。
Firefoxのextentionディレクトリにtestkvs@dokukino.comというディレクトリを作成する。
$ mkdir ~/Library/Application Support/Firefox/Profiles/*/extensions/testkvs@dokukino.com
なお、これはMacOS Xの場合であり、OSによってディレクトリの位置は違う。
また、プロファイルディレクトリ名は環境によって異なる為、ここでは*と記述している。
Windowsの場合は
C:\Documents and Settings\UserName\Application Data\Mozilla\Firefox\Profiles\*\extensions\testkvs@dokukino.com
Linuxの場合は
~/.mozilla/firefox/*/extentions/testkvs@dokukino.com
になるはず。
$ cd ~/Library/Application Support/Firefox/Profiles/*/extensions/testkvs@dokukino.com $ mkdir -p components/ content/ platform/Darwin_x86-gcc3/components
それぞれのディレクトリの意味だが、components/はこのExtentionで使用するコンポーネントを入れる場所、content/は後で説明するchrome.manifestでURLへマッピングされるXULファイルやJavaScriptファイルの置き場になる模様。
他にplugins/というディレクトリも作成でき、これは恐らくNSAPIプラグインの置き場になるのかな?
参考資料:Add-ons - Mozilla | MDN
platform/[アーキテクチャ名]/ディレクトリはアーキテクチャ依存なファイルを置く。更にその中のディレクトリがそれぞれcomponents, pluginsなどのディレクトリへオーバレイされるという仕掛けのように見える。
アーキテクチャ名は{OS_TARGET}_{TARGET_XPCOM_ABI}というフォーマットになっており、ここではMacOS Xの為Darwin_x86-gcc3と記述しているが、Windows+VisualStudioの場合はWINNT_x86-msvc、Linux+gccの場合はLinux_x86-gcc3のように記述する。
参考資料:Structure of an installable bundle - Archive of obsolete content | MDN
最初に、前回作ったXPCOMモジュールを配置してしまおう。
$ cp ~/testkvs/libtestkvs.dylib ./platform/Darwin_x86-gcc3/components $ cp ~/testkvs/testIKVS.xpt ./components
次に、このextentionの情報を定義する二つのファイルを作る。それぞれtestkvs@dokukino.comディレクトリの直下に作成する。
chrome.manifest
content testkvs content/
chrome.manifestはchrome URL上にextention上のコンテンツをマッピングする為の定義を書く所のようだ。
ここでは、content/ディレクトリをchrome://testkvs/content/にマッピングしている。
FirefoxのGUIを変更してメニューやボタンなどを追加する場合は、更にoverlayというエントリを定義する必要があるが、今回は書かない。
参考資料:Add-ons - Mozilla | MDN、The Chrome URL - Mozilla | MDN
install.rdf
<?xml version="1.0"?> <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#"> <Description about="urn:mozilla:install-manifest"> <em:id>testkvs@dokukino.com</em:id> <em:type>2</em:type> <em:name>TestKVS</em:name> <em:version>0.1</em:version> <em:description>TestKVS Extention</em:description> <em:creator>syuu1228</em:creator> <em:homepageURL>http://d.hatena.ne.jp/syuu1228</em:homepageURL> <em:localized> <Description> <em:locale>ja</em:locale> <em:name>TestKVS</em:name> <em:description></em:description> <em:creator>syuu1228</em:creator> </Description> </em:localized> <em:targetApplication> <Description> <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> <em:minVersion>3.5</em:minVersion> <em:maxVersion>3.5.*</em:maxVersion> </Description> </em:targetApplication> <em:targetPlatform>Darwin_x86-gcc3</em:targetPlatform> </Description> </RDF>
こちらは、extentionのインストール情報らしい。
説明やパッケージ名、UUID、対応バージョン、ターゲットプラットフォームなどを定義する。
間違えると”現在のプラットフォームに対応してないextention”という扱いになったりするのでちょっと注意。
参考資料:Add-ons - Mozilla | MDN
この状態でFirefoxを起動しツールメニューからアドオンを選択すると、うまくいっていれば以下のようにTestKVSという項目が増えているはずである:
次回は、いよいよXULを実装してこのExtentionを完成させる。