GRE に含まれている DLL に埋め込まれている文字列からハードコードされている chrome を列挙した。 GRE のみでブラウザ組み込みをするといろいろなところで不具合がでるのだが、それを chrome に限って探求する。
Mozilla Suite 1.8β1 の GRE を対象にして検索を行った。 ハードコードされている chrome と DLL の対応は次のとおり。
DLL | chrome |
---|---|
gkgfx.dll |
chrome://global/content/printPageSetup.xul |
mozctl.dll |
chrome://necko/locale/necko.properties |
DLL | chrome |
---|---|
appshell.dll |
chrome://global/locale/about.xhtml |
chrome://navigator/content/navigator.xul | |
caps.dll |
chrome://communicator/locale/security/caps.properties |
cookie.dll |
chrome://cookie/content/cookieAcceptDialog.xul |
docshell.dll |
chrome://global/content/netError.xhtml |
chrome://global/locale/appstrings.properties | |
chrome://global/locale/nsWebBrowserPersist.properties | |
embedcomponents.dll |
chrome://global/content/commonDialog.xul |
chrome://global/content/console.xul | |
chrome://global/locale/commonDialogs.properties | |
chrome://global/locale/nsWebBrowserPersist.properties | |
chrome://global/content/printPageSetup.xul | |
chrome://global/content/printPreviewProgress.xul | |
chrome://global/content/printProgress.xul | |
chrome://global/locale/printdialog.properties | |
gkgfxwin.dll |
chrome://global/locale/printing.properties |
gklayout.dll |
chrome://global/locale/css.properties |
chrome://global/locale/xbl.properties | |
chrome://global/locale/xul.properties | |
chrome://global/locale/layout_error.properties | |
chrome://communicator/locale/layout/HtmlForm.properties | |
chrome://global/locale/printing.properties | |
chrome://communicator/locale/dom/dom.properties | |
chrome://global/locale/commonDialogs.properties | |
chrome://mozapps/locale/plugins/plugins.properties | |
chrome://global/skin/scrollbars.css | |
chrome://global/locale/css.properties | |
chrome://global/locale/brand.properties | |
chrome://global-platform/locale/platformKeys.properties | |
chrome://global/locale/keys.properties | |
chrome://communicator/locale/layout/MediaDocument.properties | |
chrome://communicator/content/xml/XMLPrettyPrint.xsl | |
chrome://global/content/commonDialog.xul | |
gkparser.dll |
chrome://communicator/locale/layout/xmlparser.properties |
gkwidget.dll |
chrome://navigator/locale/pageInfo.properties |
chrome://global/locale/filepicker.properties | |
necko.dll |
chrome://necko/locale/necko.properties |
chrome://global/content/aboutAbout.html | |
chrome://global/content/MPL-1.1.html | |
chrome://global/content/buildconfig.html | |
chrome://global/content/logo.gif | |
chrome://global/content/config.xul | |
chrome://global/content/plugins.html | |
chrome://global/content/mozilla.xhtml | |
necko2.dll |
chrome://necko/locale/necko.properties |
oji.dll |
chrome://global-region/locale/region.properties |
pipboot.dll |
chrome://pipnss/locale/security.properties |
pipnss.dll |
chrome://pipnss/locale/pipnss.properties |
chrome://pipnss/locale/pipnss.properties | |
profile.dll |
chrome://communicator/locale/profile/migration.properties |
chrome://global/locale/brand.properties | |
chrome://communicator/content/profile/profileSelection.xul | |
chrome://communicator/content/profile/createProfileWizard.xul | |
uconv.dll |
chrome://global/locale/charsetTitles.properties |
wallet.dll |
chrome://communicator/locale/wallet/wallet.properties |
xpinstall.dll |
chrome://global/locale/xpinstall/xpinstall.properties |
chrome://global/locale/commonDialogs.properties |
まず GRE ディレクトリ直下の2つだが、 chrome://global/content/printPageSetup.xul に関しては gfx/src/nsPrintOptionsImpl.cpp の nsPrintOptions::ShowPrintSetupDialog メソッドで呼び出されるが、このメソッドは GRE の中のいずれのファイルからも呼び出されることはない。
組み込みプログラムから意図的に呼び出さない限りは不要だ。
mozctl.dll
は Mozilla ActiveX コントロールで使われるファイルなので、 ActiveX ブラウザを使わない限りは特に気にする必要はない。
ただし、ハードコードされている chrome://necko/locale/necko.properties 自体は他の DLL でも使われている。
続いて components ディレクトリ以下のファイルについてもチェックしてみる。 *.properties ファイルの多くはエラーメッセージなどの埋め込みに使われる。 たとえば necko.properties がない場合、 nsIWebProgressListener.onStatusChange による進行状況メッセージが使えなくなる。 about.xhtml、aboutAbout.xul、MPL-1.1.html、buildconfig.html、logo.gif、config.xul、plugins.html、mozilla.xhtml は about スキーマで表示されるファイルになる。 Mozilla のものを流用する場合はこれらに使われる chrome も考慮する必要がある。 scrollbars.css はハードコードされている唯一の skin chrome である。 GRE のみでは組み込みブラウザでスクロールバーが表示されないのに関係があるかもしれない。
*.xul で重要だと思われるのは commonDialog.xul だろう。 これは nsIPrompt から呼び出されるためにことあるごとに必要になる。 nsIPrompt や nsIAuthPrompt を自前で実装する場合には必要ないものだ (ただし、 MathML や SVG の実装では nsIPromptService を通さずに直に呼び出している模様)。 その手のダイアログとしては他に cookieAcceptDialog.xul、print*.xul などがある。 console.xul は JavaScript コンソールのための、 profile*.xul はプロファイル関連のためのダイアログなので、必要ならば各自導入する必要がある。 navigator.xul は appshell で起動する際のデフォルト設定なのだが、 XUL アプリを作る場合でもない限り不要だろう。 *.xul ファイルを Mozilla のソースコードから導入する際の注意点として、*.js、*.properties、*.dtd などの関連ファイルも同時に用意する必要がある。 ほとんどは brand.dtd と 同名の js、properties、dtd ファイルをがあれば問題ないだろう。
その他のファイルとして XMLPrettyPrint.xsl があるが、これはスタイルシートが関連づけられていない XML を表示する際に使われるものだと思われる。
以上が GRE 内の DLL でハードコードされた chrome である。 以前 chrome を削りに削ったことがあるが、 locale 関連以外はほぼ似たような構成になった。 つまり、これらのファイルから最小の chrome セットを作ることができるのではないだろうか。 機会があったらもう一度最小 chrome に挑戦してみよう。
コメントする