Embedding Gecko

第 2 章: Gecko の組み込み

組み込むにはどのファイルが必要ですか?

今のところ Mozilla ブラウザソースツリー全体をダウンロードしてビルドしなくてはなりません。それから組み込むアプリケーションで必要とするバイナリファイルを選択してください。ナイトリーの組み込みビルドはファイルマニフェストによって自動的に生成されますのでそこから探し始めるといいでしょう。

組み込みビルドはどのように作るのですか?

まず Mozilla をビルド し、それから以下のコマンドを実行します。

cd mozilla/embedding/config
make

注: objdir を使う場合は、代わりに mozilla/<objdir>/embedding/config に移動 (cd) し、そこで make します。

これはサンプルマニフェストによって指定されたファイルと chrome を含む mozilla/dist/Embed ディレクトリを作成します。テストアプリケーション、Unix では TestGtkEmbed、Win32 の場合はMFCEmbed を走らせれば、このサンプルビルドをテストすることができます。Unix の TestGtkEmbed を走らせるには、以下のコマンドを実行します。

cd mozilla/dist/Embed
./run-mozilla.sh ./TestGtkEmbed

組み込みディストリビューションはどのように作られるのですか?

組み込みビルドのプロセスを見るには embedding/config/ を覗いてください。この basebrowser-win (または basebrowser-unix など) ファイルが、どのファイルをコピーする必要があるのかを決定しています。また、embed-jar.mn ファイルがどの chrome を必要とするのかを指定しています。

注意してほしいのですが、このサンプルには「典型的な」ファイルのサブセットしか含まれていません。製品で必要とする機能によっては、basebrowser -foo (この foo には win, unix またはそのほか適切なものが入ります) にファイルを追加したり、そこから削除したりしてください。あるいは、basebrowser-foo に追加して読み込まれる独自の client-foo ファイルを書いて、これらのファイルを補うこともできます。

例えば、FTP を必要としないのであれば「necko2」ライブラリを取り除くことができます。Mozilla ブラウザのグローバル履歴機能を利用するのであれば「appcomps」と「mork」ライブラリを付け加える必要があります。

組み込み配布の readme ファイル にさらに詳しい情報があります。

TODO: 機能 <-> ファイルのより完全な図を提供すること

なぜアプリケーションと一緒に XPT ファイルも配布する必要があるのですか?

XPT ファイルとは XPCOM タイプのライブラリであり、クロススレッド整理ルーチンによって使用されるインターフェースのバイナリ定義とオブジェクトを呼び出すための JavaScript を含んでいます。言い換えると、Gecko の正しい動作を保障するために、DLL と同じくらい必要不可欠なものです。

XPT ファイルは、xpt_link tool を使用することによって互いに結びつけることができ、これによってクラッターを減らし、起動時のパフォーマンスを改善することができます。これを目的とし た特別の perl スクリプトがあり、こちら で参照できます。

Gecko のインターフェースの変更についていくにはどうすればよいですか?

Gecko の変更に影響を受けたくないのであれば、idl ディスクリプションで明確に FROZEN とマークされているインターフェースと API のみを使用してください。次の問い合わせで大抵の Frozen (凍結された) インターフェースが見つかるはずです: Frozen Interface and APIs。インターフェースは常にレビューと固定がなされていて、組み込み開発者の望むほとんどをカバーしています。

Unfrozen (凍結されていない) インターフェースを使用することもできます (これはオープンソースですからあなたを止めることはできません!)。さらに言えばこのコードの中心部分にさえ到達することができますが、その場合は自分の責任において行ってください。Mozilla の今後のリリースではこれらのインターフェースが変更されるかもしれず、その結果あなたのソースとバイナリが壊れるかもしれません。

さらに詳しい情報は Embedding API Reference を参照してください。

それは将来の GRE / Gecko / Mozilla のすべてのバージョンで私がコンパイルした製品が動くという意味ですか?

凍結されたインターフェースを使用している限り、その答えは「ほとんどのものは動く」です。残念ながら、vtable レイアウトはコンパイラによって異なることがあります。これは主に gcc のような Linux のコンパイラに影響を及ぼします。Linux のコンパイラは過去 2、3 年のうちに 1 回以上その vtable レイアウトを変更しました。バイナリ互換性 にあるドキュメントを参照してください。

サポートされているのはどのプラットフォームですか?

端的にいえば、Mozilla が動くのであれば Gecko も動きますが、組み込みに関しては次の 3 つの主要なプラットフォームに集中しています。

  • Windows (95 は?ですが、98 以降は間違いなく動きます)
  • Linux (おそらく X-Window ベースの他のほとんどの Unix とその亜種でも動きます)
  • Macintosh OS X。MacOS 8.6 と 9 のサポートは Mozilla プロジェクトの移植部門にとっては価値のないものになってしまったので積極的な作業は行われなくなりました。

組み込みビルドは HTTPS のような安全なプロトコルをサポートしていますか?

はい。組み込みには PSM がサポートされています。

私のアプリケーションは Gecko とどのようにやり取りするのですか?

組み込み API は、組み込まれたアプリケーションを制御する一連のインターフェースと、組み込まれたブラウザから非同期信号を受け取るためにその API を持つアプリケーションが必ず実装する別の一連のインターフェースを提供します。

TODO:jud の画像を挿入する?

... なしで組み込むことはできますか?

(さらによくある質問のいくつか)

  • FTP サポート? はい。
  • HTTPS サポート? はい。
  • Network サポート? いいえ、でもそのうち。
  • XUL サポート? いいえ、でもそのうち、はい。
  • JavaScript サポート? いいえ、でもそのうち。
  • CSS サポート? いいえ、今後もありません。
  • DOM サポート? いいえ、おそらく今後もないです。
  • XML サポート? いいえ、おそらく今後もないです。
  • 国際文字セット? はい。
  • Java サポート? はい。

Mozilla の HTML エディタは組み込めますか?

いくらかは。最新の知らせによれば、ネイティブのアプリケーションにエディタを組み込むことは可能です。コマンド処理 API を通じてコマンド処理やアップデートも可能です。しかしいくつか欠けている機能 (例えば、エディタタイプのコントロール、HTML の挿入と引き出し) があります。加えて、Mike Judge が長らく待たれていたパッチ (1.0 での変更を逃してしまい、大きく遅れていました) を当てるので、コマンド処理 API はまもなく変更されます。

資料が欠けています。これは大部分が API の変更が未定なためです。エディタの組み込み のページに詳しい情報がありますので参照してください。

Mozilla はどのウィジェットツールキットを使用しているのですか?

Mozilla は HTML フォーム用の独自のクロスプラットフォームウィジェットを作っていて、サードパーティーのクロスプラットフォームツールキットも、プラットフォームが提供する専用のウィジェットも使用していません。この独自のウィジェットは GFX という Mozilla の描画ツールキット抽象化層で書かれています。スタイルは CSS で整えられ、それぞれのプラットフォーム独自のウィジェットに見えるように、各プラットフォームごとに細かい修正が施されています。これによってすべての プラットフォームのすべての HTML ウィジェットで、完全な CSS と DOM のサポートを可能にし、CSS と DOM の各部分に対する各プラットフォームごとのサポートを不要にします。

各プラットフォーム独自ウィジェットのサポートを望むたくさんのリクエストがありますが、今のところこのクロスプラットフォーム以外の第二のウィジェットをサポートする予定はありません。

将来的には、ウィジェットは XBL で定義されるようになるでしょう。

組み込まれた Mozilla は Java をサポートしていますか?

OJI プラグイン API を通じて Java のサポートを提供しています。Sun 提供の Java プラグインは 7MB のディスクスペースを必要とします (Linux)。Java サポートを必要とするのであれば、basebrowser-win / basebrowser-unix などのファイルを編集し、OJI セクションをアンコメントするか、組み込みディストリビューションを作成後に手動でこれらのファイルをコピーしなくてはなりません。

他の方法で Mozilla を組み込めますか?

組み込み API を直接プログラミングするほかに、次の方法で Mozilla を組み込むことができます:

Document Tags and Contributors

Contributors to this page: Yoshino
最終更新者: Yoshino,