mazilla mozilla
はじめに
モジラとは
当ページの主旨
モジラの特徴
モジラ概観
モジュール
Webツール
モジラの技術
その他のリソース
モジラのビルド
ビルド環境の構築
ソースのチェックアウト
ビルド手順
ビルド後のイメージ
モジラを実行
エンベッディング
エンベッディングとは
エンベッディングの概念
PPBrowserの構造
PPBrowserの解析
エンベッディングの構造
marbrowの構造
marbrowの解析
フィジラ
フィジラとは
フィジラのビルド
フィジラのエンベッディング
FAQ
やつぎ氏との会話

エンベッディングの概念

エンベッディングってどうなってるの?


エンベッディングの構成要素

エンベッディングの世界では、種々のオブジェクトが連係して動きます。中でも一番重要なオブジェクトは、nsWebBrowserで、これがエンベッディングの中心になります。このnsWebBrowserは、複数のnsDocShellをツリー構造で抱えています。nsDocShellは、各フレーム毎に1つづつインスタンス化されます。

【エンベッディングの構成オブジェクト】

以下が、エンベッディングを構成する主要なオブジェクトです。

nsWebBrowser

エンベッディングの最重要オブジェクトです。エンベッディングアプリケーションは、このクラスのインスタンスを生成して使用します。

nsWebBrowserはXPCOMオブジェクトで、その機能は分野別に、各インターフェースに分割されています。

nsWebBrowserが装備するインターフェースには、

  • nsIWebBrowser
  • nsIWebNavigation
  • nsIWebProgress
  • nsIWebBrowserSetup
  • nsIDocShellTreeItem
  • nsIBaseWindow
  • nsIScrollable
  • nsITextScroll
  • nsIInterfaceRequestor
  • nsIWebBrowserPersist

があります。

またエンベッディングアプリケーションは、インスタンス生成した全てのnsWebBrowser毎に、その代理人となるWebBrowser Site Objectを生成する必要があります。このWebBrowser Site Objectは、XPCOMの幾つかのインターフェースを自ら実装して、nsWebBrowserからのコールバックを受けることにより、nsWebBrowserエンベッディングアプリケーションの橋渡しをします。

nsDocShell

1つのフレームに対応した、ドキュメント (HTML、XML) を管理するXPCOMオブジェクトです。ドキュメントのロードを管理し、またドキュメントのツリー構造を辿る機能を持ちます。

このnsDocShellがコアな処理を受け持つので、エンベッディングアプリケーションは、ほとんどの処理は、上位のnsWebBrowserを扱うことで可能になります。

nsDocShellが装備するインターフェースには、

  • nsIDocShell
  • nsIDocShellTreeItem
  • nsIDocShellTreeNode
  • nsIDocShellHistory
  • nsIWebNavigation
  • nsIBaseWindow
  • nsIScrollable
  • nsITextScroll
  • nsIContentViewerContainer
  • nsIInterfaceRequestor
  • nsIScriptGlobalObjectOwner
  • nsIRefreshURI
  • nsIWebProgressListener
  • nsSupportsWeakReference

があります。

WebBrowser Site Object

エンベッディングアプリケーションが実装すべき、XPCOMオブジェクトです。

エンベッディングアプリケーションは、自分が生成したnsWebBrowserに1対1で、このオブジェクトを生成しなければなりません。

nsWebBrowserと密接に関わり、それが装備したインターフェースをnsWebBrowserより種々のタイミングで呼び出されることにより、nsWebBrowserからアプリケーションへの窓口となります。

そのインターフェースには、実装が必須のものと、アプリケーションの機能に応じて任意のものとがあります。

WebBrowser Site Objectが実装するインターフェースの候補としては、

  • nsIBaseWindow
  • nsIWebBrowserChrome
  • nsIWebProgressListener
  • nsIStreamObserver
  • nsIURIContentListener
  • nsIDocumentLoaderObserver - 廃止
  • nsIDocShellTreeOwner
  • nsIInterfaceRequestor
  • nsIPrompt

などがあります。

このWebBrowser Site Objectが、PPBrowserやmarbrowがクロームクラスと呼んでいるものに当ります。

  • PPBrowser - CWebBrowserChromeクラス
  • marbrow - MChromeクラス

BrowserShell Object

これはエンベッディングに於いて必須のものではなく、XPCOMオブジェクトでもありません。エンベッディングアプリケーション側でブラウザビジュアルパーツを管理する為の、単なるC++オブジェクトです。

しかし、エンベッディングアプリケーション自体がオブジェクト指向で作成されるならば、必然的にインプリメントされるでしょう。

このオブジェクトが、nsWebBrowserWebBrowser Site Objectを生成し、管理します。

このBrowserShell Objectは、PPBrowserやmarbrowでは、以下のクラスに当ります。

  • PPBrowser - CBrowserShellクラス
  • marbrow - MBrowクラス


c_o_n_t_a_c_t
Copyright (C) 2000-2002 Symphony, Inc. All Rights Reserved.
English