moz-iconスキームによるLinuxネイティブなアイコンの呼び出し方

Linux版Firefox3では、OSと統合された外観を持つ為に、GTK2テーマで指定されたアイコンを「moz-icon」スキームで表示させることが出来るようになった。
moz-iconスキームについて検索で調べたところめぼしい情報を得ることが出来ず、やむなくソースコードgrep検索してみたところ、mozilla/modules/libpr0n/decoders/icon/nsIIconURI.idlファイルに解説が書かれているのを発見した。
Web上では、Mozilla Cross-Referenceで閲覧できる。
以下、解説部分のみ引用。

What *is* a moz-icon URI you ask?  Well, it has the following syntax:

moz-icon://[ |  | ]? ['?'[]]

 is a legal file: URI spec.  You only need to specify a file: URI inside the icon
if the file you want the icon for actually exists.

 is any filename with an extension, e.g. "dummy.html".
If the file you want an icon for isn't known to exist, you can omit the file URI, and just
place a dummy file name with the extension or content type you want: moz-icon://dummy.html.

 is of the format:   stock/

 is a valid icon name, such as 'ok', 'cancel', 'yes', 'no'.
XXXcaa Should these considered platform dependent or can we share and document them?

Legal parameter value pairs are listed below:

  Parameter:   size
  Values:      [ | button | toolbar | toolbarsmall | menu | dialog]
  Description: If integer, this is the desired size in square pixels of the icon
               Else, use the OS default for the specified keyword context.

  Parameter:   state
  Values:      [normal | disabled]
  Description: The state of the icon.

  Parameter:   contentType
  Values:      
  Description: The mime type we want an icon for. This is ignored by stock images.


以下に示すURIの例は、実際にロケーションバーに打ち込んで試すことが出来る。


GTKのstockアイコンを呼び出すには、例えば以下のURIを打ち込む。

moz-icon://stock/gtk-about

gtk-about」の部分に指定できるアイコン名の一覧はGNOME ドキュメントライブラリから閲覧できる。


拡張子に対応したアイコンを呼び出すには、例えば.zipの場合

moz-icon://.zip

と打ち込む。「hoge.zip」などでも良い。Windowsとは違ってLinux版Firefox2では、この方法でアイコンを呼び出すことが出来なかった。


MIME Typeに対応するアイコンを表示するには、contentTypeパラメータを使って、

moz-icon://goat?contentType=text/html

と打ち込む。ここで「goat」の部分はダミーで、「hoge」や「fuga」でも良い。*1しかし、ピリオドを含んだ「hoge.txt」などでは、拡張子「.txt」に対応したアイコンが優先され、contentTypeパラメータは無視される。


パラメータを含んだ例として、上の階層に上がるアイコンを16pxの大きさ、disable状態で表示するには

moz-icon://stock/gtk-go-up?size=16&state=disable

と入力することになる。
Firefoxのバージョン:3.0beta5
関連記事:moz-iconスキームのsizeパラメータに文字列を指定する

*1:ソースコード内でしばしばgoatが使われているのは、やはり「scape goat」が元なのか?