GRE にハードコードされているchrome

| コメント(0) | トラックバック(0)

GRE に含まれている DLL に埋め込まれている文字列からハードコードされている chrome を列挙した。 GRE のみでブラウザ組み込みをするといろいろなところで不具合がでるのだが、それを chrome に限って探求する。

Mozilla Suite 1.8β1 の GRE を対象にして検索を行った。 ハードコードされている chrome と DLL の対応は次のとおり。

GRE ディレクトリ直下
DLLchrome
gkgfx.dll chrome://global/content/printPageSetup.xul
mozctl.dll chrome://necko/locale/necko.properties
components ディレクトリ直下
DLLchrome
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 に挑戦してみよう。

トラックバック(0)

トラックバックURL: http://nesitive.net/mt/tbping/13

コメントする

このブログ記事について

このページは、がMarch 29, 2005 12:32 AMに書いたブログ記事です。

ひとつ前のブログ記事は「仕様が固定されたインターフェース」です。

次のブログ記事は「アプリケーション components フォルダのテスト」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。