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/にマッピングしている。
FirefoxGUIを変更してメニューやボタンなどを追加する場合は、更にoverlayというエントリを定義する必要があるが、今回は書かない。
参考資料:Add-ons - Mozilla | MDNThe 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を完成させる。